Skip to content
Latchkey

DVCとは?Data Version Controlの解説

DVC (Data Version Control) は、大きなデータセットとモデルをGitと並行してバージョン管理し、再現可能なデータpipelineを定義するオープンソースのツールです。

DVCは、機械学習にバージョン管理をもたらすための最も人気のあるツールの一つです。Gitを置き換えるのではなく、Gitと連携して動作します。Gitはコードと小さなポインタファイルを追跡し、DVCは大きなデータとモデルをリモートのobject storageに保存します。

DVCとは

DVCは、Gitのように使うコマンドラインツールで、Gitリポジトリに置くには大きすぎるデータやモデルもバージョン管理します。「dvc add」でデータセットを追加すると、DVCはデータをcacheとリモートに保存し、小さな.dvcポインタファイルをGitにcommitするため、バージョンがコードと共に移動します。

pipelineと再現性

バージョン管理に加えて、DVCはstage、依存関係、outputを持つpipelineをdvc.yamlファイルで定義できます。「dvc repro」を実行すると、入力が変わったstageのみを再実行し、buildシステムのように動作するため、MLのpipelineが再現可能かつ増分的になります。

リモートとストレージ

DVCはデータをリモート - S3、GCS、Azure Blob、またはSSHサーバー - にpushします。チームメイトやCIのjobは「dvc pull」を実行して、commitが参照する正確なデータのバージョンを取得し、重いバイトをGitの外に保ちながら再現性を維持します。

CIにおけるDVC

CIのjobはリポジトリをcheckoutし、固定されたデータをpullし、pipelineを再現するため、すべての実行が意図した通りのデータで学習します。

Using DVC in a CI job
steps:
  - uses: actions/checkout@v4
  - run: pip install dvc[s3]
  - run: dvc pull          # fetch pinned data + models
  - run: dvc repro         # rerun changed pipeline stages

Latchkeyに関する注記

DVCのpullは、実行のたびにobject storageから数ギガバイトを移動することがあります。Latchkeyでは、実行間でDVCのcacheディレクトリをキャッシュすることで、変更されていないデータの再ダウンロードを回避し、不安定なS3やGCSの読み取りに対するauto-retryが、長い学習pipelineが一時的な単一の不具合で失敗するのを防ぎます。

重要なポイント

  • DVCは大きなデータセットとモデルをGitと並行してバージョン管理し、重いバイトをリモートのobject storageに保持します。
  • dvc.yaml pipelineと「dvc repro」により、MLのworkflowが再現可能かつ増分的になります。
  • CIでは、「dvc pull」とキャッシュされたDVCディレクトリにより、commitが参照する正確なデータを高速に復元します。

関連ガイド