什么时候用
先判断任务是否合适
- 数据文件太大不能被Git直接管理
- 需要追踪每次实验的参数、指标和产物并方便对比
- 多个数据处理和训练步骤需要增量重算而非每次全跑
- 团队需要共享同一份数据集并在各仓库间版本锁定引用
先准备什么
材料越清楚,结果越有用
- •在项目根目录初始化Git仓库和DVC仓库
- •在dvc.yaml中声明数据处理和模型训练的各阶段及依赖关系
- •配置远端存储URL和凭证用于数据共享
它会怎样推进
从材料到可以检查的结果
- 01
版本化数据
用dvc add把数据文件纳入内容寻址缓存,Git只跟踪轻量元数据指针
- 02
定义流水线
在dvc.yaml中声明各处理阶段的输入、输出、命令和参数依赖
- 03
增量复现
运行dvc repro,只重跑上游依赖或参数发生变化的后继阶段
- 04
实验迭代
用dvc exp run跑多个参数组合,通过exp show对比指标并随时回滚
- 05
远端同步
用dvc push/pull把缓存对象与S3/GCS等远端双向同步
第一次这样开始
把仓库地址直接交给 AI
先让 AI 说明环境和风险,再完成最小安装验证。跑通以后,再把自己的真实材料放进去。
第一次直接复制
帮我安装这个库:https://github.com/iterative/dvc 安装前先告诉我需要什么环境,安装后帮我跑通一个最小示例。
结果出来后
先看这些检查点
- dvc.lock中记录的依赖哈希是否与当前文件一致
- dvc repro后metric文件中的数值是否在预期范围内
- dvc exp show的指标对比表是否清楚展示了实验间的差异
- 远端同步状态中missing项是否指向已被回收的对象
常见误区
这些判断仍由你负责
- 把大文件直接提交到Git而不是只用DVC跟踪其.dvc元数据
- dvc exp apply前未保存当前工作区未提交改动导致覆盖
- 在多仓库间import数据后忘记用dvc update同步上游新版本
技术依据
查看能力拆解、验证范围与来源
技术依据
查看能力拆解、验证范围与来源
- 01
实验跟踪
在不搭建中心化 ML 实验服务器的前提下,利用本地 Git 仓库跟踪大量实验运行(参数、指标、产物、队列执行),并支持按指标比较、筛选、回滚和共享实验,把单机或队列化的实验迭代纳入版本治理。
- 02
数据导入与注册中心
从另一个 DVC/Git 仓库、远端 URL 或数据库拉取数据作为当前仓库的依赖,并以 frozen import 形式锁定版本,后续可用 dvc update 拉取上游新版本,从而把多个仓库组织成数据注册中心式的依赖网络。
- 03
数据版本管理
把工作目录里的数据文件或模型文件纳入版本控制,让 Git 只跟踪轻量 .dvc 元数据,而真实大文件存放在内容寻址缓存里,从而实现“Git 跟踪版本、缓存存内容”的数据版本管理。
- 04
流水线编排与repro
把多个数据处理或模型训练步骤描述成 dvc.yaml 里的有向无环图(DAG)阶段,当依赖或代码变化时只重跑受影响的后继阶段(dvc repro),从而实现增量、可复现的 ML 流水线。
| 能力 | 主要输入 | 主要输出 | 人工检查 |
|---|---|---|---|
实验跟踪源码已核对 |
|
|
|
数据导入与注册中心源码已核对 |
|
|
|
数据版本管理源码已核对 |
|
|
|
流水线编排与repro源码已核对 |
|
|
|
远端存储同步源码已核对 |
|
|
|
处理机制
- 01
内容寻址缓存与对象数据库
DVC 的数据版本管理、流水线复现、实验跟踪、远端同步和数据导入五张能力卡,都依赖同一个横向机制:内容寻址缓存(content-addressable cache)。这个机制解释了为什么 DVC 能用轻量 Git 元数据管理大文件、为什么 push/pull 是云无关的、以及为什么多个能力能共享同一份本地存储。
已核对范围
- 只读上游快照 本地只读快照,commit f74c1c0e709de61f571905802bc0c75035dc6ef2
- README.rst、dvc/repo/experiments/init.py、dvc/repo/experiments/run.py、dvc/repo/experiments/queue/base.py、dvc/repo/metrics/show.py
- dvc/commands/experiments/init.py(exp 子命令清单)、dvc/repo/experiments/refs.py、dvc/repo/experiments/stash.py
- README.rst、dvc/repo/imp.py、dvc/repo/impurl.py、dvc/repo/impdb.py、dvc/repo/get.py、dvc/repo/geturl.py、dvc/repo/update.py、dvc/repo/datasets.py
- dvc/stage/imports.py(syncimport/updateimport)、dvc/repo/openrepo.py
- README.rst、dvc/repo/add.py、dvc/repo/init.py、dvc/dvcfile.py、dvc/cachemgr.py
- tests/unit/testdvcfile.py、tests/func/testadd.py 的存在与命名
- README.rst、dvc/repo/reproduce.py、dvc/stage/init.py、dvc/stage/loader.py、dvc/stage/run.py、dvc/dvcfile.py
仍待核对
- 未运行 dvc exp run/dvc exp show/dvc exp apply
- 未验证 workspace/tempdir/celery 三种 queue 的实际隔离与并发
- 未验证 hydra sweep 的实际展开
- 未验证 Studio live metrics 的上传链路
- 未验证 exp ref(refs/exps/...)与 Git 提交的交互
- 未运行 dvc import/import-url/get/update
- 未验证跨仓库数据注册中心的实际拉取与版本锁定
- 未验证 dvc update 拉取上游新版本的行为
读取版本
f74c1c0e709de61f571905802bc0c75035dc6ef2许可
Apache-2.0
最近核对
内容 2026-07-10
Stars 2026-07-11
相关文章
科研之我见
AI 科研全流程怎么搭,我梳理出三个核心入口
每天开工先固定阶段入口、材料入口和验证入口,把庞大的科研全流程收缩成一段可执行、可检查的任务。
查看内容