首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DVC如何将目录级别的差异存储到DVC缓存中?

DVC如何将目录级别的差异存储到DVC缓存中?
EN

Stack Overflow用户
提问于 2020-03-04 21:28:06
回答 1查看 432关注 0票数 3

有人能解释一下DVC是如何将目录级别的差异存储到DVC缓存中的吗?

我知道DVC文件(.dvc)是用于跟踪数据、模型和重现管道阶段的元文件。然而,我并不清楚创建分支、提交分支和切换回主文件的过程是如何准确地保存在差异中的。

EN

回答 1

Stack Overflow用户

发布于 2020-03-04 22:58:58

简短版本:

  1. .dvc文件包含缓存中描述directory.
  2. When目录当前状态的有关JSON文件的信息( md5 ),.dvc文件中有新的md5,并使用目录的更新状态创建新的JSON文件。
  3. 在git中,您存储.dvc文件,以便DVC知道(基于md5)在哪里查找有关目录的信息。

更长的版本:

让我尝试打破使用DVC处理目录的特定步骤。

  • 假设我们有一些数据目录要添加到DVC控制下:

代码语言:javascript
复制
data
├── 1
└── 2

  • 您正在使用dvc add data让DVC跟踪您的目录。结果,DVC生成data.dvc文件。正如您所提到的,该文件包含连接git存储库和数据存储所需的元数据。在这个文件中(除了其他内容之外),您可以看到:

代码语言:javascript
复制
outs:
- md5: f437247ec66d73ba66b0ade0246fcb49.dir
 path: data

DVC缓存(.dvc/cache):中的

  • md5部件用于存储有关目录的信息

代码语言:javascript
复制
(dvc3.7) ➜  repo$ tree .dvc/cache
.dvc/cache
├── 26
│   └── ab0db90d72e28ad0ba1e22ee510510
├── b0
│   └── 26324c6904b2a9cb4b88d6d61c81d1
└── f4
    └── 37247ec66d73ba66b0ade0246fcb49.dir

  • 如果您要打开带有.dir后缀的文件,您将看到它包含对当前data状态的描述:

代码语言:javascript
复制
(dvc3.7) ➜  repo$ cat .dvc/cache/f4/37247ec66d73ba66b0ade0246fcb49.dir 
[{"md5": "b026324c6904b2a9cb4b88d6d61c81d1", "relpath": "1"},
 {"md5": "26ab0db90d72e28ad0ba1e22ee510510", "relpath": "2"}]

如您所见,此文件中的条目描述了特定文件(12

更改目录时的

代码语言:javascript
复制
(dvc3.7) ➜  repo$ echo 3 >> data/3 
(dvc3.7) ➜  repo$ dvc commit data.dvc

将更新data.dvc的内容:

代码语言:javascript
复制
outs:
- md5: 12f4b7d54a32e58818e27fba28376fba.dir
  path: data

缓存中有一个新文件:

代码语言:javascript
复制
├── 12
│   └── f4b7d54a32e58818e27fba28376fba.dir
...

(dvc3.7) ➜  repo$ cat .dvc/cache/12/f4b7d54a32e58818e27fba28376fba.dir 
[{"md5": "b026324c6904b2a9cb4b88d6d61c81d1", "relpath": "1"},
 {"md5": "26ab0db90d72e28ad0ba1e22ee510510", "relpath": "2"},
 {"md5": "6d7fce9fee471194aa8b5b6e47267f03", "relpath": "3"}]

从git的角度来看,唯一的变化是在data.dvc内部。(假设您在添加了包含12data之后执行了git commit ):

代码语言:javascript
复制
diff --git a/data.dvc b/data.dvc
index 098aec5..88d1a90 100644
--- a/data.dvc
+++ b/data.dvc
@@ -1,6 +1,6 @@
-md5: a427c5bf8680fbf8d1951806b28b82fe
+md5: 1b674d61c195eea7a6b14f176c020b9c
 outs:
-- md5: f437247ec66d73ba66b0ade0246fcb49.dir
+- md5: 12f4b7d54a32e58818e27fba28376fba.dir
   path: data
   cache: true
   metric: false

注意:第一个md5对应于这个文件的md5,所以它必须随着目录md5的改变而改变

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60527213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档