Versionado de Datos y Modelos (DVC)
DVC versiona grandes conjuntos de datos y artefactos de modelos junto con el código de git. Las etapas de pipeline crean DAGs reproducibles que se vuelven a ejecutar solo cuando cambian las entradas.
Receta
dvc init
dvc add data/train.csv
git add data/train.csv.dvc .gitignore
dvc push # subir al almacenamiento remoto
dvc pull # descargar en otra máquinaEjemplo de Trabajo
# 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 # ejecutar pipeline, omitir etapas sin cambios
dvc metrics show # comparar métricas entre ramas de gitErrores Comunes
- Confirmar archivos grandes en git - hinchazón del repositorio. Solución:
dvc add+ almacenamiento remoto. - No configurar el remoto - los datos solo permanecen locales. Solución:
dvc remote add -d storage s3://bucket/dvc. - Pasos manuales del pipeline - no reproducibles. Solución: definir etapas en
dvc.yaml.
Alternativas
| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
| DVC | Equipos de ML centrados en Git | Flujos de trabajo que no usan Git |
| LakeFS | Versionado de data lakes | Proyectos simples de CSV |
| W&B Artifacts | Ecosistema de W&B | Control de datos autoalojado |
| Versionado manual de S3 | Herramientas mínimas | Necesidad de DAGs de pipeline |
Preguntas Frecuentes
¿DVC vs git-lfs?
DVC se integra con almacenamiento en la nube y pipelines de ML; git-lfs se almacena en el hosting de git.¿Cómo funciona dvc repro?
Comprueba los hashes de dependencias/salidas de la etapa; vuelve a ejecutar solo las etapas modificadas y las posteriores.¿Almacenamiento remoto?
S3, GCS, Azure, SSH - `dvc push`/`dvc pull` sincroniza.¿Seguimiento de métricas?
`metrics.json` rastreado por DVC; compara entre commits.¿Parámetros?
`params.yaml` rastreado; los cambios activan etapas posteriores.¿Con MLflow?
DVC versiona datos; MLflow rastrea experimentos - complementarios.¿Caché?
DVC almacena en caché las salidas localmente; evita la recomputación redundante.¿Ramificación de datos?
Diferentes ramas de git pueden apuntar a diferentes versiones de archivos .dvc.¿Archivo de bloqueo?
dvc.lock fija los hashes exactos de las salidas de la etapa.¿Monorepo?
DVC funciona por subdirectorio del proyecto.¿Secretos?
Credenciales remotas a través de variables de entorno o config.local (ignorado por git).¿CI/CD?
`dvc pull` en CI para obtener datos; `dvc repro` para entrenar.Relacionado
- Seguimiento de Experimentos
- Registros y Versionado de Modelos
- Mejores Prácticas de MLOps
- Git
- Mejores Prácticas de Machine Learning
Versiones de la pila: Esta página se escribió para Python 3.14.0 (estable 3.14, mantenimiento 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+ y uv 0.6+.