データバージョニングとは?データセットのバージョン追跡の解説
データバージョニングとは、時間の経過とともにデータセットの変更を追跡し、どの実験も使用した正確なデータで再現できるようにする実践です。
バージョン管理のないコードは考えられませんが、それでも多くのMLチームはデータセットをその場で上書きし、過去の結果を再現する能力を失っています。データバージョニングはデータにGitのような履歴をもたらします。データセットのすべての意味のある状態が参照可能なバージョンになります。
データバージョニングとは
データバージョニングは、ある時点でのデータセットの状態を記録し、参照によって過去の任意のバージョンを取得できるようにします。データセットは大きいため、ツールは通常、小さなポインタやハッシュをGitに保存し、実際のバイトをobject storageに保持して、必要に応じて取得します。
再現性にとってなぜ重要か
モデルはその学習データの関数です。データが静かに変わると、同じコードが異なるモデルを生成し、その理由が分からなくなります。バージョン管理されたデータを使えば、実験を正確なスナップショットに固定できるため、「これを再実行して同じ結果を得る」ことが実際に成り立ちます。
どのように実装されるか
DVC、lakeFS、Git LFSのようなツールは、バージョンのメタデータをGitで追跡しながら、大きなデータをGitの外に保持します。コミットはコードとデータのバージョンの両方を一緒に捉えるため、コミットをチェックアウトすると完全に一貫した状態が得られます。
CIにおけるバージョン管理されたデータ
pipelineでは、checkoutがコードを復元し、データのpullが対応するデータセットのバージョンを復元することで、jobが意図した通りのデータで確実に学習することを保証します。
steps:
- uses: actions/checkout@v4 # restores code + data pointers
- run: dvc pull # fetches the pinned data version
- run: python train.pyLatchkeyに関する注記
データセットはしばしば数ギガバイトあるため、実行のたびに再pullするのは遅く、コストがかかります。Latchkeyでは、バージョン管理されたデータをそのコンテンツハッシュでキャッシュできるため、同じバージョンでの繰り返しの実行はキャッシュにヒットし、auto-retryがpull中の一時的なobject storageの障害から復旧します。
重要なポイント
- データバージョニングは時間の経過とともにデータセットの状態を追跡し、どの実験もその正確なデータで再現できるようにします。
- ツールは大きなデータをobject storageに保持し、小さなバージョンのポインタをGitに保持してコードとの一貫性を保ちます。
- バージョン管理されたデータをコンテンツハッシュでキャッシュすることで、CIでの過去の実行の再現が高速かつ低コストになります。