在 GitHub 上编辑

发现和访问数据

假设你已经了解了如何使用 DVC 来跟踪和管理数据版本,你可能会问:我们该如何在 DVC 项目之外访问和使用这些产物(artifacts)?如何下载一个模型用于部署?如何下载某个特定版本的模型?如何在不同项目之间复用数据集?

当你浏览 DVC 存储在远程存储中的文件时(例如看到的是 s3://dvc-public/remote/get-started/fb/89904ef053f04d64eafcc3d70db673 😱 而不是原始文件名如 model.pkldata.xml),这些问题就很容易出现。

点击播放即表示您同意 YouTube 的 隐私政策服务条款

还记得 .dvc 文件吗?它们是由 dvc add 生成的。这些文件(以及 dvc.lock)的历史记录保存在 Git 中。DVC 的远程存储配置也保存在 Git 里,并包含了访问和下载任意版本数据集、文件和模型所需的所有信息。这意味着,一个包含DVC 文件的 Git 仓库就变成了一个入口点,可以用来替代直接访问文件的方式。

查找文件或目录

你可以使用 dvc list 命令来浏览托管在任意 Git 服务器上的DVC 仓库。例如,我们来看看我们的 dataset-registry 仓库中 get-started/ 目录下有什么内容:

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

相比直接浏览 Git 托管网站,这个命令的优势在于列表中包含了由 Git 和 DVC 共同跟踪的文件和目录(如果你查看 GitHubdata.xml 是不可见的)。

下载

一种方法是直接使用 dvc get 下载数据。这在非DVC 项目环境中非常有用,比如在自动化机器学习模型部署任务中:

$ dvc get https://github.com/iterative/dataset-registry \
          use-cases/cats-dogs

然而,如果是在另一个 DVC 项目内部操作,这不是最佳策略,因为项目之间的关联会丢失——其他人将无法知道数据来源,也无法判断是否有新版本可用。

导入文件或目录

dvc import 同样可以下载任意文件或目录,同时还会创建一个 .dvc 文件(该文件可保存到项目中):

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

这类似于 dvc get + dvc add,但生成的 .dvc 文件包含元数据,用于追踪源仓库的变化。这使得你可以后续通过 dvc update 将数据源的更新同步进来。

dataset registry 仓库实际上并不包含 get-started/data.xml 这个文件。dvc importdvc get 一样,都是从远程存储下载数据。

dvc import 创建的 .dvc 文件包含一些特殊字段,例如数据源的 repopath(位于 deps 下):

+deps:
+- path: get-started/data.xml
+  repo:
+    url: https://github.com/iterative/dataset-registry
+    rev_lock: 96fdd8f12c14fa58a1b7354f15c7adb50e4e8542
 outs:
 - md5: 22a1a2931c8370d3aeedd7183606fd7f
   path: data.xml

repo 下的 urlrev_lock 子字段分别用于保存依赖项的来源和版本

Python API

您还可以使用 DVC 的Python API将数据或模型直接集成到源代码中。这使得您可以在运行时直接从应用程序中访问数据内容。例如:

import dvc.api

with dvc.api.open(
    'get-started/data.xml',
    repo='https://github.com/iterative/dataset-registry'
) as f:
    # f is a file-like object which can be processed normally

制品

您可以在 dvc.yamlartifacts 部分中为文件和目录添加别名和元数据。这有助于您更好地组织制品,并且可以使用 dvc artifacts getdvc.api.artifacts_show() 通过别名而非路径来检索它们。

模型/制品注册表

DVC Studio 模型注册表最初是为模型构建的,但由于 DVC 可以跟踪各种类型的文件,因此同样适用于其他类型的制品。请参阅我们的教程,了解如何使用注册表管理制品。

制品在模型注册表中会变得更加有用,其中可以通过 GTO 管理的 Git 标签注册语义化版本,并分配生命周期阶段(如 dev/test/prod)。这些标签让您在 Git 中完整记录模型的生命周期变化,并能够根据模型注册表中的变更触发 CI/CD 工作流。通过 [DVC Studio],您可以跨所有项目查看模型及其元数据,并能按名称、版本和生命周期阶段下载制品,而无需配置对底层 Git 仓库或远程存储的访问权限。

内容

🐛 发现问题?告诉我们!或者修复它:

在 GitHub 上编辑

有疑问?加入我们的聊天,我们会为您提供帮助:

Discord 聊天