Como versionar arquivos grandes?

Com o DVC, versionar grandes volumes de dados nunca foi tão simples!

Vimos no mês passado a importância de se versionar código e exploramos o GitLab, uma plataforma para desenvolvimento e colaboração (vepost), e seus principais comandos (ver post).

Porém, se você trabalha com dados ou inteligência artificial, provavelmente já se deparou com desafios relacionados ao versionamento de dados e modelos de IA.

Muitas vezes, o processo de gerenciar mudanças em grandes volumes de dados ou manter a integridade dos modelos é complicado, mas o DVC (Data Version Control) surge como uma solução poderosa para esses problemas.

DVC é uma ferramenta de código aberto (Github) que oferece uma maneira eficiente e simples de versionar dados e modelos, além de automatizar o processo de pipeline de dados.

Essa ferramenta é especialmente útil em ambientes colaborativos, pois permite que você compartilhe e controle versões de dados de maneira eficaz, assim como o Git faz com o código.

Por Que Usar o DVC?

Embora Git seja uma ferramenta fantástica para versionar código, ela não é ideal para grandes volumes de dados, como conjuntos de dados de treinamento ou modelos de machine learning, por várias razões:

  • Limitações de ArmazenamentoGit não lida bem com arquivos grandes e binários, pois os mantém no repositório, o que aumenta o tamanho do repositório e dificulta a gestão de versões.
  • Desempenho: A cada modificação em um grande arquivo de dados, o Git armazena uma nova cópia do arquivo completo, o que pode tornar o processo muito lento e ineficiente.

DVC fornece uma solução especializada para versionamento desses dados, permitindo que você versionifique grandes arquivos de dados e modelos sem sobrecarregar o repositório Git.

Principais Benefícios do DVC

  1. Versionamento de Dados com Facilidade: Semelhante ao Git, o DVC permite que você versionifique grandes conjuntos de dados, mantendo o controle sobre alterações sem perder o histórico. Isso ajuda a evitar erros e facilita o trabalho em equipe.
  2. Reprodutibilidade de Experimentos: O DVC facilita a reprodutibilidade de experimentos, uma prática fundamental na ciência de dados e no desenvolvimento de IA. Com ele, você pode facilmente compartilhar o estado de seu projeto, garantir que os outros repliquem os mesmos resultados e acompanhar as mudanças ao longo do tempo.
  3. Integração com Git: O DVC integra-se ao Git, o que significa que você pode continuar usando as ferramentas que já conhece enquanto gerencia dados e modelos. Ele funciona de forma simples e intuitiva, sem a necessidade de aprender algo completamente novo.
  4. Automatização e Pipelines de Dados: O DVC não só ajuda no versionamento de dados, mas também oferece uma maneira de criar pipelines de dados que automatizam tarefas repetitivas e otimizam fluxos de trabalho.
  5. Trabalho Colaborativo: O DVC facilita o trabalho em equipe, permitindo que várias pessoas colaborem em um mesmo projeto sem problemas de versão ou integridade dos dados. Ele mantém os dados centralizados e acessíveis a todos, permitindo a colaboração sem complicações.

DVC x Git

DVC foi criado para complementar o Git, introduzindo o conceito de versionamento de dados. Isso permite o controle de grandes arquivos que não devem ser armazenados diretamente em um repositório Git, mas que ainda precisam ser rastreados e versionados. Ele aproveita os recursos do Git para gerenciar diferentes versões de dados, pipelines de dados e experimentos.

Embora o DVC funcione bem com o Gitnão é obrigatório usá-lo junto. O DVC pode operar de forma independente, exceto para funcionalidades relacionadas ao versionamento.

DVC Não Substitui o Git!

DVC utiliza metaarquivos como dvc.yaml e arquivos .dvc, que atuam como referências para versionar dados e pipelines de machine learning. Esses arquivos acompanham as mudanças nos seus dados e podem ser colocados sob controle de versão no Git.

Assim, o Git atua como um proxy para os dados reais, que são armazenados em cache fora do Git.

Comandos Similares ao Git

DVC oferece comandos que lembram os comandos do Git, como:

  • dvc init – Inicializa um repositório DVC.
  • dvc add – Adiciona arquivos grandes ao controle do DVC.
  • dvc checkout – Restaura arquivos versionados com o DVC.
  • dvc push – Envia dados para um armazenamento remoto.

Esses comandos interagem com o repositório Gitse você estiver usando um, mas o Git não é necessário para usar o DVC. O DVC, portanto, expande as funcionalidades do Git, mas mantém seu foco principal no controle eficiente de dados e experimentos.

A integração do DVC com o Git torna o gerenciamento de dados e código mais eficiente e colaborativo!

Como Usar o DVC?

1. Instale o DVC

A primeira etapa é instalar o DVC. Isso pode ser feito facilmente com o seguinte comando:

pip install dvc

2. Inicialize o Repositório

Depois de instalar, crie um repositório DVC no seu projeto com:

dvc init

Para usar o DVC junto com o git, no mesmo diretório execute:

git init

3. Versionamento de Dados

Para começar a versionar dados, basta usar o comando dvc add:

dvc add <seu_arquivo>

4. Commitando as Mudanças

Após adicionar os dados com o DVC, você precisa adicionar os arquivos modificados ao Git e fazer um commit, assim como faria com o código:

git add .  # Adiciona os arquivos de dados e de controle do DVC
git commit -m "Adicionando dados ao projeto"

# Adiciona o arquivo DVC no git e atualiza .gitignore
git add <seu_arquivo>.dvc .gitignore 

5. Armazenando Dados em um Repositório Remoto

Para compartilhar seus dados e modelos, você pode usar um armazenamento remoto, como S3, Google Drive, ou outros serviços. Configure um repositório remoto com o comando:

dvc remote add -d myremote <URL_do_armazenamento>
dvc push  # Envia os dados para o repositório remoto

6. Trabalhando com Dados de Forma Colaborativa

Quando outra pessoa do seu time precisar acessar os dados, ela pode simplesmente usar o comando dvc pull para baixar os dados do repositório remoto:

dvc pull  # Baixa os dados para o repositório local

7. Automatizando Pipelines com DVC

Além do versionamento de dados, o DVC também permite criar pipelines automatizados para seu fluxo de trabalho. Isso é útil para processar dados, treinar modelos e fazer ajustes automaticamente. Para definir um pipeline, você pode usar o comando dvc run:

dvc run -n treino_modelo -d dados -o modelo python treino.py

Isso cria um pipeline que executa o script treino.py, usando os dados como entrada e gerando um modelo como saída.

Conclusão

DVC pode ser uma ferramenta poderosa para toda(o)s que trabalham com dados e IA, tornando a gestão de projetos mais eficiente, colaborativa e reprodutível.

Ao integrar o DVC ao seu fluxo de trabalho, você pode se concentrar no que realmente importa: inovar e criar soluções que transformem o mundo da tecnologia.

Se você ainda não começou a usar o DVC, este é o momento perfeito para explorar seu potencial e otimizar seu trabalho.

Vamos seguir aprendendo e crescendo na área de tecnologia!

Link blog: Como versionar arquivos grandes? – Mulheres Programando