控制外部依赖的跟踪版本
Control tracked version of external dependency
我正在尝试为具有不同标记版本的数据集的机器学习数据设置 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.
总的来说,这是一个很棒的设置,看起来你几乎一切都正确。请不要犹豫,跟进 and/or 在此处创建其他问题 - 我们会帮助您。
我正在尝试为具有不同标记版本的数据集的机器学习数据设置 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.
总的来说,这是一个很棒的设置,看起来你几乎一切都正确。请不要犹豫,跟进 and/or 在此处创建其他问题 - 我们会帮助您。