Skip to content

Instantly share code, notes, and snippets.

@Zrealshadow
Created October 30, 2020 06:14
Show Gist options
  • Save Zrealshadow/4bb9facccad2cb177943e6c3b7783bb4 to your computer and use it in GitHub Desktop.
Save Zrealshadow/4bb9facccad2cb177943e6c3b7783bb4 to your computer and use it in GitHub Desktop.
Data Version Control Simple Tutorial (DAC)

Data Version Control Simple Tutorial (DAC)

Author: 曾令泽

创建dvc本地仓库

先创建git仓库,再创建dvc仓库

$ git init
$ dvc init

此时键入会得到如下信息

#追踪 dvc配置文件
$ git add .dvc 
$ git status
Changes to be committed:
        new file:   .dvc/.gitignore
        new file:   .dvc/config
        ...
$ git commit -m "Initialize DVC"

此时git已经开始追踪dvc信息了。

使用dvc追终文件信息

假设此时文件目录如下, model.txt 代表模型参数, model.py代表模型结构的源代码

 ---
 	| --- model.txt
 	| --- model.py

命令行窗口输入

# 追踪model.py文件
$ git add model.py
# 使用dvc追踪 model.txt
$ dvc add model.txt

键入dvc add model.txt后,会得到一个后缀 .dvc的文件,该文件可以看作一个 model.txt 文件的 index,我们需要用git来追踪该文件。

命令行窗口输入

$ git add model.txt.dvc .gitignore
$ git commit -m "First Model, traind"

为提交版本打上易于辨识的标签

$ git tag -a "v1.0" -m "Model v1.0, Detail Information"

将dvc关联远端数据仓库

dvc支持S3,google driver等云端数据仓库,也可以用ssh,sftp连接远程服务器

更多云端仓库操作指南链接

下文以ssh连接远端服务器为例

Example:

ssh 服务器ip地址 : 192.168.1.151

存储地址: /home/user/data_center

Note: DVC现在支持的存储地址为绝对路径

增加远程仓库

$ dvc remote add -d myremote ssh://user@192.168.1.151/home/user/data_center
# myremote 云端仓库的名字
# -d default config

此时我们添加的是一个默认配置,配置用户名和密码

$ dvc remote modify --local myremote user Lingze
$ dvc remote modify --local myremote password mypassword
# 注意 用户名和密码包含隐私信息,一定要加上--local选项
# 他会生成conf.local文件,git追踪时会自动忽略掉此文件,但是本地应用不会受到影响

数据传输到远端仓库

$ dvc push test.txt
# 单独推test.txt文件
$ dvc push
# 全部文件都推到远端
$ dvc status --cloud
# 可以查看本地dvc文件与远端文件dvc文件差别

现在我们进行第二个版本的提交,随意改动 model.txt model.py 代表进行了模型代码和模型参数的改变

$ dvc add model.txt
$ dvc push
# 生成.dvc文件, 将文件共享到云端
$ git add model.py model.txt.dvc
$ git commit -m "Second Model, train"
$ git tag -a "v2.0" -m "model v2.0,changed model"
#提交2.0版本,打上 v2.0的标签

回溯到之前版本

$ git checkout v1.0
$ dvc checkout 

如果我们需要现在的代码,但是想使用之前的模型参数,我们可以单独进行指定

$ git checkout v1.0 model.txt.dvc
$ dvc checkout model.txt.dvc

其他

  • 打开dvc文件,可以看到其实dvc文件记录了数据的路径和md5加密解密的密钥,换句话说dvc文件是一种key文件,因此相对data来说内存很小,使用git进行track没有负担。
  • 云端文件的存储是加密的,只能通过本地data生成的dvc文件中密钥进行解密得到正确文件
  • 在版本的回溯过程中,dvc对文件增删改进行了优化,并不是简单的复制,因此在内存利用率和效率上有大大提高
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment