本文最后更新于:2024年5月11日 下午
dvc是将大文件以类似git的形式进行管理的工具,结合git可以做到无痛管理项目文件,虽然眼下开发还不够成熟,不过已经为开发带来了很大方便。本文介绍dvc常用命令的使用方法。
本手册提供基本的DVC使用方法。
更详细的DVC使用方法请参考DVC官方文档。
0. DVC安装
各个平台下都可以用 pip 安装
1 |
|
官网安装文档: https://dvc.org/doc/install
在Win平台下可能会报错:
1
ERROR: Cannot uninstall 'ruamel-yaml'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
此时需要进入python 的lib/site-packages 中删除 ‘ruamel-yaml’ 相关的文件
注意: dvc 2.3.0 版本与之后的hash计算方法不同,不能混用
报错缺少 dependencies: ['s3fs']
-
错误信息中给出的解决方案是
pip install 'dvc[s3]'
,并没有用,用 pip 反复安装卸载均无效; -
最终解决问题的方法是放弃
pip
安装,改用conda
安装dvc
库 -
相关官方文档:https://dvc.org/doc/install/windows#install-with-conda
-
安装命令
1 |
|
- 安装指定版本
dvc
1 |
|
mamba
仅用于加速 conda 安装,也可以尝试直接用conda
安装
1. DVC基本用法
初始化
使用dvc init
命令初始化一个项目。注意,初始化DVC之前需要先初始化Git。
example:
1 |
|
dvc init
命令会自动创建.dvc
目录。
Track文件或目录
使用dvc add
命令track文件或目录。
example:
1 |
|
DVC将文件或目录的信息存储在.dvc
文件中,如data.xml.dvc
。DVC还会自动修改.gitignore文件。需要在Git中add这两个文件并提交。
1 |
|
设置remote storage
使用dvc remote add
命令可以设置DVC的remote。DI使用兼容亚马逊S3 API的对象存储做为DVC的remote storage。
设置方法如下:
1 |
|
其中myremote是DVC remote的名字,s3://dvc
是bucket的位置,http://ceph01
是对象存储的endpoint。
同时还需要配置如下环境变量:
1 |
|
AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY无效时,请联系管理员获取新的key。
推送到remote
设置remote storage之后,可以使用dvc push
命令推送数据到remote。
example:
1 |
|
拉取数据
DVC-tracked data被存储到remote之后,可以通过dvc pull
拉取远端的数据到本地。通常,在git clone
和git pull
之后运行dvc pull
。
example:
1 |
|
2. 创建基于DVC的Git项目
准备工作
-
安装dvc
pip install dvc
-
ceph对象存储服务配置
设置环境变量
export AWS_ACCESS_KEY_ID=18M4BI7CGWKWSYELOXC3
配置hosts文件,在hosts文件中增加以下内容
192.168.10.91 ceph01
否则报错 ceph01 找不到
初始化项目
假设项目名称为demo,数据位于demo/data目录。
1 |
|
设置DVC的remote
1 |
|
track data
1 |
|
提交Git
1 |
|
3. Data Registry
data registry用于数据和代码相分离的情况,即代码和数据不在同一目录。同时,data registry使得数据和模型可以在不同的项目间共享。DVC提供了dvc import
和dvc get
命令来拉取data registry中的数据。
构建registry
与一般DVC项目一样,data registry使用git init
和dvc init
进行初始化。
将数据集添加到data registry中很简单,只需要将相关数据放置在workspace中,然后用dvc add
track它们。例如:
1 |
|
然后使用常规的Git workflow管理产生的.dvc
文件。
1 |
|
实际的数据存储在项目的cache中,可以通过dvc push
推送到remote storage以便其人能够访问。
1 |
|
使用registry
列出数据
使用dvc list
命令可以列出registry中的内容:
1 |
|
直接下载
从registry中直接下载数据可以使用dvc get
命令:
1 |
|
import workflow
dvc import
命令可以下载registry中的数据,同时会创建对应的.dvc
文件,该文件包含了元数据。注意,dvc import
必须在初始化过的dvc workspace中才能运行。
1 |
|
更新数据
若项目引用的registry中的数据发送了更新,可以使用dvc update
同步此数据:
1 |
|
“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信支付

支付宝支付