2

我正在尝试为具有不同标记版本的数据集的机器学习数据设置 DVC 存储库。我这样做是这样的:

$ cd /raid/ml_data  # folder on a data drive
$ git init
$ dvc init
$ [add data]
$ [commit to dvc, git]
$ git tag -a 1.0.0
$ [add or change data]
$ [commit to dvc, git]
$ git tag -a 1.1.0

我有多个项目,每个项目都需要引用该数据集的某个版本。问题是我不知道如何设置这些项目以引用特定版本。我可以通过以下方式跟踪HEAD回购:

$ cd ~/my_proj  # different drive than the remote
$ mkdir data
$ git init
$ dvc init
$ dvc remote add -d local /raid/ml_data  # add the remote on my data drive
$ dvc cache dir /raid/ml_data/.dvc/cache  # tell DVC to use the remote cache
$ dvc checkout
$ dvc run --external -d /raid/ml_data -o data/ cp -r /raid/ml_data data

这让我获得了最新版本的数据集,符号链接到我的data文件夹中,但是如果我希望一些项目使用该1.0.0版本,而一些项目使用该1.1.0版本,或者另一个版本怎么办?或者就此而言,如果我将数据集更新为2.0.0但不希望我现有的项目必须跟踪HEAD并保留设置它们的版本?

不要为我的数据集创建大量本地副本对我来说很重要,因为/home驱动器比驱动器小得多,/raid而且其中一些数据集很大。

4

1 回答 1

1

我认为您正在寻找数据访问命令集。

在您的特定情况下,dvc import这是有道理的:

$ dvc import /raid/ml_data data

如果您想获得最新版本(HEAD)。然后您将能够使用dvc update命令更新它(例如,如果发布了 2.0.0)。

$ dvc import /raid/ml_data data --rev 1.0.0

如果您想将其“修复”到特定版本。

避免复制

还要确保symlinks为第二个项目设置,如大数据集优化中所述:

$ dvc config cache.type reflink,hardlink,symlink,copy

(有配置修饰符--global, --local,--system可以一次为每个人设置此设置,或者只为一个项目设置,等等)

在此处查看详细说明。


总的来说,这是一个很棒的设置,看起来你几乎一切都做对了。请不要犹豫,在此处跟进和/或提出其他问题 - 我们将帮助您解决此问题。

于 2020-11-02T21:12:41.433 回答