本文最后更新于:2024年5月11日 下午
dvc是将大文件以类似git的形式进行管理的工具,结合git可以做到无痛管理项目文件,虽然眼下开发还不够成熟,不过已经为开发带来了很大方便。本文介绍dvc常用命令的使用方法。
本手册提供基本的DVC使用方法。
更详细的DVC使用方法请参考DVC官方文档。
0. DVC安装
各个平台下都可以用 pip 安装
1 | |
官网安装文档: https://dvc.org/doc/install
在Win平台下可能会报错:
1ERROR: 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 addtrack它们。例如:
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 | |
“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付