核心要点
能定义可复现:同代码+数据+环境→同结果
列举依赖、随机种子、硬件等非确定性因素
知道 lockfile、容器、conda/uv 等实践
理解训练-推理环境一致的重要性
简要回答
环境可复现要求依赖、系统库、CUDA、随机种子与硬件行为被锁定;挑战来自「在我机器上能跑」、隐式依赖与 GPU 非确定性。
标准回答
可复现性定义:固定代码版本 + 数据版本 + 环境配置 → 训练得到可接受的相同指标与模型行为。
主要挑战:
- 依赖地狱:pip 未锁版本、系统库差异(glibc、CUDA driver)
- 隐式状态:未记录的 notebook 单元格顺序、全局随机种子
- 硬件差异:不同 GPU 架构、混合精度非确定性(atomicAdd 顺序)
- 数据漂移:「同版本」数据实际已变(上游表更新)
- 训练-推理 skew:Python 3.9 训练、3.11 推理;特征计算库版本不同
最佳实践:
回答思路
【定义】用一句话说清「MLOps 中的环境可复现性是什么?有哪些挑战」
【原理】讲清关键机制或步骤(2~3 点)
【例子】举一个真实项目、论文或产品中的例子
【对比】与易混淆概念或替代方案比较(如有)
【收尾】总结适用场景 + 一个局限或风险
延伸学习
延伸阅读:MLOps 入门、环境管理。术语:DVC、MLOps、Checkpoint。
追问
追问 1:GPU 训练如何尽量确定性?
torch.use_deterministic_algorithms(True)、CUBLAS_WORKSPACE_CONFIG 设置、避免非确定性算子;可能牺牲性能。完全 bitwise 一致难,通常容忍微小数值差。
追问 2:Notebook 为何破坏可复现?
乱序执行、未保存中间状态、魔法命令改全局状态。应用脚本化(.py)+ 参数化(Hydra/argparse)+ CI 跑端到端。
追问 3:如何验证环境可复现?
CI 中两次独立构建镜像跑同训练脚本,对比 metric 与模型 hash(容忍阈值)。定期回归测试 golden pipeline。
🔗 相似问题
同一考点的不同问法,换着练更稳
没找到想看的面试题?把你想看的告诉我们 →
延伸学习
按主题分类的相关资源,便于系统复习
