在上一篇文章 快速入门DVC(三):数据与模型版本管理? 中,讲述了如何使用 DVC 跟踪数据和模型,以及如何将它们的版本中的元数据(.dvc )文件提交到 Git,通过 Git 来进行版本控制。
你可能会有如下的问题:
- 我们如何在项目之外使用这些制品?
- 我们如何下载模型来部署它?
- 我们如何下载特定版本的模型?
- 我们如何在不同的项目中重用数据集?
相信您已经迫不及待想知道答案了吧,那就让我们进入今天的主题:如何下载数据集与模型文件?
当您浏览 DVC 保存到远程存储的文件时,往往会遇到如下问题。比如:看到的文件路径为s3://dvc-public/remote/get-started/fb/89904ef053f04d64eafcc3d70db673 ,而不是原来的文件名,如model.pkl 或 data.xml 。
那我们应该如何使用 DVC 查找和访问模型和数据集呢?
还记得 dvc add 生成的那些 .dvc 文件吗? 这些文件在 Git 中有它们的历史记录。Git 中包含访问和下载任何版本的数据集、文件和模型所需的所有信息,并且 DVC 的远程存储配置也保存在 Git 中。 这意味着带有 DVC 元数据文件的 Git 存储库成为入口点,可以代替直接访问文件使用。
查找文件或目录(dvc list )
您可以使用 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 托管网站(如:GitHub)相比,此命令的好处在于该列表包含 Git 和 DVC 跟踪的文件和目录(您在 GitHub 上面是看不到 data.xml 文件的)。
下载数据集或模型(dvc get )
最简单的方法是使用 dvc get 下载数据。这在 DVC 项目环境之外工作时很有用,例如,在自动的进行机器学习模型部署的任务中。
dvc get https://github.com/iterative/dataset-registry \
use-cases/cats-dogs
如果在另一个 DVC 项目中工作时,这种方式并不是最佳策略,因为项目之间的连接丢失了(其他人不知道数据来自哪里或是否有新版本数据可用)。
导入文件或目录(dvc import )
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 远程Git存储库实际上并不包含 get-started/data.xml 文件。 与 dvc get 一样,dvc 从DVC远程数据存储库下载get-started/data.xml 文件。
dvc import 创建的 .dvc 文件具有特殊的字段,例如,在 deps 下存在数据源Git库信息(repo) 和 数据源路径(path),repo 下的 url 和 rev_lock 子字段分别用于保存依赖的来源(远程Git仓库URL)和版本(对应的Commit ID )。
+deps:
+- path: get-started/data.xml
+ repo:
+ url: https://github.com/iterative/dataset-registry
+ rev_lock: f31f5c4cdae787b4bdeb97a717687d44667d9e62
outs:
- md5: a304afb96060aad90176268345e10355
path: data.xml
使用 Python API 下载文件
除了上面的几种方式之外,我们还可以使用 DVC 的 Python API 将您的数据或模型直接集成到源代码中。这使您可以在运行时,直接从应用程序内部访问数据内容。
示例代码如下:
import dvc.api
with dvc.api.open(
'get-started/data.xml',
repo='https://github.com/iterative/dataset-registry'
) as fd:
总结
好了,今天讲述了如何使用dvc list 查看数据,以及使用dvc get 、dvc import 或Python API 来下载数据集或模型。快将其运用到我们的ML项目中来提升团队的开发效率吧。
参考文档
|