用途:为机器学习与数据工程提供可复现的数据版本管理实践,核心原则是代码存入 Git、数据指针存入 Git、数据字节存入远端存储。
主要能力:
- Git + DVC 工作流:dvc init 初始化,dvc remote add 配置远端,dvc add 追踪数据集并生成 .dvc 指针,dvc push/dvc checkout 按提交还原精确数据版本。
- DVC 流水线:在 dvc.yaml 定义 preprocess、train 等阶段及 deps、params、outs、metrics,用 dvc repro 复现变更阶段,dvc params diff、dvc metrics diff 对比,dvc dag 查看依赖图。
- DVC 实验:dvc exp run --set-param 做超参搜索,dvc exp show 查看结果,dvc exp branch 将实验提升为分支。
- Delta Lake 时间旅行:按 versionAsOf 或 timestampAsOf 读取历史版本,用 history() 查看历史,restoreToVersion 回滚。
- OpenLineage:通过 OpenLineageClient 发送 RunEvent 的 START/COMPLETE 事件,记录输入输出数据集血缘。
- 版本化数据集划分:保存分层抽样的 train/val/test 索引而非数据副本,保证划分可复现。
使用方式:在已有 Git 仓库初始化 DVC 并配置远端;将数据用 dvc add 纳管;在 dvc.yaml 中声明流水线;用 dvc repro 重跑;用实验命令搜索超参;对 Delta 表按版本或时间戳读取;在自定义管道中发送血缘事件;将划分索引文件用 DVC 追踪。
适用场景:模型训练数据管理、特征与数据集版本追踪、实验可复现、审计与回滚。
限制与反模式:不要把大数据文件直接存入 Git;不要用文件名当版本;不要覆盖已被模型训练使用的数据集;不要忽略划分的可复现性;缺少血缘会导致无法回答模型用了哪版数据;应为每个模型产物关联 Git 提交与 DVC 锁定信息。具体收费与运行环境资料暂未提供。