フォルダごとに異なるリモートを使用するにはどうすればよいですか?


8

データとモデルを別々のGoogle Cloudバケットに保存したい。モデルを共有せずに他の人とデータを共有できるようにしたいという考えです。

私が考えることができる1つのアイデアは、データとモデルに別々のgitサブモジュールを使用することです。しかし、それは煩わしく感じ、エンドユーザーにいくつかの追加の要件を課します(たとえば、実行する必要がありますgit submodule update)。

gitサブモジュールを使用せずにこれを行うことはできますか?

回答:


9

最初に、確立するさまざまなDVCリモートを追加できます(たとえば、それぞれを別のGCバケットを指すdataandと呼びます)。ただし、プロジェクトのデフォルトとしてリモートを設定しないでください。この方法では、(リモート)オプションがないと機能しません。modelsdvc 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で問題を開くことができます
更新:同様のものが既に存在しています(リモートにプッシュできるファイルの種類を指定するを参照)。


1
@ michael-litvinこの問題についてコメントしました。github.com/iterative/dvc/issues/2095#issuecomment-556126420を参照してください。その問題を購読したり、参加したりしてください。
ホルヘオーピネル

2
エラーが発生しにくくするために、bashスクリプトまたはmakeファイルをこれらのコマンドにラップすることができます。
Suor

1
@ jorge-orpinel、ありがとうございました!
Michael Litvin

5

はい、Gitサブモジュールなしで複数のリモートを使用できます。

外部リポジトリからのデータアーティファクトを使用するための別のコマンドがあります。dvc import http://your-repo datadirこのコマンドは、データをリポジトリに持ち込み、元のリポジトリへの接続を維持します(異なるリモートでのデータの重複を避けるため)。

あなたのケースでは、1つのリポジトリを独自のデータリモートを持つデータセットに使用できます。2番目のリポジトリは、データセットプロジェクトをインポートするコードとモデルに使用でき、モデルと出力はすべて別のデータリモートに送信されます。

ではimportdvc push -r myremote必要ありません。デフォルトdvc pushでは、適切なリモートでデータを同期します。

編集:data-remote / S3フォルダーを持つデータセットに対して1つのGitリポジトリを使用し、コード、モデル、および別のdata-remote / S3フォルダーを持つ別のリポジトリからインポートします。


私はいくつかのコード例で関連コメントを作成しました:github.com/iterative/dvc/issues/2095#issuecomment-560017410
Dmitry Petrov
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.