dvc
DVC(Data Version Control)是一款专为机器学习项目设计的命令行工具与 VS Code 插件,旨在帮助开发者和研究人员构建可复现的 AI 工作流。它核心解决了大体积数据与模型文件难以通过 Git 直接版本管理的痛点:DVC 将实际数据存储于云端的对象存储中,而仅在 Git 仓库里保留轻量级的版本元数据,从而实现了代码与数据的协同版本控制。
除了基础的数据版本管理,DVC 还内置了轻量级流水线引擎。当用户修改部分代码或数据时,它能智能识别依赖关系,仅重新运行受影响的步骤,大幅提升实验迭代效率。此外,DVC 支持在本地 Git 环境中无缝追踪、对比和复现实验结果,无需部署额外的服务器即可管理复杂的参数、指标及性能图表。
这款工具特别适合从事机器学习工程、数据科学研究的开发者团队。其独特的技术亮点在于“像管理代码一样管理数据”的理念,以及无需服务器即可实现的分布式实验协作能力。通过 DVC,团队可以轻松共享实验环境,确保任何成员都能一键复现他人的研究成果,让机器学习项目的开发过程更加规范、透明且高效。
使用场景
某电商推荐算法团队正在迭代用户点击率预测模型,需频繁调整特征工程代码并对比不同数据集上的训练效果。
没有 dvc 时
- 大型图像和日志数据集直接存入 Git 导致仓库体积膨胀,克隆项目耗时极长甚至失败。
- 手动记录每次实验对应的数据版本、代码提交号和超参数,Excel 表格混乱且极易出错,难以复现“上周效果最好的那个模型”。
- 修改了特征提取脚本后,必须全量重新运行整个训练流程,浪费大量计算资源和等待时间。
- 团队成员间共享实验结果时,常因本地数据路径不一致或依赖缺失,导致对方无法成功复现实验。
使用 dvc 后
- 数据与模型文件存储于云对象存储,Git 仅保留轻量级指针文件,仓库保持精简,新成员秒级克隆项目。
- 通过
dvc exp run自动追踪代码、数据、参数与指标的对应关系,随时用dvc exp show直观对比并一键回滚到任意历史实验状态。 - 构建轻量化流水线,当仅修改特征代码时,dvc 智能识别依赖变化,只重跑受影响的步骤而非全流程。
- 同事只需拉取 Git 代码并执行
dvc pull,即可自动从云端同步对应版本的数据与模型,无缝复现任何人的实验结果。
dvc 将散乱的手工实验流程转化为可版本化、可复现的自动化工程体系,让算法团队专注于模型创新而非环境调试。
运行环境要求
- Linux
- macOS
- Windows
未说明
未说明

