用途:把现有 Git 仓库变成 ML 实验环境,用于数据与模型文件的版本管理、可复现流水线声明、带指标与图表的实验运行。适合希望不依赖跟踪服务器(如 mlflow、wandb)做可复现训练的团队,也适用于超参扫描、版本化超出 Git 容量限制的数据集或模型文件。不适用于需要托管式多人协作看板、LLM 调用链可观测性,或仅需少数大文件版本控制(此时建议 git lfs)的场景。
主要能力:dvc add 将单个文件或目录快照进缓存并生成提交到 Git 的 .dvc 指针文件;dvc.yaml 以阶段(stage)声明依赖与输出,dvc repro 仅重跑输入变化的阶段;dvc exp run 配合参数覆盖产生附着指标与产物的临时提交;dvc exp run --queue 入队后由 dvc queue start --jobs N 并行执行;dvc exp show、dvc metrics show/diff、dvc plots show/diff 用于比较与可视化;dvc remote add -d 与 dvc push/pull 管理远端产物。
使用方式:初始化可用 dvc init 后提交 .dvc 与 .dvcignore,或使用随附脚本 bash skills/local/dvc-ml-workflow/scripts/init-dvc-project.sh,支持 --remote URL、--subdir、--force、--dry-run、--help。跟踪数据与模型用 dvc add,随后 git add 对应 .dvc 文件并提交。用 dvc stage add 声明阶段,例如 dvc stage add -n train -d src/train.py -d data/features -p model.lr,model.epochs -o models/best.pt -M metrics.json --plots-no-cache plots.csv python src/train.py。单次实验用 dvc exp run -S model.lr=1e-3;扫描用多次 dvc exp run --queue -S ... 后执行 dvc queue start --jobs 3,并以 dvc queue status、dvc queue logs <task-id> 观察。完成后用 dvc exp show 查看,dvc exp apply <exp-name> 提升为真实提交。推送用 dvc remote add -d origin s3://my-bucket/dvc-store、dvc push、git push。另附 queue-helper.sh(enqueue、start --jobs N、status、logs,默认 JSON 输出)与 lint-dvcyaml.sh(以 dvc dag --dot 仅解析校验 dvc.yaml)。
限制与注意:dvc exp run --queue 只入队不执行,须 dvc queue start;在已有仓库子目录初始化需 dvc init --subdir,否则报找不到 .git 或 .hg;dvc.lock 必须提交,.dvc/cache/ 不可提交;-M 指标文件需为扁平或一层嵌套的 JSON/YAML 才能被 dvc exp show 渲染;参数覆盖使用相对 params.yaml 的点号路径;dvc push 在部分后端凭据缺失时可能仅报告“0 files pushed”而不报错,建议用 dvc status -c 校验。价格、收费与平台信息暂未提供。