如何解决控制跟踪的外部依赖项版本 避免复制
我正在尝试建立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
驱动器小得多,并且其中一些数据集非常庞大。
解决方法
我认为您正在寻找data access组命令。
在您的特定情况下,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
,如Large Dataset Optimization中所述:
$ dvc config cache.type reflink,hardlink,symlink,copy
(有配置修饰符--global
,--local
,--system
可以一次为每个人或为一个项目等设置此设置)
查看详细说明here。
总体来说,这是一个很棒的设置,看起来您已经将所有事情都做好了。请不要犹豫,在这里继续跟进和/或提出其他问题-我们将为您提供帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。