标准回答
为什么重要
ML 的产出不只由代码决定,还由数据、超参、环境共同决定。只版本化代码无法复现结果——同一脚本喂不同数据集会得到完全不同的模型。版本管理解决三件事:可复现(精确重跑历史实验)、可审计(追溯模型由哪批数据训练,满足合规)、可回滚(线上出问题快速退回已知良好版本)。
数据版本化
大数据集不适合直接进 Git。DVC 用内容哈希把数据指针存进 Git、实体存对象存储;lakeFS / Delta Lake 给数据湖提供类 Git 的分支、提交、回滚能力,支持「时间旅行」回看任意历史快照。
模型与实验管理
Model Registry(如 MLflow、Weights & Biases)登记模型版本,标注 staging/production 阶段,记录指标、超参与数据血缘,支持审批晋升与回滚。实验追踪工具把每次跑的参数、指标、产物自动归档,便于横向对比。
参见 MLOps 版本管理实战 与流水线设计。
常见误区
⚠️ 常见踩坑
别把大数据集直接塞进 Git(仓库膨胀、克隆缓慢)——应用 DVC/lakeFS 存指针。也别只存模型权重却不记数据与超参血缘:没有「这版模型用了哪批数据、什么参数」就既无法复现也无法审计。
追问
追问 1:DVC 是怎么工作的?
DVC 对数据文件计算内容哈希,在 Git 里只提交 .dvc 指针文件(含哈希与远端位置),真实数据推到对象存储(S3/GCS)。git checkout 切到某版本时,dvc pull 按指针拉回对应数据,从而让数据与代码版本对齐、可复现。
追问 2:模型注册表(Model Registry)解决什么问题?
集中管理模型生命周期:登记版本、标注阶段(staging/production/archived)、记录指标与数据血缘、控制晋升审批与回滚。让「线上跑的是哪一版、谁批准、用什么数据训的」可查可控,是模型治理与合规的核心组件。
追问 3:怎样保证一次训练完全可复现?
钉死四要素:代码(Git commit)、数据(DVC/lakeFS 版本)、超参与随机种子、环境(容器镜像+依赖锁定)。再固定库版本与确定性算子(如关闭非确定 CUDA kernel)。把这些元数据随实验一并记录,才能精确重跑。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。
🛠️ AI 工具
- Weights & Biases
AI 开发者平台,用于模型训练、微调、实验管理和生产部署,支持从实验到生产的全流程管理。
- MLflow
开源 AI 工程平台,26K+ stars。面向 Agent、LLM 和 ML 模型的端到端生命周期管理平台,支持实验追踪、模型注册、部署和监控