Data & Model Versioning (DVC)
O DVC versiona grandes conjuntos de dados e artefatos de modelo junto com o código git. Estágios de pipeline criam DAGs reproduzíveis que reexecutam apenas quando as entradas mudam.
Receita
dvc init
dvc add data/train.csv
git add data/train.csv.dvc .gitignore
dvc push # envia para o armazenamento remoto
dvc pull # baixa em outra máquinaExemplo de Trabalho
# dvc.yaml
stages:
prepare:
cmd: python src/prepare.py data/raw data/prepared
deps:
- src/prepare.py
- data/raw
outs:
- data/prepared/train.csv
train:
cmd: python src/train.py data/prepared/train.csv models/model.joblib
deps:
- src/train.py
- data/prepared/train.csv
outs:
- models/model.joblib
metrics:
- metrics.jsondvc repro train # executa o pipeline, pula estágios inalterados
dvc metrics show # compara métricas entre branches gitArmadilhas
- Commitar arquivos grandes no git - incha o repositório. Correção:
dvc add+ armazenamento remoto. - Não configurar o remoto - os dados permanecem apenas locais. Correção:
dvc remote add -d storage s3://bucket/dvc. - Etapas manuais do pipeline - não reproduzíveis. Correção: definir estágios em
dvc.yaml.
Alternativas
| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| DVC | Equipes de ML centradas em Git | Fluxos de trabalho sem Git |
| LakeFS | Versionamento de data lake | Projetos simples de CSV |
| W&B Artifacts | Ecossistema W&B | Controle de dados auto-hospedado |
| Versionamento manual de S3 | Ferramental mínimo | Necessidade de DAGs de pipeline |
FAQs
DVC vs git-lfs?
O DVC integra-se com armazenamento em nuvem e pipelines de ML; o git-lfs armazena no provedor de hospedagem git.Como funciona o dvc repro?
Verifica os hashes de dependências/saídas dos estágios; reexecuta apenas os estágios alterados e os downstream.Armazenamento remoto?
S3, GCS, Azure, SSH - `dvc push`/`dvc pull` sincroniza.Rastreamento de métricas?
`metrics.json` rastreado pelo DVC; compare entre commits.Parâmetros?
`params.yaml` rastreado; alterações disparam estágios downstream.Com MLflow?
O DVC versiona os dados; o MLflow rastreia experimentos - são complementares.Cache?
O DVC armazena as saídas em cache localmente; evita recomputação redundante.Branching de dados?
Diferentes branches git podem apontar para diferentes versões de arquivos .dvc.Arquivo de lock?
dvc.lock fixa os hashes exatos das saídas dos estágios.Monorepo?
O DVC funciona por subdiretório do projeto.Segredos?
Credenciais remotas via variáveis de ambiente ou config.local (ignorado pelo git).CI/CD?
`dvc pull` na CI para buscar dados; `dvc repro` para treinar.Relacionados
- Experiment Tracking
- Model Registries & Versioning
- MLOps Best Practices
- Git
- Machine Learning Best Practices
Versões da Stack: Esta página foi escrita para Python 3.14.0 (estável 3.14, manutenção 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+, e uv 0.6+.