DVC パイプラインの実行

DVCによるデータバージョニング入門

Ravi Bhadauria

Machine Learning Engineer

おさらい

  • 前処理ステージ
stages:
  preprocess:
    cmd: python3 preprocess.py
    params:
      - preprocess
    deps:
    - preprocess.py
    - raw_data.csv
    outs:
    - processed_data.csv
  • 学習と評価
stages:
  train_and_evaluate:
    cmd: python3 train_and_evaluate.py
    params:
      - train_and_evaluate
    deps:
    - processed_data.csv
    - train_and_evaluate.py
    outs:
    - plots.png
    - metrics.json
DVCによるデータバージョニング入門

パイプラインの再現実行

  • dvc repro でパイプラインを再実行
$ dvc repro
Running stage 'preprocess':                                      
> python preprocess.py

Running stage 'train_and_evaluate': > python train_and_evaluate.py Updating lock file 'dvc.lock'
  • 状態ファイル dvc.lock が生成されます
    • .dvc ファイルに類似。MD5 ハッシュを保持
$ git add dvc.lock && git commit -m "first pipeline run"
DVCによるデータバージョニング入門

キャッシュ結果の活用

  • キャッシュ済み結果で反復を高速化
$ dvc repro
Stage 'preprocess' didn't change, skipping
Running stage 'train_and_evaluate' with command: ...
DVCによるデータバージョニング入門

DVC のステージキャッシュ

DVC におけるステージキャッシュの仕組みのフローチャート

DVCによるデータバージョニング入門

パイプラインのドライラン

  • --dry フラグでコマンドのみ表示し、実行しません
$ dvc repro --dry
Running stage 'preprocess':
> python3 preprocess_dataset.py

Running stage 'train_and_evaluate':
> python3 train_and_evaluate.py
DVCによるデータバージョニング入門

追加の引数

  • ファイルを指定して実行: dvc repro linear/dvc.yaml
    • 同一フォルダに複数の dvc.yaml は不可
  • ステージを指定して実行: dvc repro <target_stage>
    • 上流の依存関係も実行されます
  • 強制実行: dvc repro -f
  • 実行結果をキャッシュに保存しない: dvc repro --no-commit
    • 後で dvc commit を使用
DVCによるデータバージョニング入門

ステージの並列実行

DVC における並列ステージ実行の DAG 概略図

  • 独立したステップを同時実行
# A2 とその上流依存を実行
$ dvc repro A2
# B2 とその上流依存を実行
$ dvc repro B2
  • キャッシュで実行を高速化
$ dvc repro train
Stage 'A2' didn't change, skipping
Stage 'B2' didn't change, skipping
Running stage 'train' with command: ...
DVCによるデータバージョニング入門

Let's practice!

DVCによるデータバージョニング入門

Preparing Video For Download...