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を再現するため、すべての実行が意図した通りのデータで学習します。
steps:
- uses: actions/checkout@v4
- run: pip install dvc[s3]
- run: dvc pull # fetch pinned data + models
- run: dvc repro # rerun changed pipeline stagesLatchkeyに関する注記
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が参照する正確なデータを高速に復元します。