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.
steps:
- uses: actions/checkout@v4 # restores code + data pointers
- run: dvc pull # fetches the pinned data version
- run: python train.pyNota 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.