DVC 使用指南:项目结构中.dvc文件详解

932 阅读4分钟

这是我参与2022首次更文挑战的第21天,活动详情查看:2022首次更文挑战

您可以使用 dvc add 来跟踪位于当前工作空间中的数据文件或目录。 此外,dvc importdvc import-url 允许您将数据从外部的位置带到您的项目,并开始在本地跟踪它。

.dvc 扩展名结尾的文件由这些命令创建为可以使用 Git 进行版本控制的数据占位符。 它们包含随时跟踪目标数据所需的信息。

示例如下:

outs:
  - md5: a304afb96060aad90176268345e10355
    path: data.xml
    desc: Cats and dogs dataset
    remote: myremote

# 支持撰写评论和用户元数据信息
meta:
  name: 'Devee Bird'
  email: devee@dvc.org

这些文件也是使用 YAML 1.2 文件格式。 我们鼓励您熟悉它,以便您可以自行修改、编写或生成 .dvc 文件。

规格(Specification)说明

这些是 .dvc 文件纲要(schema)中的根级别接受的字段,可以使用#进行注释。

字段描述
outs(必须的) 表示DVC 跟踪的文件或目录的 输出条目(详情如下所示) 列表。 通常只有一个(但可以手动添加或组合几个)。
deps依赖条目 (详情如下所示) 的列表。 仅在使用 dvc importdvc import-url 生成此 .dvc 文件时出现。 通常只有一个(但可以手动添加几个)。
wdiroutsdeps 路径的工作目录(相对于 .dvc 文件的位置)。文件的位置默认为.
md5(仅适用于导入).dvc 文件本身的 MD5 哈希。
meta(可选的) 可以使用此字段手动添加任意用户元数据。支持任何的 YAML 内容。 meta 内容会被 DVC 忽略。

注意:dvc reprodvc commit 的执行中保留meta字段和 # 注释,但在文件被 dvc adddvc movedvc importdvc import-url 重写时,不会保留。

输出条目(Output entries)说明

以下子字段可能出现在 outs 条目下:

字段描述
path(必须的) 文件或目录的路径(相对于wdir,默认为文件的位置)
md5etagchecksum使用 DVC 跟踪的文件或目录的哈希值。 MD5 用于大多数位置(本地文件系统和 SSH); ETag 用于 HTTPS3Azure ;以及特殊的checksum用于 HDFSWebHDFS
size文件或目录的大小(所有文件的总和)。
nfiles如果这个依赖是一个目录,则表示里面文件的数目(递归)。
isexec是否是可执行文件。 DVC 保留在 dvc checkoutdvc pull 上的执行权限 。 这对目录没有影响,或者通常对 Windows 没有影响。
cache是否缓存此文件或目录(默认为“true”)。 请参阅 dvc add 命令的--no-commit 选项。
remote(可选的) 用于pushfetch时,远程数据存储的名称。
persistdvc repro 运行时输出文件/目录是否应保留在原位(默认情况下为"false",当dvc repro 启动时,会删除输出)。
desc(可选的) 输出的用户描述(在指标和图表中也支持)。 这个不会影响任何 DVC 操作。

依赖条目(Dependency entries)说明

deps 条目下可能存在以下子字段:

字段描述
path(必须的) 依赖(dependency)的路径(相对于wdir,默认为文件的位置)
md5etagchecksum仅在使用 dvc import-url 创建的外部依赖中:导入文件或目录的哈希值。 MD5 用于本地路径和 SSH; ETag 用于 HTTPS3GCSAzure; 以及特殊的checksum用于 HDFSWebHDFS
size文件或目录的大小(所有文件的总和)。
nfiles如果这个依赖是一个目录,则表示里面文件的数目(递归)。
repo仅在使用 dvc import 创建的外部依赖中:它可以包含 urlrevrev_lock(详情如下所示)。

依赖条目(deps )下 repo 子字段说明

字段描述
url带有源 DVC 项目的 Git 存储库的 URL
rev仅当使用 dvc import --rev 时:用于导入依赖的特定提交哈希、分支或Tag名称等(就像Git revision一样)。
rev_lock导入或更新依赖时(使用 dvc update),外部 DVC 存储库的 Git 提交(commit)哈希