DVCでデータのバージョン管理を行う

DVC(Data Version Control)とは?

DVC(Data Version Control)は、データサイエンスや機械学習プロジェクトのデータとモデルのバージョン管理を行うツールです。Gitのようなワークフローを採用しており、コードのバージョン管理だけでなく、大規模なデータセットやモデルも効率的に管理できます。DVCは大容量ファイルをGitリポジトリ外に保管し、メタデータのみをGitで管理するため、CloneやPullが遅くなる問題を回避できます。

この記事ではドキュメントのチュートリアルを通して、DVCを使ったバージョン管理を行ってみたいと思います。

インストール

推奨されているHomebrewでDVCをインストールします。
環境はMac Book Pro M1 Sonoma 14.2.1です。

brew install dvc

プロジェクトの初期化

DVCでバージョン管理を行うプロジェクトの初期化を行います。
Gitレポジトリである必要があるので、まずは適当なディレクトリを作成して、Gitレポジトリを作成します。

mkdir example-get-started
cd example-get-started
git init

次に下記のコマンドでDVCプロジェクトの初期化を行います。

 dvc init

dvc initを行うと、DVCの設定ファイルが生成されます。

new file: .dvc/.gitignore
new file: .dvc/config
new file: .dvcignore

git commit -m "Initialize DVC"

git commitで、これらの設定ファイルを追加しておきます。
これでDVCを利用する準備は完了です。

データのバージョン管理

それではデータのバージョン管理を行ってみます。
サンプルデータをdvc getでダウンロードします。

dvc get https://github.com/iterative/dataset-registry \
          get-started/data.xml -o data/data.xml

dvc addコマンドでダウンロードしたデータを追加します。

dvc add data/data.xml

git commitコマンドでデータをコミットします。

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

DVCではデータをGitリポジトリ外のストレージに保管します。
ローカルのストレージからAmazon S3や、Google Cloud Storageといったクラウドストレージまで様々なストレージに対応しています。

対応しているストレージは下記のリンクから確認できます。

今回のチュートリアルでは、ローカルストレージを利用します。

mkdir /tmp/dvcstore
dvc remote add -d myremote /tmp/dvcstore

/tmp/dvcstoreというディレクトリを作成し、DVCのローカルリモートストレージとして指定しています。

dvc push

ストレージの設定が完了したら、dvc pushコマンドでデータをアップロードします。このコマンドを実施して、先ほどの/tmp/dvcstoreを確認するとデータがアップロードされている事が確認できます。

/tmp/dvcstore
└── files
    └── md5
        └── 22
            └── a1a2931c8370d3aeedd7183606fd7f