DVC-pipelines

CI/CD voor Machine Learning

Ravi Bhadauria

Machine Learning Engineer

Waarom een datapipeline?

  • Alleen data versies bijhouden is niet zo nuttig
  • Dataherkomst volgen is belangrijk
    • Filteren, opschonen en transformeren
    • Modeltraining
  • Voer alleen uit wat nodig is
  • Stappen in een gerichte acyclische graaf (DAG)

Schematisch diagram van een DAG met de relatie tussen preprocessing, training en artefacten

CI/CD voor Machine Learning

DVC-pipelines

  • Reeks stages die ML-workflow en afhankelijkheden definiëren

  • Gedefinieerd in dvc.yaml

    • Invoerdata en scripts (deps)
    • Stage-commando's (cmd)
    • Uitvoerartefacten (outs)
      • Speciale data, bijv. metrics en plots
  • Vergelijkbaar met een GitHub Actions-workflow

    • Gericht op ML-taken i.p.v. CI/CD
    • Kan als stap in GHA worden geabstraheerd
CI/CD voor Machine Learning

Pipeline-stages definiëren

  • Maak stages met dvc stage add
dvc stage add \
-n preprocess \
-d raw_data.csv -d preprocess.py \
-o processed_data.csv \
python preprocess.py
  • Inhoud van dvc.yaml
    stages:
    preprocess:
      cmd: python preprocess.py
      deps:
      - preprocess.py
      - raw_data.csv
      outs:
      - processed_data.csv
    
CI/CD voor Machine Learning

Afhankelijkheidsgrafen

  • Voeg een trainingstap toe met de output van de vorige stap
    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 voor Machine Learning

Een pipeline reproduceren

  • Reproduceer de pipeline met dvc repro
-> dvc repro
Running stage 'preprocess':                                      
> python preprocess.py

Running stage 'train': > python train.py Updating lock file 'dvc.lock'
  • Er wordt een staatbestand dvc.lock gemaakt
    • Net als het .dvc-bestand, bevat MD5-hashes
    • Meteen naar Git committen om de staat vast te leggen git add dvc.lock && git commit -m "first pipeline repro"`
CI/CD voor Machine Learning

Cache-resultaten gebruiken

  • Cache-resultaten versnellen iteratie
-> dvc repro
Stage 'preprocess' didn't change, skipping
Running stage 'train' with command: ...
CI/CD voor Machine Learning

DVC-pipeline visualiseren

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

Samenvatting

  • DVC-pipelines zijn handig voor
    • Snelle iteratie dankzij caching
    • Reproduceerbaarheid met dvc.yaml en dvc.lock
    • CI/CD-mogelijkheden
  • Genereer pipelines met dvc stage add
  • Reproduceer/voer uit met dvc repro
  • Visualiseer met dvc dag
CI/CD voor Machine Learning

Laten we oefenen!

CI/CD voor Machine Learning

Preparing Video For Download...