发现和访问数据
假设你已经了解了如何使用 DVC 来跟踪和管理数据版本,你可能会问:我们该如何在 DVC 项目之外访问和使用这些产物(artifacts)?如何下载一个模型用于部署?如何下载某个特定版本的模型?如何在不同项目之间复用数据集?
当你浏览 DVC 存储在远程存储中的文件时(例如看到的是 s3://dvc-public/remote/get-started/fb/89904ef053f04d64eafcc3d70db673
😱 而不是原始文件名如 model.pkl
或 data.xml
),这些问题就很容易出现。
还记得 .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 共同跟踪的文件和目录(如果你查看 GitHub,data.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 import
和 dvc get
一样,都是从远程存储下载数据。
由 dvc import
创建的 .dvc
文件包含一些特殊字段,例如数据源的 repo
和 path
(位于 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
下的 url
和 rev_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.yaml
的 artifacts 部分中为文件和目录添加别名和元数据。这有助于您更好地组织制品,并且可以使用 dvc artifacts get
和 dvc.api.artifacts_show()
通过别名而非路径来检索它们。
模型/制品注册表
DVC Studio 模型注册表最初是为模型构建的,但由于 DVC 可以跟踪各种类型的文件,因此同样适用于其他类型的制品。请参阅我们的教程,了解如何使用注册表管理制品。
制品在模型注册表中会变得更加有用,其中可以通过 GTO 管理的 Git 标签注册语义化版本,并分配生命周期阶段(如 dev
/test
/prod
)。这些标签让您在 Git 中完整记录模型的生命周期变化,并能够根据模型注册表中的变更触发 CI/CD 工作流。通过 [DVC Studio],您可以跨所有项目查看模型及其元数据,并能按名称、版本和生命周期阶段下载制品,而无需配置对底层 Git 仓库或远程存储的访问权限。