執行 DVC pipeline

使用 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 進行資料版本控管入門

重現 pipeline

  • dvc repro 重現 pipeline
$ 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 run 執行 pipeline

  • 使用 --dry 只列印指令,不實際執行 pipeline
$ 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>
    • 也會執行上游相依項
  • 強制執行 pipeline/階段 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 進行資料版本控管入門

一起來練習吧!

使用 DVC 進行資料版本控管入門

Preparing Video For Download...