DVC Pipeline

CI/CD pro Machine Learning

Ravi Bhadauria

Machine Learning Engineer

Potřeba datového pipeline

  • Samotné verzování dat nestačí
  • Sledování datové linie je důležité
    • Filtrování, čištění a transformace
    • Trénování modelu
  • Spouštějte pouze to, co je potřeba
  • Kroky v orientovaném acyklickém grafu (DAG)

Schematický diagram DAG znázorňující vztah mezi předzpracováním, trénováním a artefakty modelu

CI/CD pro Machine Learning

DVC pipeline

  • Posloupnost kroků definující ML workflow a závislosti

  • Definováno v souboru dvc.yaml

    • Vstupní data a skripty (deps)
    • Příkazy pro spuštění kroků (cmd)
    • Výstupní artefakty (outs)
      • Speciální data, např. metrics a plots
  • Podobné workflow GitHub Actions

    • Zaměřeno na ML úlohy místo CI/CD
    • Lze abstrahovat jako krok v GHA
CI/CD pro Machine Learning

Definování kroků pipeline

  • Vytvořte kroky pomocí dvc stage add
dvc stage add \
-n preprocess \
-d raw_data.csv -d preprocess.py \
-o processed_data.csv \
python preprocess.py
  • Obsah dvc.yaml
    stages:
    preprocess:
      cmd: python preprocess.py
      deps:
      - preprocess.py
      - raw_data.csv
      outs:
      - processed_data.csv
    
CI/CD pro Machine Learning

Grafy závislostí

  • Přidejte krok trénování využívající výstup předchozího kroku
    dvc stage add \
    -n train \
    -d train.py -d processed_data.csv \
    -o plots.png -o metrics.txt \
    python train.py
    
stages:
  preprocess:
    cmd: python preprocess.py
    deps:
    - preprocess.py
    - raw_data.csv
    outs:
    - processed_data.csv

train: cmd: python train.py deps: - processed_data.csv - train.py outs: - plots.png
CI/CD pro Machine Learning

Reprodukce pipeline

  • Spusťte pipeline pomocí dvc repro
-> dvc repro
Running stage 'preprocess':                                      
> python preprocess.py

Running stage 'train': > python train.py Updating lock file 'dvc.lock'
  • Vygeneruje se stavový soubor dvc.lock
    • Podobně jako soubor .dvc, zachycuje MD5 hashe
    • Okamžitě potvrďte do Gitu pro záznam stavu git add dvc.lock && git commit -m "first pipeline repro"`
CI/CD pro Machine Learning

Využití cachovaných výsledků

  • Využití cachovaných výsledků pro rychlejší iteraci
-> dvc repro
Stage 'preprocess' didn't change, skipping
Running stage 'train' with command: ...
CI/CD pro Machine Learning

Vizualizace DVC pipeline

-> dvc dag
+------------+ 
| preprocess | 
+------------+ 
       *       
       *       
       *       
  +-------+    
  | train |    
  +-------+
1 https://dvc.org/doc/command-reference/dag
CI/CD pro Machine Learning

Shrnutí

  • DVC pipeline jsou užitečné pro
    • Rychlou iteraci díky cacheování
    • Reprodukovatelnost s dvc.yaml a dvc.lock
    • Podporu CI/CD
  • Pipeline vytvoříte pomocí dvc stage add
  • Spustíte/reprodukujete pomocí dvc repro
  • Vizualizujete pomocí dvc dag
CI/CD pro Machine Learning

Lass uns üben!

CI/CD pro Machine Learning

Preparing Video For Download...