Tutorial Lengkap DVC: Git untuk Data dan Model Machine Learning
DVC (Data Version Control) adalah open-source tool yang memperluas Git untuk menangani data, model, dan eksperimen ML. Dengan DVC, Anda dapat melakukan version control pada dataset besar dan model tanpa menyimpannya langsung di Git repository.
Mengapa DVC?
Masalah umum dalam ML projects:
- Large files: Git tidak efisien untuk file besar (datasets, models)
- Reproducibility: Sulit mereproduksi eksperimen tanpa tracking data version
- Collaboration: Berbagi dataset besar antar tim sulit
- Storage: Dataset besar memakan space di Git repository
- Version control untuk data dan model
- Remote storage (S3, GCS, Azure, SSH)
- Pipeline reproducibility
- Experiment tracking
- Integrasi seamless dengan Git
Instalasi
# Install DVC
pip install dvc
Install dengan remote storage support
pip install "dvc[s3]" # AWS S3
pip install "dvc[gs]" # Google Cloud Storage
pip install "dvc[azure]" # Azure Blob Storage
pip install "dvc[ssh]" # SSH/SFTP
pip install "dvc[all]" # Semua remotes
Verify installation
dvc version
Quick Start
1. Initialize DVC
# Pastikan sudah di Git repository
git init
dvc init
DVC akan membuat:
- .dvc/ directory
- .dvcignore file
git status
.dvc/.gitignore
.dvc/config
.dvcignore
git add .dvc .dvcignore
git commit -m "Initialize DVC"
2. Track Data Files
# Tambahkan file data ke DVC
dvc add data/dataset.csv
DVC akan membuat:
- data/dataset.csv.dvc (metadata file)
- Update .gitignore
Add .dvc file ke Git
git add data/dataset.csv.dvc data/.gitignore
git commit -m "Add dataset"
Untuk folder
dvc add data/images/
git add data/images.dvc data/.gitignore
git commit -m "Add images folder"
3. Setup Remote Storage
# AWS S3
dvc remote add -d myremote s3://mybucket/dvc-storage
Google Cloud Storage
dvc remote add -d myremote gs://mybucket/dvc-storage
Azure Blob Storage
dvc remote add -d myremote azure://mycontainer/dvc-storage
Local/Network storage
dvc remote add -d myremote /path/to/storage
SSH
dvc remote add -d myremote ssh://user@server/path/to/storage
Commit remote config
git add .dvc/config
git commit -m "Configure remote storage"
4. Push dan Pull Data
# Push data ke remote
dvc push
Pull data dari remote
dvc pull
Push/pull specific file
dvc push data/dataset.csv.dvc
dvc pull data/dataset.csv.dvc
Working with Data Versions
1. Update Data
# Setelah data berubah
dvc add data/dataset.csv
git add data/dataset.csv.dvc
git commit -m "Update dataset v2"
dvc push
2. Switch Data Versions
# Checkout ke versi sebelumnya
git checkout HEAD~1 data/dataset.csv.dvc
dvc checkout
Kembali ke latest
git checkout HEAD data/dataset.csv.dvc
dvc checkout
3. View Data History
# Lihat history
git log --oneline data/dataset.csv.dvc
Diff antara versi
dvc diff HEAD~1
Metrics diff
dvc metrics diff HEAD~1
DVC Pipelines
1. Membuat Pipeline
Pipeline didefinisikan dalam dvc.yaml:
# dvc.yaml
stages:
prepare:
cmd: python src/prepare.py
deps:
- src/prepare.py
- data/raw/
outs:
- data/processed/
train:
cmd: python src/train.py
deps:
- src/train.py
- data/processed/
params:
- train.nestimators
- train.maxdepth
outs:
- models/model.pkl
metrics:
- metrics/trainmetrics.json:
cache: false
evaluate:
cmd: python src/evaluate.py
deps: