dvc学习笔记1——数据管理“基本篇“

4 篇文章 0 订阅

一:安装dvc

#pip安装
pip install dvc
pip install dvc[s3]

#conda安装,选择性的安装可选依赖项:dvc-s3, dvc-azure, dvc-gdrive, dvc-gs, dvc-oss, dvc-ssh
conda install -c conda-forge mamba # installs much faster than conda
mamba install -c conda-forge dvc
amba install -c conda-forge dvc-s3

二:项目文件夹初始化

#git初始化
$ mkdir example-get-started

$ cd example-get-started

$ git init

#dvc初始化
$ dvc init

初始化DVC之后,创建了一些应该添加到 Git 仓库的内部文件。

$ git status

Changes to be committed:
        new file:   .dvc/.gitignore
        new file:   .dvc/config
        ...


$ git commit -m "Initialize DVC"

ok,现在你已经准备好DVC了。 DVC的特性可以分为几个功能组件(数据和模型版本控制、访问与下载数据和模型、数据流水线、指标跟踪、更新训练参数以及可视化模型表现、机器学习实验管理

三:下载文件

# 进入到之前初始化好的项目目录下
$ cd example-get-started

$ dvc get https://github.com/iterative/dataset-registry \
          get-started/data.xml -o data/data.xml


四:跟踪文件

dvc add data/data.xml

通过以上命令,DVC 将关于添加的文件(或目录)的信息存储在名为data/data.xml.dvc 的特殊.dvc文件中(这是一个人类可读格式的小文本文件)。这个元数据文件是原始数据文件的占位符,这样就可以像使用 Git 的源代码一样轻松地进行版本控制。同时,原始数据文件会被放在 .gitignore文件中。

$ cat data/.gitignore

/data.xml

#dvc add 会将数据移动到项目的缓存中,并将其链接回工作区。
$ tree .dvc/cache

../.dvc/cache
└── a3
    └── 04afb96060aad90176268345e10355
  
#我们刚刚添加的data.xml文件的hash值(a304afb...)决定了上面的缓存路径。
#如果你检查 data/data.xml.dvc,你也会在这里发现它:
$ cat data/data.xml.dvc  

outs:
  - md5: a304afb96060aad90176268345e10355
    path: data.xml    

将元数据文件添加到Git中进行跟踪。

$ git add data/data.xml.dvc data/.gitignore

$ git commit -m "Add raw data"

五:创建存储数据文件的远程存储库

您可以使用 dvc push 上传 DVC 跟踪的数据或模型文件,以便安全地远程存储它们。 这也意味着后面您可以使用 dvc pull 在其他环境中恢复它们。
在这里插入图片描述首先,我们需要设置一个远程存储库的地址,DVC 支持许多远程存储类型,包括 Amazon S3SSHGoogle DriveAzure Blob Storage HDFS,从上图我们也可以看到,代码与模型和数据文件是分开存储的。

# 配置远程Git仓库
$ git remote add origin https://gitee.com/xxxx/dvc-samples.git

# 配置远程数据存储库(注:简单起见,这里我用的是本地的其他文件夹作为远程存储库,不推荐)
$ mkdir -p /home/lgd/dvc/local_remote_data_register
$ dvc remote add -d local_remote /home/lgd/dvc/local_remote_data_register

让我们看一下.dvc/config配置文件的改变:

# 查看配置
$ cat .dvc/config

[core]
    remote = local_remote
['remote "local_remote"']
    url = /home/lgd/dvc/local_remote_data_register

所以需要git将改变的配置文件上传到仓库:

# 添加dvc配置文件到本地Git仓库
$ git add .dvc/config
$ git commit -m "Configure local remote storage"

# 或者使用以下命令代替上面两条命令
# git commit .dvc/config -m "Configure local remote"

可使用$ dvc remote list查看已有的remote

六:将数据push到远程中

$ dvc push  

注意:dvc push后面不能加[remote]会报错,dvc执行default的远程,这里和git不同!!!

您可以使用以下命令检查数据是否已存储在 DVC 远程存储库中:

$ ls -R /home/lgd/dvc/local_remote_data_register

/home/lgd/dvc/local_remote_data_register/:
a3

/home/lgd/dvc/local_remote_data_register/a3:
04afb96060aad90176268345e10355

通常,我们也需要 git commitgit push 对应的.dvc文件,将.dvc元数据文件提交本地仓库并推送到Git远程仓库,示例如下:

$ git push origin main

七:下载与恢复数据

将 DVC 跟踪的数据和模型文件存储在远程仓库之后,我们可以在需要时使用 dvc pull 将其下载到该项目的其他副本中。 通常,我们在 git clone git pull 之后运行它。

git pull 和 git clone的区别可以看这篇文章,要用git pull语法的前提是你有该仓库权限。

$ git clone https://gitee.com/xxxx/dvc-samples.git

$ cd dvc-samples

$ git pull origin main

$ dvc pull

在本项目中恢复数据,示例如下:

$ cd example-get-started

# 假设我们删除了本地缓存的数据
$ rm -rf .dvc/cache
$ rm -f data/data.xml

# 恢复数据
$ dvc pull origin main

八:在版本之间进行切换

通常的工作流程是先使用git checkout(切换分支或切换.dvc文件版本),然后运行dvc checkout以同步数据。

# 首先,获取数据集的先前一个版本,让我们回到数据的原始版本
$ git checkout HEAD~1

# 同步数据
$ dvc checkout

之后,让我们提交.dvc文件到本地Git仓库(这次不需要做 dvc push,因为这个原始版本的数据集已经保存在本地缓存和远程存储库了)。

$ git commit data/data.xml.dvc -m "Revert dataset updates"

$ git push origin main

九:总结

其实,从技术上来讲,DVC 甚至不是版本控制系统! .dvc 元数据文件内容定义了数据文件的版本,本质上是通过 Git 来提供版本控制。 DVC 反过来创建这些.dvc文件,然后更新它们,并有效地同步工作空间中 DVC 跟踪的数据以匹配它们。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值