Skip to main content

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.

โœ“ Git-compatible data versioning โœ“ S3/GCS/Azure remote storage โœ“ Reproducible ML pipelines โœ“ Metrics & plots across branches
Share this tool: X / Twitter LinkedIn
โœ“ 60,000+ developers use DevPlaybook โ˜…โ˜…โ˜…โ˜…โ˜… 4.8 / 5 on Gumroad โœ“ MIT licensed ยท Instant download โœ“ No login required

Related Products

on Gumroad

You Might Also Need

More Free Tools

Related Articles

Apr 4, 2026 ยท 12 ๅˆ†้˜

curl ๆทฑๅบฆไฝฟ็”จๆ‰‹ๅ†Š๏ผšAPI ๆธฌ่ฉฆๅพžๅ…ฅ้–€ๅˆฐ้€ฒ้šŽ

curl ๆ˜ฏๆฏไฝ้–‹็™ผ่€…ๅฟ…ๅ‚™็š„ CLI ๅทฅๅ…ทใ€‚ๆœฌๆ–‡ๆถต่“‹ GET/POST/PUT/DELETE ่ซ‹ๆฑ‚ใ€่ช่ญ‰ใ€header ่จญๅฎšใ€ๆช”ๆกˆไธŠๅ‚ณใ€้™ค้ŒฏๆŠ€ๅทง๏ผŒไปฅๅŠ REST API ๆธฌ่ฉฆ็š„ๅฎŒๆ•ดๅฏฆๆˆฐ็ฏ„ไพ‹ใ€‚

Apr 2, 2026 ยท 8 min read

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.

Apr 2, 2026 ยท 10 min read

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.

Apr 2, 2026 ยท 13 min read

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.

Apr 2, 2026 ยท 11 min read

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.

DevPlaybook Pro 7 days free

Unlock AI-Powered Dev Tools

  • โšก AI Code Review, Doc Generator & SQL Builder
  • โšก All premium templates & early access
  • โšก Member discounts on Gumroad products
Start Free Trial โ†’

$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.

$79
$241 separately Save $162 (67% off)
Get DevPlaybook Pro โ€” $79 โ†’

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 supportYes (dvc.yaml)NoNoYes (pipeline DAG)
Git integrationFull (pointer files)Full (built-in)S3-compatible branchesSeparate from Git
Storage backendsS3/GCS/Azure/SSH/localLFS server / GitHub LFSS3/GCS/AzureS3-compatible
Experiment trackingdvc exp built-inNoNoNo
Data lake versioningFile-levelFile-levelObject-store levelCommit-based
Self-hostableYes (remote = your S3)YesYes (open-source)Yes (open-source)
Best forML teams, Git-nativeSimple large filesData lake governanceData-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.