gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 01:37:31 28 4
gpt4 key购买 nike

有人可以解释一下 DVC 如何将目录级别的差异存储到 DVC 缓存中。

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

最佳答案

简短版本:

  1. .dvc 文件包含有关缓存内 JSON 文件的信息 (md5),用于描述目录的当前状态。

  2. 当目录更新时,.dvc 文件中有新的 md5,并使用更新后的目录状态创建新的 JSON 文件。

  3. 在 git 中,您存储 .dvc 文件,以便 DVC 知道(基于 md5)在哪里查找有关目录的信息。

更长的版本:

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

  • 假设我们有一些要在 DVC 控制下添加的数据目录:
data
├── 1
└── 2
  • 您正在使用dvc add data 使 DVC 跟踪您的目录。结果,DVC 生成data.dvc 文件。正如您所指出的,此文件包含将 git 存储库与数据存储连接所需的元数据。在此文件中(除了其他内容)您可以看到:
outs:
- md5: f437247ec66d73ba66b0ade0246fcb49.dir
path: data
  • md5 部分用于存储有关 DVC 缓存 (.dvc/cache) 中目录的信息:
(dvc3.7) ➜  repo$ tree .dvc/cache
.dvc/cache
├── 26
│   └── ab0db90d72e28ad0ba1e22ee510510
├── b0
│   └── 26324c6904b2a9cb4b88d6d61c81d1
└── f4
└── 37247ec66d73ba66b0ade0246fcb49.dir

  • 如果您打开带有 .dir 后缀的文件,您将看到它包含当前数据状态的描述:
(dvc3.7) ➜  repo$ cat .dvc/cache/f4/37247ec66d73ba66b0ade0246fcb49.dir 
[{"md5": "b026324c6904b2a9cb4b88d6d61c81d1", "relpath": "1"},
{"md5": "26ab0db90d72e28ad0ba1e22ee510510", "relpath": "2"}]

如您所见,特定文件(12)由该文件中的条目描述

  • 当您更改目录时:
(dvc3.7) ➜  repo$ echo 3 >> data/3 
(dvc3.7) ➜ repo$ dvc commit data.dvc

data.dvc的内容将被更新:

outs:
- md5: 12f4b7d54a32e58818e27fba28376fba.dir
path: data

缓存中有新文件:

├── 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):

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,因此必须随 dir md5 更改而更改

关于version-control - DVC 如何将目录级别的差异存储到 DVC 缓存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60527213/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com