如何为不同的文件夹使用不同的遥控器?

Mic*_*vin 6 dvc

我希望我的数据和模型存储在单独的Google Cloud存储桶中。我的想法是,我希望能够与其他人共享数据而不共享模型。

我能想到的一个想法是对数据和模型使用单独的git子模块。但这感觉很麻烦,并给最终用户带来了一些额外的要求(例如,必须这样做git submodule update)。

那么我可以不使用git子模块来做到这一点吗?

Jor*_*nel 6

您可以首先添加要建立的不同的DVC远程控制器(假设您将其称为datamodels,每个都指向一个不同的GC存储桶)。但是不要将任何远程设置为项目的默认值;这样,dvc push如果没有-r(远程)选项,将无法使用。

然后,您就需要按每个DVC-文件分别到相应的远程一样dvc push -r data data.csv.dvcdvc push -r data features.dvcdvc push -r models model.pkl.dvc

如果您希望请求该功能以某种方式默认情况下将某些文件/目录映射到特定的DVC遥控器,则可以在https://github.com/iterative/dvc/issues中打开一个问题。
更新:实际上已经存在类似的文件(请参阅指定可以推送到remote的文件类型)。

  • 您可以将一些bash脚本或make文件包装在这些命令周围,以减少出错的可能性。 (2认同)

Dmi*_*rov 5

是的,您可以在没有 Git 子模块的情况下使用多个遥控器。

有一个单独的命令用于使用来自外部存储库的数据工件:dvc import http://your-repo datadir该命令将数据带到您的存储库并保持与原始存储库的连接(以避免在不同的远程服务器中重复数据)。

在您的情况下,一个存储库可用于具有自己的远程数据的数据集。第二个 repo 可能用于导入数据集项目的代码和模型,而它的所有模型和输出都转到另一个数据远程。

使用importdvc push -r myremote不需要。默认dvc push在适当的遥控器中同步数据。

编辑:只需将一个 Git 存储库用于数据集及其 data-remote/S3 文件夹,然后从另一个带有代码、模型和另一个数据远程/S3 文件夹的存储库中导入它。