¿Cómo usar diferentes controles remotos para diferentes carpetas?

8

Quiero que mis datos y modelos se almacenen en cubos separados de Google Cloud. La idea es que quiero poder compartir los datos con otros sin compartir los modelos.

Una idea que se me ocurre es usar submódulos git separados para datos y modelos. Pero eso se siente engorroso e impone algunos requisitos adicionales del usuario final (por ejemplo, tener que hacerlo git submodule update).

Entonces, ¿puedo hacer esto sin usar submódulos git?

Michael Litvin
fuente

Respuestas:

9

Primero puede agregar los diferentes controles remotos DVC que desea establecer (digamos que los llama datay models, cada uno apuntando a un depósito GC diferente ). Pero no establezca ningún control remoto como predeterminado del proyecto ; De esta manera, dvc pushno funcionará sin la -ropción (remota).

A continuación, tendría que empujar cada DVC-archivo de forma individual a la distancia adecuado, como dvc push -r data data.csv.dvc, dvc push -r data features.dvc, y dvc push -r models model.pkl.dvc.

Si desea solicitar la función para de alguna manera asignar ciertos archivos / directorios con controles remotos DVC específicos de forma predeterminada, puede abrir un problema en https://github.com/iterative/dvc/issues .
ACTUALIZACIÓN: ya existe uno similar (consulte Especificar tipos de archivo que se pueden enviar a remoto ).

Jorge Orpinel
fuente
1
@ michael-litvin He comentado sobre el tema para usted. Ver: github.com/iterative/dvc/issues/2095#issuecomment-556126420 . Siéntase libre de suscribirse a ese problema y / o participar.
Jorge Orpinel
2
Puede ajustar algunos scripts de bash o un archivo make alrededor de esos comandos para que sean menos propensos a errores.
Suor
1
Gracias @ jorge-orpinel!
Michael Litvin
5

Sí, puede usar múltiples controles remotos sin submódulos Git.

Hay un comando separado para usar artefactos de datos de repositorios externos: dvc import http://your-repo datadirel comando trae datos a su repositorio y mantiene la conexión con el repositorio original (para evitar la duplicación de datos en diferentes controles remotos).

En su caso, se puede usar un repositorio para un conjunto de datos con su propio control remoto de datos. Se puede usar un segundo repositorio para el código y los modelos que importan el proyecto de conjunto de datos, mientras que todos sus modelos y salidas se dirigen a otro control remoto de datos.

Con import, no dvc push -r myremotese necesitan. Una dvc pushsincronización predeterminada de datos en un control remoto adecuado.

EDITADO: Simplemente use un repositorio de Git para el conjunto de datos con su carpeta de datos remotos / S3 e impórtelo desde otro repositorio con código, modelo y otra carpeta de datos remotos / S3.

Dmitry Petrov
fuente
Hice un comentario relacionado con algunos ejemplos de código: github.com/iterative/dvc/issues/2095#issuecomment-560017410
Dmitry Petrov el