核心要点
先澄清约束(QPS、模型大小、延迟 SLA、预算)再分层设计,不要一上来画框图
分层:数据/特征平台 → 分布式训练调度 → 模型注册与服务 → 监控,全程贯穿版本化
扩展靠队列调度 + GPU 池化 + 推理多副本 HPA;训练用抢占降本,推理用稳定实例保 SLA
特征一致性、模型注册与漂移监控是易漏点——少了它们系统会 train/serve skew 或静默退化
简要回答
系统设计框架(面试按层作答):
1. 数据层
- 数据湖/仓(S3 + Delta/Iceberg)+ DVC 版本化
- 流批一体摄入(Kafka + Spark/Flink)
- 特征平台:离线训练特征与在线 serving 特征一致
2. 训练层
3. 模型层
- 模型注册表(版本、阶段:Staging/Production)
- 自动化评估门禁(离线 A/B、shadow traffic)
4. 服务层
- 容器化推理(K8s HPA、多副本)
- 批/流/在线多模式 serving
- 金丝雀发布与自动回滚
5. 观测层
标准回答
系统设计框架(面试按层作答):
1. 数据层
- 数据湖/仓(S3 + Delta/Iceberg)+ DVC 版本化
- 流批一体摄入(Kafka + Spark/Flink)
- 特征平台:离线训练特征与在线 serving 特征一致
2. 训练层
- 作业队列(K8s + Volcano/Slurm)+ GPU 池化与抢占
- 分布式训练:数据并行 / 张量并行(大模型)
- 实验跟踪:超参、指标、artifact 可追溯
3. 模型层
- 模型注册表(版本、阶段:Staging/Production)
- 自动化评估门禁(离线 A/B、shadow traffic)
4. 服务层
- 容器化推理(K8s HPA、多副本)
- 批/流/在线多模式 serving
- 金丝雀发布与自动回滚
5. 观测层
- 数据漂移、模型性能、延迟/成本 可观测性
- 审计日志与合规
常见误区
⚠️ 常见踩坑
只画「数据→模型→API」三层却忽略特征一致性、版本化与监控;不谈容量估算与失败恢复。
追问
追问 1:训练与推理资源如何隔离?
独立 K8s 节点池/命名空间,训练用 Spot/抢占实例降本,推理用稳定 on-demand 保 SLA。队列限流防训练挤占推理 GPU。
追问 2:多租户 ML 平台如何设计?
用命名空间/项目隔离各团队,配 ResourceQuota 与 GPU 配额防止互相挤占;存储、特征、模型注册按租户加 RBAC 与数据隔离;计费按用量打 label 归集。关键是隔离与配额,既共享底层算力又保证一个租户的大作业不拖垮他人。
追问 3:如何做训练作业的容错?
定期写 checkpoint 到持久存储,被抢占或失败后从最近 checkpoint 续训;调度器自动重启失败 pod;分布式训练用弹性训练(如 torchrun elastic)容忍节点增减;配合幂等的数据读取与确定的随机状态,保证续训结果一致。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。
📖 术语表
📰 AI 资讯
🛠️ AI 工具
- BentoML
AI 模型服务化框架,8.6K+ stars。最简化的方式部署 AI 应用和模型,支持模型推理 API、任务队列、LLM 服务等,是模型从实验到生产的桥梁