Skip to content
Latchkey

O Que É Versionamento de Dados? Rastreamento de Versões de Datasets Explicado

Versionamento de dados é a prática de rastrear mudanças em datasets ao longo do tempo para que qualquer experimento possa ser reproduzido com os dados exatos que ele usou.

Código sem controle de versão é impensável, e ainda assim muitas equipes de ML sobrescrevem seus datasets no lugar e perdem a capacidade de reproduzir resultados anteriores. O versionamento de dados traz um histórico ao estilo Git para os dados: todo estado significativo de um dataset se torna uma versão referenciável.

O que é versionamento de dados

O versionamento de dados registra o estado de um dataset em pontos no tempo e permite recuperar qualquer versão anterior por referência. Como os datasets são grandes, as ferramentas geralmente armazenam um pequeno ponteiro ou hash no Git e mantêm os bytes reais em object storage, buscando-os sob demanda.

Por que isso importa para a reprodutibilidade

Um modelo é uma função de seus dados de treinamento. Se os dados mudam silenciosamente, o mesmo código produz um modelo diferente e você não consegue dizer por quê. Dados versionados permitem fixar um experimento a um snapshot exato, de modo que "reexecute isto e obtenha o mesmo resultado" realmente se mantenha.

Como é implementado

Ferramentas como DVC, lakeFS e Git LFS mantêm dados grandes fora do Git enquanto rastreiam seus metadados de versão no Git. Um commit então captura tanto o código quanto a versão dos dados juntos, de modo que fazer checkout de um commit lhe dá um estado totalmente consistente.

Dados versionados no CI

Em um pipeline, um checkout restaura o código e um pull de dados restaura a versão correspondente do dataset, garantindo que o job treine exatamente com os dados pretendidos.

Restoring a pinned dataset in CI
steps:
  - uses: actions/checkout@v4   # restores code + data pointers
  - run: dvc pull               # fetches the pinned data version
  - run: python train.py

Nota da Latchkey

Datasets costumam ter muitos gigabytes, então re-fazer pull deles a cada execução é lento e caro. Na Latchkey você pode fazer cache de dados versionados pelo seu hash de conteúdo para que execuções repetidas na mesma versão acertem o cache, e o auto-retry se recupera de falhas transitórias do object storage durante um pull.

Principais conclusões

  • O versionamento de dados rastreia o estado de um dataset ao longo do tempo para que qualquer experimento possa ser reproduzido com seus dados exatos.
  • As ferramentas mantêm dados grandes em object storage e pequenos ponteiros de versão no Git para consistência com o código.
  • Fazer cache de dados versionados por hash de conteúdo torna a reprodução de execuções anteriores no CI rápida e barata.

Guias relacionados