DVC パイプラインの作成と可視化

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

Ravi Bhadauria

Machine Learning Engineer

DVC パイプライン

  • 機械学習ワークフローと依存関係を定義するステージ列

    • Git でバージョン管理
  • dvc.yaml に定義

    • 入力データとスクリプト(deps
    • パラメータ(params
    • 実行コマンド(cmd
    • 出力(outs
      • 特殊データ例:metricsplots
DVCによるデータバージョニング入門

前処理ステージの追加

  • dvc stage add でステージ作成
dvc stage add \
-n preprocess \
-p params.yaml:preprocess \
-d raw_data.csv \
-d preprocess.py \
-o processed_data.csv \
python3 preprocess.py
stages:
  preprocess:
    cmd: python3 preprocess.py
    params:
      # Keys from params.yaml
      - params.yaml
        - preprocess
    deps:
    - preprocess.py
    - raw_data.csv
    outs:
    - processed_data.csv
DVCによるデータバージョニング入門

学習・評価ステージの追加

  • 前ステップの出力を使って学習ステップを追加
dvc stage add \
-n train_and_evaluate \
-p train_and_evaluate \
-d train_and_evaluate.py \
-d processed_data.csv \
-o plots.png \
-o metrics.json \
python3 train_and_evaluate.py
  • 有向非巡回グラフ(DAG)
stages:
  train_and_evaluate:
    cmd: python3 train_and_evaluate.py
    params:
      # パラメータファイルは省略可
      # 既定は params.yaml
      - train_and_evaluate
    deps:
    - processed_data.csv
    - train_and_evaluate.py
    outs:
    - plots.png
    - metrics.json
DVCによるデータバージョニング入門

ステージの更新

  • dvc stage add を複数回実行した場合
ERROR: Stage 'train_and_evaluate' 
already exists in 'dvc.yaml'.
Use '--force' to overwrite.
  • dvc stage add --force を使用
dvc stage add --force \
-n train_and_evaluate \
-p train_and_evaluate \
-d train_and_evaluate.py \
-d processed_data.csv \
-o plots.png \
-o metrics.json \
python3 train_and_evaluate.py
DVCによるデータバージョニング入門

DVC パイプラインの可視化

# 端末に DAG を表示
dvc dag
# 指定ステップまでの DAG を表示
dvc dag <target>
            +------------+     
            | preprocess |     
            +------------+     
                   *           
                   *           
                   *           
        +--------------------+ 
        | train_and_evaluate | 
        +--------------------+
DVCによるデータバージョニング入門

DVC パイプラインの可視化

# ステップの出力をノードとして表示
dvc dag --outs
                    +-------------------------------+              
                    | processed_dataset/weather.csv |              
                    +-------------------------------+              
                          ***               ***                    
                       ***                     ***                 
                     **                           **               
          +--------------+                    +-----------+ 
          | metrics.json |                    | plots.png | 
          +--------------+                    +-----------+
DVCによるデータバージョニング入門

DVC パイプラインの可視化

dvc dag --dot
strict digraph  {
"preprocess";
"train_and_evaluate";
"preprocess" -> "train_and_evaluate";
}

DOT ファイルから描画した 2 段階の DVC DAG

1 https://dreampuf.github.io/GraphvizOnline/
DVCによるデータバージョニング入門

練習しましょう!

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

Preparing Video For Download...