データ管理したい(dvc)
$ git init
$ dvc init
$ dvc add data/dataset.csv
$ dvc remote add -d storage s3://my-bucket/dvc-storage
$ git add .dvc data/.gitignore .dvcignore
$ git commit -m "Initialize DVC"
$ dvc stage add -n prepare -d data/raw.csv -o data/processed.csv python scripts/prepare.py
$ dvc repro
$ dvc push
$ git add dvc.yaml dvc.lock
$ git commit -m "Add data processing pipeline"
dvc(Data Version Control)は、
大規模なデータセットをバージョン管理するためのツールです。
Gitと組み合わせることで、データパイプラインの再現性を確保し、大規模なデータファイルを効率的に管理できます。
インストールしたい(dvc)
Homebrew
$ brew install dvc
uv
$ uv tool install dvc
pipx
$ pipx install dvc
uvx(一時的)
$ uvx dvc --help
初期化したい(dvc init)
$ dvc init
dvc initコマンドで.dvc/ディレクトリを作成し、DVCの設定ファイルを初期化します。
Gitリポジトリの中で実行します。
トラッキングしたい(dvc add)
$ dvc add data/dataset.csv
dvc addコマンドでデータファイルをトラッキングできます。
DVCはデータファイルの代わりに.dvcファイル(メタデータ)を作成し、.dvcファイルをGitで管理します。
実ファイルは.gitignoreに追加します。
URLから取得したい(dvc get-url)
$ dvc get-url https://example.com/dataset.zip data/dataset.zip
dvc get-urlコマンドで、リモートのURLから直接データをダウンロードできます。
リモートストレージしたい(dvc remote)
$ dvc remote add -d gdrive gdrive:://folder-id
dvc remote addコマンドでリモートストレージを追加できます。
-dオプションでデフォルトのリモート先を設定します。
複数のリモートを設定することも可能です。
リモートストレージの種類
DVCは以下のストレージに対応しています。
Google Drive:
gdrive://folder-idS3:
s3://bucket-name/pathAzure:
azure://container-nameGoogle Cloud Storage:
gs://bucket-nameローカルパス:
/local/pathまたは./relative/path
リモートストレージにプッシュしたい(dvc push)
$ dvc push
dvc pushコマンドでローカルでトラッキングしているすべてのデータをリモートストレージにアップロードできます。
リモートストレージから取得したい(dvc pull)
$ dvc pull
dvc pullコマンドでリモートストレージに保存されているデータをローカルにダウンロードできます。
Google Driveしたい
$ git init
$ dvc init
$ dvc remote add -d gdrive 'gdrive://1mFgxxxxxx1234567890'
$ dvc add data/dataset.csv
$ dvc push
$ git add data/dataset.csv.dvc .gitignore .dvc/config
$ git commit -m "Add dataset to DVC with Google Drive"
Google Driveをリモートストレージとして使用する場合の、手順のサンプルです。
フォルダーIDを取得したい
Google Drive にアクセスします
リモートストレージとして使うフォルダーを作成します
そのフォルダーを開きます
URLからIDを取得します。例:
https://drive.google.com/drive/folders/1mFgxxxx...の場合、フォルダーIDは1mFgxxxx...
Google Driveで認証したい
初回使用時、ブラウザで認証画面が表示されます。 DVCがGoogle Driveにアクセスすることを許可します。