核心要点

  • 能按数据/训练/部署/监控分层设计

  • 理解水平扩展、队列调度、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 恢复;关键任务多副本冗余。

🔗 相似问题

同一考点的不同问法,换着练更稳

延伸学习

按主题分类的相关资源,便于系统复习