DVC: Data Version Control for ML Projects & Pipelines
DVC is Git for data and ML pipelines. Track large datasets, models, and experiments with the same Git workflow you already know โ store the files in S3/GCS while committing lightweight pointers to your repo.
Related Products
on GumroadDeveloper Productivity Bundle
Stop rebuilding the same setup every project. 51 VSCode snippets, 40 Git aliases, 5 Docker Compose stacks, 5 GitHub Actions workflows, 5 README templates, and a dotfiles kit. Set up a professional dev environment in under an hour.
Buy on Gumroad โAI Prompt Engineering Toolkit
58 structured prompt templates for Claude, ChatGPT, and Gemini โ organized by use case. Code Review, Debugging, Documentation, Architecture, and 10 model-specific tips. Stop writing prompts from scratch.
Buy on Gumroad โDeveloper Cheat Sheet Bundle
10 print-ready cheat sheets for the tools developers use every day: Git, Docker, Linux CLI, SQL, Regex, HTTP Status codes, VS Code shortcuts, Bash scripting, jq/JSON, and Markdown.
Buy on Gumroad โYou Might Also Need
JSON Formatter & Validator
Format, beautify, and validate JSON online. Paste your JSON to instantly pretty-print it with 2-space, 4-space, or tab indentation. Minify JSON too. Free, runs in your browser.
Open free tool โ
Regex Tester
Free regex tester. Test regular expressions against multiple strings with expected match/no-match assertions โ see instant pass/fail results. Built-in presets for email, URL, IPv4, and phone. Pro: unl
Open free tool โ
Base64 Encoder & Decoder
Free Base64 Encoder & Decoder. Convert text, images, and any file to Base64 and back. Supports URL-safe Base64, image data URIs, and file download from Base64. Runs 100% in your browser โ no data sent
Open free tool โ
More Free Tools
Related Articles
curl ๆทฑๅบฆไฝฟ็จๆๅ๏ผAPI ๆธฌ่ฉฆๅพๅ ฅ้ๅฐ้ฒ้
curl ๆฏๆฏไฝ้็ผ่ ๅฟ ๅ็ CLI ๅทฅๅ ทใๆฌๆๆถต่ GET/POST/PUT/DELETE ่ซๆฑใ่ช่ญใheader ่จญๅฎใๆชๆกไธๅณใ้ค้ฏๆๅทง๏ผไปฅๅ REST API ๆธฌ่ฉฆ็ๅฎๆดๅฏฆๆฐ็ฏไพใ
Best AI Code Review Tools 2026: CodeRabbit, Sourcery, DeepCode & Bito Compared
Compare top AI code review tools for 2026: CodeRabbit, Sourcery, DeepCode, and Bito. Features, pricing, GitHub/GitLab integration, and choosing the right tool for your team.
AI Code Review Tools 2026: GitHub Copilot, CodeRabbit, Qodo Merge Ranked
Compare AI code review tools for 2026: GitHub Copilot code review, CodeRabbit, Qodo Merge, Sourcery, and PR-Agent. Pricing, accuracy, and GitHub integration.
AI Coding Tools Comparison 2026: GitHub Copilot vs Cursor vs Windsurf vs Cline
Comprehensive comparison of the best AI coding tools in 2026: GitHub Copilot, Cursor, Windsurf, and Cline. Pricing, features, model support, and real-world benchmarks.
AI Pair Programming in 2026: GitHub Copilot vs Cursor vs Claude Code
Master AI pair programming in 2026. Compare GitHub Copilot, Cursor, and Claude Code for autocomplete, chat, and agentic workflows. Includes setup guides and productivity tips.
Enjoying this tool? Get more like it.
Weekly developer tool guides, productivity playbooks & AI tricks. Free. No spam.
Unlock AI-Powered Dev Tools
- โก AI Code Review, Doc Generator & SQL Builder
- โก All premium templates & early access
- โก Member discounts on Gumroad products
$9/mo after trial ยท Cancel anytime
Want the full toolkit?
Get DevPlaybook Pro
Every template, guide, boilerplate, and automation script in one bundle. 13 premium products โ grab them all at once and save big.
MIT licensed ยท Instant download ยท No subscription
See what's included โ Browse all deals โInitialize DVC & Track Data Files
Install with pip install dvc[s3], then add DVC to an existing Git repo:
# Initialize DVC (creates .dvc/ directory alongside .git/)
git init my-ml-project && cd my-ml-project
dvc init
git commit -m "Initialize DVC"
# Track a large dataset โ DVC moves it to cache, creates a pointer file
dvc add data/train.csv # creates data/train.csv.dvc
dvc add models/model.pkl # works for model files too
# Commit the pointer files to Git (not the data itself)
git add data/train.csv.dvc data/.gitignore models/.gitignore
git commit -m "Add training data and model v1"
# Configure S3 remote storage
dvc remote add -d myremote s3://my-ml-bucket/dvc-store
dvc remote modify myremote region us-east-1
git add .dvc/config && git commit -m "Configure S3 remote"
# Push data to S3
dvc push # uploads data/.dvc/cache to S3
# On another machine: restore exact data version
git clone https://github.com/org/my-ml-project
dvc pull # downloads from S3 using .dvc pointers DVC Pipelines: Reproducible ML Stages
Define a pipeline in dvc.yaml โ DVC only re-runs stages whose inputs changed:
# dvc.yaml
stages:
preprocess:
cmd: python src/preprocess.py
deps:
- src/preprocess.py
- data/raw/train.csv # if this changes, stage re-runs
outs:
- data/processed/train_clean.csv
params:
- params.yaml:
- preprocess.test_size
- preprocess.random_state
train:
cmd: python src/train.py
deps:
- src/train.py
- data/processed/train_clean.csv
outs:
- models/classifier.pkl
metrics:
- reports/metrics.json: # tracked as metrics, not just artifact
cache: false
plots:
- reports/feature_importance.csv:
cache: false
evaluate:
cmd: python src/evaluate.py
deps:
- src/evaluate.py
- models/classifier.pkl
- data/processed/test_clean.csv
metrics:
- reports/eval_metrics.json:
cache: false # Run the pipeline (only changed stages execute)
dvc repro
# Compare metrics across Git commits/branches
dvc metrics diff main feature/new-model
# Path Metric HEAD main Change
# reports/metrics.json accuracy 0.9421 0.9187 0.0234
# Visualize training plots
dvc plots show reports/feature_importance.csv DVC Experiments: Branch-Free Experiment Tracking
DVC Experiments let you run and compare multiple experiment variants without creating Git branches:
# Run an experiment (creates a temporary Git stash under the hood)
dvc exp run --set-param train.learning_rate=0.01
# Run multiple experiments with parameter grid
dvc exp run --set-param train.lr=0.001,0.01,0.1 --queue
dvc queue start --jobs 3 # run 3 in parallel
# Compare all experiments
dvc exp show
# โโโโโโโโโโโโโโโโณโโโโโโโโโโณโโโโโโโโโโโโโโโโโณโโโโโโโโโโโ
# โ Experiment โ accuracyโ learning_rate โ f1_score โ
# โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
# โ main โ 0.9187 โ 0.001 โ 0.9102 โ
# โ exp-abc12 โ 0.9421 โ 0.01 โ 0.9380 โ โ best
# โ exp-def34 โ 0.9301 โ 0.1 โ 0.9244 โ
# Promote best experiment to a Git branch
dvc exp branch exp-abc12 feature/best-lr DVC vs Git LFS vs LakeFS vs Pachyderm
| Feature | DVC | Git LFS | LakeFS | Pachyderm |
|---|---|---|---|---|
| ML pipeline support | Yes (dvc.yaml) | No | No | Yes (pipeline DAG) |
| Git integration | Full (pointer files) | Full (built-in) | S3-compatible branches | Separate from Git |
| Storage backends | S3/GCS/Azure/SSH/local | LFS server / GitHub LFS | S3/GCS/Azure | S3-compatible |
| Experiment tracking | dvc exp built-in | No | No | No |
| Data lake versioning | File-level | File-level | Object-store level | Commit-based |
| Self-hostable | Yes (remote = your S3) | Yes | Yes (open-source) | Yes (open-source) |
| Best for | ML teams, Git-native | Simple large files | Data lake governance | Data-driven pipelines |
Frequently Asked Questions
What is DVC and why is Git not enough for ML data?▼
DVC (Data Version Control) extends Git to handle large data files, models, and ML pipelines. Git is not designed for binary files โ committing a 10 GB dataset to Git makes the repo huge and slow. DVC stores large files in a remote storage (S3, GCS, Azure Blob, SSH) and commits only lightweight .dvc pointer files to Git. This gives you the full Git workflow (branches, commits, diffs) for data and models without the size penalty.
How does DVC track data files?▼
When you run dvc add data/train.csv, DVC computes the file's MD5 hash, copies it to the local cache (.dvc/cache/), creates a data/train.csv.dvc pointer file containing the hash, and adds data/train.csv to .gitignore. You commit the .dvc file to Git. Later, dvc pull reconstructs the exact file from the cache or remote storage using the hash pointer.
What is a DVC Pipeline and how is it different from Airflow?▼
A DVC Pipeline (defined in dvc.yaml) is a DAG of data transformation stages with declared inputs (deps) and outputs (outs). DVC tracks which stages need re-running based on file hash changes โ only stages with changed inputs are re-executed. Unlike Airflow (orchestration for production workflows), DVC pipelines are for local and CI/CD ML experiment reproducibility. Airflow schedules jobs; DVC ensures they use the right data versions.
How do DVC remotes work?▼
A DVC remote is a storage backend for cached files. Configure with: dvc remote add myremote s3://my-bucket/dvc-store. Then dvc push uploads changed files to S3, and dvc pull downloads them. DVC supports S3, GCS, Azure Blob, SSH, HTTP, and local paths as remotes. You can have multiple remotes and designate a default. Authentication follows boto3/gcloud credentials, so existing cloud auth works automatically.
Can DVC track model metrics and plots?▼
Yes. Use dvc metrics add to track metric files (JSON, CSV, YAML), then dvc metrics show and dvc metrics diff to compare across Git commits and branches. For plots, dvc plots show renders training curves from logged metrics. This gives you experiment comparison with full data lineage: you can see that branch A used dataset v3 and achieved 92% accuracy while branch B used v4 and achieved 94%.
How does DVC integrate with CI/CD pipelines?▼
In CI/CD (GitHub Actions, GitLab CI), use dvc pull to restore the exact dataset version referenced by the current commit, then dvc repro to run only changed pipeline stages. This ensures reproducibility: every commit re-runs with the exact data it was developed with. Use CML (Continuous Machine Learning) alongside DVC for automated model evaluation and PR comments with metrics and plots.