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

How to use different remotes for different folders?

我希望我的数据和模型存储在单独的 Google 云存储桶中。这个想法是我希望能够在不共享模型的情况下与其他人共享数据。

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

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

您可以先添加不同的 DVC remotes you want to establish (let's say you call them data and models, each one pointing to a different GC bucket). But don't set any remote as the project's default; This way, dvc push 如果没有 -r(或 --remote)选项将无法工作。

然后您需要将每个目录或文件单独推送到适当的远程,例如 dvc push data/ -r datadvc push model.dat -r models

请注意,DVC 存储库中也存在配置此功能的功能请求。参见 Specify file types that can be pushed to remote

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

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

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

有了import,就不需要dvc push -r myremote了。默认 dvc push 在适当的远程同步数据。

已编辑:只需将一个 Git 存储库用于数据集及其 data-remote/S3-folder,然后使用代码、模型和另一个 data-remote/S3-folder.

从另一个存储库导入它