Como usar controles remotos diferentes para pastas diferentes?

8

Quero que meus dados e modelos sejam armazenados em intervalos separados do Google Cloud. A idéia é que eu quero compartilhar os dados com outras pessoas sem compartilhar os modelos.

Uma idéia em que posso pensar é usar sub-módulos git separados para dados e modelos. Mas isso parece complicado e impõe alguns requisitos adicionais ao usuário final (por exemplo, ter que fazer git submodule update).

Então, eu posso fazer isso sem usar sub-módulos git?

Michael Litvin
fonte

Respostas:

9

Você pode primeiro adicionar os diferentes controles remotos do DVC que deseja estabelecer (digamos que você os chame datae models, cada um apontando para um intervalo diferente do GC ). Mas não defina nenhum controle remoto como o padrão do projeto ; Dessa forma, dvc pushnão funcionará sem a -ropção (remota).

Você, então, precisa empurrar cada DVC-arquivo individualmente para o controle remoto apropriado, como dvc push -r data data.csv.dvc, dvc push -r data features.dvc, e dvc push -r models model.pkl.dvc.

Se você desejar solicitar que o recurso mapeie de alguma forma certos arquivos / diretórios com controles remotos específicos do DVC por padrão, poderá abrir um problema em https://github.com/iterative/dvc/issues .
ATUALIZAÇÃO: Já existe um semelhante (consulte Especificar tipos de arquivos que podem ser enviados por push para remoto ).

Jorge Orpinel
fonte
1
@ Michael-litvin Comentei sobre o assunto para você. Consulte: github.com/iterative/dvc/issues/2095#issuecomment-556126420 . Sinta-se livre para assinar esse problema e / ou participar.
Jorge Orpinel
2
Você pode agrupar alguns scripts bash ou criar um arquivo em torno desses comandos para torná-los menos propensos a erros.
Suor
1
Obrigado @ jorge-orpinel!
Michael Litvin
5

Sim, você pode usar vários controles remotos sem submódulos Git.

Existe um comando separado para usar artefatos de dados de repositórios externos: dvc import http://your-repo datadirO comando traz dados para o seu repositório e mantém a conexão com o repositório original (para evitar duplicação de dados em diferentes remotos).

No seu caso, um repositório pode ser usado para um conjunto de dados com seus próprios dados remotos. Um segundo repositório pode ser usado para o código e modelos que importam o projeto do conjunto de dados, enquanto todos os seus modelos e saídas vão para outro controle remoto de dados.

Com import, não dvc push -r myremotesão necessários. Um padrão dvc pushsincroniza os dados em um controle remoto adequado.

EDITADO: Simplesmente use um repositório Git para conjunto de dados com sua pasta S3 / remote de dados e importe-o de outro repositório com código, modelo e outra pasta S3 / data-remote.

Dmitry Petrov
fonte
Fiz um comentário relacionado com alguns exemplos de código: github.com/iterative/dvc/issues/2095#issuecomment-560017410
Dmitry Petrov