微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

控制跟踪的外部依赖项版本 避免复制

如何解决控制跟踪的外部依赖项版本 避免复制

我正在尝试建立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 举报,一经查实,本站将立刻删除。