DVC (Data Version Control) の完全ガイド

2025/03/10に公開

1. DVCとは?

DVC(Data Version Control)は、データサイエンスや機械学習のプロジェクトで、データやモデルのバージョン管理を行うためのツールです。Gitのように操作できるため、コードと同様にデータやモデルの管理を効率的に行えます。

主な特徴:

  • データのバージョン管理: Gitのようにデータやモデルのバージョン管理が可能。
  • ストレージとの連携: ローカル、クラウド(AWS S3、Google Drive など)にデータを保存可能。
  • 軽量なリポジトリ: 大容量データでもGitリポジトリを肥大化させない。
  • 再現性の確保: データやモデルを適切に管理し、過去の実験を再現可能。
  • CI/CD対応: MLワークフローの自動化が容易。

2. DVCの基本的な仕組み

DVCは、データを直接Gitで管理するのではなく、データのメタ情報をGitに記録し、実際のデータは外部ストレージに保存することでリポジトリの肥大化を防ぎます。

DVCの主な仕組み:

  1. データをGit管理しない.dvc ファイルとしてメタ情報を管理。
  2. データはリモートストレージへアップロード → AWS S3、Google Drive など。
  3. Gitでメタ情報を管理 → コードとデータの整合性を保つ。

3. DVCのインストール

DVCはPythonのパッケージとして提供されています。以下のコマンドでインストールできます。

pip install dvc

また、使用するストレージに応じた依存関係を追加することも可能です。

pip install dvc[s3]

4. DVCの基本コマンド

4.1. 初期化

まず、DVCをプロジェクトに導入するには、リポジトリをGitで管理していることを前提に、以下のコマンドを実行します。

git init   # Gitリポジトリの初期化
dvc init   # DVCリポジトリの初期化
git commit -m "Initialize DVC"

4.2. データの管理

例えば、data/ ディレクトリにあるデータをDVCで管理する場合、次のようにします。

dvc add data/
git add data.dvc .gitignore
git commit -m "Add dataset"

これにより、data/ ディレクトリはGitの管理対象から外れ、代わりに data.dvc ファイルが作成されます。

4.3. リモートストレージの設定

リモートストレージ(例: AWS S3)を設定する場合、次のコマンドを実行します。

dvc remote add myremote s3://my-bucket/path/
dvc remote default myremote
git commit -m "Configure DVC remote storage"

4.4. データのアップロード

dvc push

DVCは data/ をリモートストレージにアップロードし、Gitには data.dvc ファイルのみを記録します。

4.5. データのダウンロード

別の環境でデータを取得する場合、以下のコマンドを実行します。

git pull
dvc pull

5. DVCを活用したMLワークフロー

DVCは単なるデータ管理ツールにとどまらず、MLのワークフロー管理にも役立ちます。

5.1. パイプラインの管理

DVCではMLのパイプラインを管理することができます。

dvc run -n preprocess -d raw_data.csv -o processed_data.csv \
    python preprocess.py raw_data.csv processed_data.csv

dvc run -n train -d processed_data.csv -o model.pkl \
    python train.py processed_data.csv model.pkl

このパイプラインは dvc.yaml に記録され、以下のコマンドで再実行可能です。

dvc repro

5.2. 実験の管理

DVCを活用すると、異なる実験を簡単に管理できます。

git checkout feature-branch
dvc repro

6. DVCとMLOps

DVCはMLOpsの実践にも役立ちます。

  • MLflowやKubeflowと統合可能
  • データとモデルのトレーサビリティを確保
  • CI/CDに組み込むことで自動化

例えば、GitHub ActionsとDVCを組み合わせることで、自動データバージョニングとモデルデプロイが可能になります。

name: DVC CI/CD

on: [push]

jobs:
  dvc_pipeline:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2
      - name: Install DVC
        run: pip install dvc[s3]
      - name: Pull data
        run: dvc pull
      - name: Run pipeline
        run: dvc repro
      - name: Push data
        run: dvc push

7. まとめ

DVCは、データや機械学習モデルの管理を効率化し、チームでのコラボレーションや再現性の向上に貢献するツールです。

  • データのバージョン管理が可能
  • リモートストレージと連携してデータを管理
  • MLパイプラインを管理し、実験の再現性を向上
  • MLOpsと統合し、自動化を実現

データサイエンスや機械学習プロジェクトを効率的に進めるために、DVCの導入をぜひ検討してみてください。

Discussion