快速开始
|横幅|
网站 <https://dvc.org>_
• 文档 <https://dvc.org/doc>_
• 博客 <http://blog.dataversioncontrol.com>_
• 教程 <https://dvc.org/doc/get-started>_
• 相关技术 <https://dvc.org/doc/user-guide/related-technologies>_
• DVC 工作原理_
• VS Code 扩展_
• 安装_
• 贡献代码_
• 社区与支持_
|CI| |Python 版本| |覆盖率| |VS Code| |DOI|
|PyPI| |PyPI 下载量| |软件包| |Brew| |Conda| |Choco| |Snap|
|
数据版本控制,简称 DVC,是一款命令行工具及 VS Code 扩展_,旨在帮助您开发可复现的机器学习项目:
#. 版本化您的数据和模型。 将它们存储在云端,但将版本信息保留在 Git 仓库中。
#. 使用轻量级流水线快速迭代。 当您进行更改时,仅运行受这些更改影响的步骤。
#. 在本地 Git 仓库中跟踪实验(无需服务器)。
#. 比较任何数据、代码、超参数、模型或性能图表。
#. 分享实验,并自动复现他人的实验。
快速入门
请参阅我们的 `命令参考 <https://dvc.org/doc/command-reference>`_ 以获取完整列表。
常见的 CLI 工作流程包括:
+-----------------------------------+----------------------------------------------------------------------------------------------------+
| 任务 | 终端 |
+===================================+====================================================================================================+
| 跟踪数据 | | $ git add train.py params.yaml |
| | | $ dvc add images/ |
+-----------------------------------+----------------------------------------------------------------------------------------------------+
| 连接代码和数据 | | $ dvc stage add -n featurize -d images/ -o features/ python featurize.py |
| | | $ dvc stage add -n train -d features/ -d train.py -o model.p -M metrics.json python train.py |
+-----------------------------------+----------------------------------------------------------------------------------------------------+
| 进行更改并实验 | | $ dvc exp run -n exp-baseline |
| | | $ vi train.py |
| | | $ dvc exp run -n exp-code-change |
+-----------------------------------+----------------------------------------------------------------------------------------------------+
| 比较并选择实验 | | $ dvc exp show |
| | | $ dvc exp apply exp-baseline |
+-----------------------------------+----------------------------------------------------------------------------------------------------+
| 分享代码 | | $ git add . |
| | | $ git commit -m '基准模型' |
| | | $ git push |
+-----------------------------------+----------------------------------------------------------------------------------------------------+
| 分享数据和机器学习模型 | | $ dvc remote add myremote -d s3://mybucket/image_cnn |
| | | $ dvc push |
+-----------------------------------+----------------------------------------------------------------------------------------------------+
DVC 工作原理
我们建议您阅读我们的 `入门指南 <https://dvc.org/doc/get-started>`_,以便更好地理解 DVC 的功能及其如何适应您的场景。
描述 DVC 主要功能的最贴切类比是:
#. 数据版控 Git:存储和分享数据制品(类似 Git-LFS,但无需服务器)以及模型,并将其与 Git 仓库连接起来。数据管理与 GitOps 相结合! #. 适用于机器学习的 Makefile:以标准格式描述如何从其他数据和代码构建数据或模型制品。现在您可以使用 Git 对数据流水线进行版本控制。 #. 本地实验跟踪:将您的机器变成一个机器学习实验管理平台,并利用现有的 Git 托管服务(如 GitHub、GitLab 等)与他人协作。
Git 通常用于存储和版本化代码(包括作为数据占位符的 DVC 元文件)。
DVC 无缝地将数据和模型文件 <https://dvc.org/doc/start/data-management>_ 存储在 Git 外部的缓存中,同时几乎保持与文件位于仓库内相同的用户体验。
为了共享和备份 数据缓存,DVC 支持多种远程存储平台——无论是云存储(S3、Azure、Google Cloud 等)还是本地网络存储(例如通过 SSH)。
|流程图|
DVC 流水线 <https://dvc.org/doc/start/data-management/data-pipelines>_(计算图)将代码和数据连接在一起。
它们指定了生成模型所需的所有步骤:输入依赖项(包括代码、数据、要执行的命令)以及需要保存的输出信息。
最后,但同样重要的是,DVC 实验版本控制 <https://dvc.org/doc/start/experiments>_ 让您可以准备和运行大量实验。
其结果可以根据超参数和指标进行筛选和比较,并通过多种图表进行可视化。
.. _VS Code Extension:
VS Code 扩展
|VS Code|
要直接在 VS Code IDE 中以图形界面使用 DVC,请从市场安装 DVC 扩展 <https://marketplace.visualstudio.com/items?itemName=Iterative.dvc>_。
目前它支持实验跟踪和数据管理,更多功能(如数据流水线支持等)也将很快推出!
|VS Code 扩展概览|
注意:您需要单独在系统上安装核心 DVC(如下所述)。如有需要,扩展会为您提供指导。
安装
安装 DVC 有多种方式:在 VS Code 中;使用 snap、choco、brew、conda、pip;或者通过特定操作系统的软件包管理器。
完整说明 在此处 <https://dvc.org/doc/get-started/install>_ 可用。
Snapcraft(Linux)
|Snap|
.. code-block:: bash
snap install dvc --classic
这对应于最新的标记版本。添加 --beta 可以获取最新的候选版本,而使用 --edge 则会安装最新的 main 分支版本。
Chocolatey(Windows)
|Choco|
.. code-block:: bash
choco install dvc
Brew(macOS)
|Brew|
.. code-block:: bash
brew install dvc
Anaconda(任意平台)
|Conda|
.. code-block:: bash
conda install -c conda-forge mamba # 安装速度远超 conda mamba install -c conda-forge dvc
根据您计划用于存储和共享数据的远程存储类型,可能需要安装可选依赖项:dvc-s3、dvc-azure、dvc-gdrive、dvc-gs、dvc-oss、dvc-ssh。
PyPI(Python)
|PyPI|
.. code-block:: bash
pip install dvc
根据您计划用于存储和共享数据的远程存储类型,可能需要指定其中一个可选依赖项:s3、gs、azure、oss、ssh。或者使用 all 来包含所有这些依赖项。命令应如下所示:pip install 'dvc[s3]'(在这种情况下,AWS S3 的依赖项如 boto3 将被自动安装)。
要安装开发版本,请运行:
.. code-block:: bash
pip install "dvc @ git+https://github.com/treeverse/dvc"
软件包(特定平台)
|Packages|
适用于 Linux、Windows 和 Mac 的自包含软件包现已提供。最新版本的软件包可在 GitHub 的 发布页面 <https://github.com/treeverse/dvc/releases>_ 上找到。
Ubuntu / Debian(deb) ^^^^^^^^^^^^^^^^^^^^^ .. code-block:: bash
sudo wget https://dvc.org/deb/dvc.list -O /etc/apt/sources.list.d/dvc.list wget -qO - https://dvc.org/deb/iterative.asc | sudo apt-key add - sudo apt update sudo apt install dvc
Fedora / CentOS(rpm) ^^^^^^^^^^^^^^^^^^^^^ .. code-block:: bash
sudo wget https://dvc.org/rpm/dvc.repo -O /etc/yum.repos.d/dvc.repo sudo rpm --import https://dvc.org/rpm/iterative.asc sudo yum update sudo yum install dvc
贡献
欢迎贡献!
有关详细信息,请参阅我们的 贡献指南 <https://dvc.org/doc/user-guide/contributing/core>_。
感谢所有贡献者!
|Contribs|
社区与支持
Twitter <https://twitter.com/DVCorg>_论坛 <https://discuss.dvc.org/>_Discord 聊天 <https://dvc.org/chat>_电子邮件 <mailto:support@dvc.org>_邮件列表 <https://dvc.org/community#subscribe>_
版权
本项目采用 Apache 许可证 2.0 版本进行分发(请参阅项目根目录下的 LICENSE 文件)。
通过向本项目提交拉取请求,即表示您同意将您的贡献以 Apache 许可证 2.0 版本授权给本项目。
引用
|DOI|
Iterative, DVC: 数据版本控制 - 面向数据与模型的 Git (2020)
DOI:10.5281/zenodo.012345 <https://doi.org/10.5281/zenodo.3677553>_。
Barrak, A., Eghan, E.E. 和 Adams, B. 关于 ML 管道与源代码的协同进化 - DVC 项目的实证研究 <https://mcis.cs.queensu.ca/publications/2021/saner.pdf>_ ,载于第 28 届 IEEE 国际软件分析、演化与再工程会议论文集,SANER 2021。美国夏威夷。
.. |Banner| image:: https://dvc.org/img/logo-github-readme.png :target: https://dvc.org :alt: DVC 标志
.. |VS Code 扩展概览| image:: https://raw.githubusercontent.com/treeverse/vscode-dvc/main/extension/docs/overview.gif :alt: VS Code 的 DVC 扩展
.. |CI| image:: https://github.com/treeverse/dvc/actions/workflows/tests.yaml/badge.svg :target: https://github.com/treeverse/dvc/actions/workflows/tests.yaml :alt: GHA 测试
.. |Python 版本| image:: https://img.shields.io/pypi/pyversions/dvc :target: https://pypi.org/project/dvc :alt: Python 版本
.. |Coverage| image:: https://codecov.io/gh/treeverse/dvc/branch/main/graph/badge.svg :target: https://codecov.io/gh/treeverse/dvc :alt: Codecov
.. |Snap| image:: https://img.shields.io/badge/snap-install-82BEA0.svg?logo=snapcraft :target: https://snapcraft.io/dvc :alt: Snapcraft
.. |Choco| image:: https://img.shields.io/chocolatey/v/dvc?label=choco :target: https://chocolatey.org/packages/dvc :alt: Chocolatey
.. |Brew| image:: https://img.shields.io/homebrew/v/dvc?label=brew :target: https://formulae.brew.sh/formula/dvc :alt: Homebrew
.. |Conda| image:: https://anaconda.org/conda-forge/dvc/badges/version.svg :target: https://anaconda.org/conda-forge/dvc :alt: Conda-forge
.. |PyPI| image:: https://img.shields.io/pypi/v/dvc.svg?label=pip&logo=PyPI&logoColor=white :target: https://pypi.org/project/dvc :alt: PyPI
.. |PyPI 下载量| image:: https://img.shields.io/pypi/dm/dvc.svg?color=blue&label=下载量&logo=pypi&logoColor=gold :target: https://pypi.org/project/dvc :alt: PyPI 下载量
.. |Packages| image:: https://img.shields.io/badge/deb|pkg|rpm|exe-blue :target: https://dvc.org/doc/install :alt: deb|pkg|rpm|exe
.. |DOI| image:: https://img.shields.io/badge/DOI-10.5281/zenodo.3677553-blue.svg :target: https://doi.org/10.5281/zenodo.3677553 :alt: DOI
.. |流程图| image:: https://dvc.org/img/flow.gif :target: https://dvc.org/img/flow.gif :alt: how_dvc_works
.. |Contribs| image:: https://contrib.rocks/image?repo=treeverse/dvc :target: https://github.com/treeverse/dvc/graphs/contributors :alt: 贡献者
.. |VS Code| image:: https://img.shields.io/visual-studio-marketplace/v/Iterative.dvc?color=blue&label=VSCode&logo=visualstudiocode&logoColor=blue :target: https://marketplace.visualstudio.com/items?itemName=Iterative.dvc :alt: VS Code 扩展
版本历史
3.67.12026/03/313.67.02026/03/143.66.12026/01/083.66.02026/01/063.65.02025/12/223.64.22025/12/063.64.12025/12/023.64.02025/11/133.63.02025/09/023.62.02025/08/123.61.02025/07/073.60.12025/06/123.60.02025/06/063.59.22025/05/063.59.12025/02/153.59.02025/01/133.58.02024/12/013.57.02024/11/263.56.02024/10/233.55.22024/09/02常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备