Wie verwende ich verschiedene Fernbedienungen für verschiedene Ordner?

8

Ich möchte, dass meine Daten und Modelle in separaten Google Cloud-Buckets gespeichert werden. Die Idee ist, dass ich die Daten mit anderen teilen möchte, ohne die Modelle zu teilen.

Eine Idee, die ich mir vorstellen kann, ist die Verwendung separater Git-Submodule für Daten und Modelle. Dies fühlt sich jedoch umständlich an und stellt einige zusätzliche Anforderungen an den Endbenutzer (z. B. müssen git submodule update).

Kann ich das also ohne Git-Submodule tun?

Michael Litvin
quelle

Antworten:

9

Sie können zuerst die verschiedenen DVC-Fernbedienungen hinzufügen, die Sie einrichten möchten (sagen wir, Sie rufen sie auf dataund modelsjede zeigt auf einen anderen GC-Bucket ). Legen Sie jedoch keine Fernbedienung als Standard für das Projekt fest . Auf diese Weise dvc pushfunktioniert dies nicht ohne die -rOption (Remote).

Sie würden dann jedes drücken müssen DVC-Datei individuell auf die entsprechende Fernbedienung, wie dvc push -r data data.csv.dvc, dvc push -r data features.dvcund dvc push -r models model.pkl.dvc.

Wenn Sie die Funktion anfordern möchten, bestimmte Dateien / Verzeichnisse standardmäßig bestimmten DVC-Fernbedienungen zuzuordnen, können Sie ein Problem unter https://github.com/iterative/dvc/issues öffnen .
UPDATE: Ein ähnliches ist bereits vorhanden (siehe Angeben von Dateitypen, die auf Remote übertragen werden können ).

Jorge Orpinel
quelle
1
@ Michael-Litvin Ich habe das Thema für Sie kommentiert. Siehe: github.com/iterative/dvc/issues/2095#issuecomment-556126420 . Fühlen Sie sich frei, dieses Problem zu abonnieren und / oder teilzunehmen.
Jorge Orpinel
2
Sie können einige Bash-Skripte oder eine make-Datei um diese Befehle wickeln, um sie weniger fehleranfällig zu machen.
Suor
1
Danke @ jorge-orpinel!
Michael Litvin
5

Ja, Sie können mehrere Fernbedienungen ohne Git-Submodule verwenden.

Es gibt einen separaten Befehl zum Verwenden von Datenartefakten aus externen Repositorys: dvc import http://your-repo datadirDer Befehl bringt Daten in Ihr Repo und behält die Verbindung zum ursprünglichen Repo bei (um Datenverdopplungen in verschiedenen Fernbedienungen zu vermeiden).

In Ihrem Fall kann ein Repository für ein Dataset mit einer eigenen Datenfernbedienung verwendet werden. Ein zweites Repo kann für den Code und die Modelle verwendet werden, die das Dataset-Projekt importieren, während alle Modelle und Ausgaben an eine andere Datenfernbedienung gesendet werden.

Mit importwerden keine dvc push -r myremotebenötigt. Standardmäßig werden dvc pushDaten auf einer geeigneten Fernbedienung synchronisiert.

BEARBEITET: Verwenden Sie einfach ein Git-Repo für ein Dataset mit seinem Ordner data-remote / S3 und importieren Sie es aus einem anderen Repo mit Code, Modell und einem anderen Ordner data-remote / S3.

Dmitry Petrov
quelle
Ich habe einen ähnlichen Kommentar mit einigen Codebeispielen abgegeben: github.com/iterative/dvc/issues/2095#issuecomment-560017410
Dmitry Petrov