核心要点
能按数据/训练/部署/监控分层设计
理解水平扩展、队列调度、GPU 池化
提及特征存储、模型注册、CI/CD 集成
能讨论成本、延迟、可靠性权衡
简要回答
可扩展 ML 基础设施需分层:数据湖/特征平台 → 分布式训练调度 → 模型注册与服务网格 → 监控与自动回滚,并贯穿版本化与 MLOps 流水线。
标准回答
一、先给出结论和背景
- 系统设计框架:(面试按层作答):
- 数据层:- 数据湖/仓(S3 + Delta/Iceberg)+ DVC 版本化
- 流批一体摄入(Kafka + Spark/Flink)
- 特征平台:离线训练特征与在线 serving 特征一致
- 训练层:- 作业队列(K8s + Volcano/Slurm)+ GPU 池化与抢占
- 分布式训练:数据并行 / 张量并行(大模型)
- 实验跟踪:超参、指标、artifact 可追溯
二、拆开关键步骤和判断点
- 模型层:- 模型注册表(版本、阶段:Staging/Production)
- 自动化评估门禁(离线 A/B、shadow traffic)
- 服务层:- 容器化推理(K8s HPA、多副本)
- 批/流/在线多模式 serving
- 金丝雀发布与自动回滚
三、补上落地边界和取舍
面试里要把 设计可扩展的机器学习基础设施 放到训练到上线的链路里说:离线指标只是第一步,还要补特征一致性、版本管理、灰度实验、监控漂移和回滚方案。这样能证明你理解的是生产系统,而不是只会背流程图。
回答思路
【定义】用一句话说清「如何设计可扩展的机器学习基础设施」
【原理】讲清关键机制或步骤(2~3 点)
【例子】举一个真实项目、论文或产品中的例子
【对比】与易混淆概念或替代方案比较(如有)
【收尾】总结适用场景 + 一个局限或风险
常见误区
⚠️ 常见踩坑
误区一:容易答偏的地方:只画「数据→模型→API」三层却忽略特征一致性、版本化与监控;不谈容量估算与失败恢复。
追问
追问 1:训练与推理资源如何隔离?
独立 K8s 节点池/命名空间,训练用 Spot/抢占实例降本,推理用稳定 on-demand 保 SLA。队列限流防训练挤占推理 GPU。
追问 2:多租户 ML 平台如何设计?
命名空间隔离、配额(GPU/存储)、RBAC、成本分摊标签。共享特征商店与注册表,项目级 artifact 隔离。
追问 3:如何做训练作业的容错?
Checkpoint 定期保存;分布式训练用 all-reduce 同步;节点失败从最近 checkpoint 恢复;关键任务多副本冗余。
🔗 相似问题
同一考点的不同问法,换着练更稳
延伸学习
按主题分类的相关资源,便于系统复习
