DVC-pipelines

CI/CD för maskininlärning

Ravi Bhadauria

Machine Learning Engineer

Behovet av en datapipeline

  • Att versionera data ensamt räcker inte
  • Att spåra datalinjens härledning är viktigt
    • Filtrering, rensning och transformering
    • Modellträning
  • Kör bara det som behövs
  • Steg i en riktad acyklisk graf (DAG)

Schematisk bild av en DAG som visar sambandet mellan förbehandling, träning och artefakter

CI/CD för maskininlärning

DVC-pipelines

  • En sekvens av steg som definierar ML-arbetsflödet och dess beroenden

  • Definieras i filen dvc.yaml

    • Indata och skript (deps)
    • Körkommandon för steget (cmd)
    • Utdataartefakter (outs)
      • Specialdata, t.ex. metrics och plots
  • Liknar GitHub Actions-arbetsflödet

    • Fokuserar på ML-uppgifter i stället för CI/CD
    • Kan abstraheras som ett steg i GHA
CI/CD för maskininlärning

Definiera pipeline-steg

  • Skapa steg med dvc stage add
dvc stage add \
-n preprocess \
-d raw_data.csv -d preprocess.py \
-o processed_data.csv \
python preprocess.py
  • Innehåll i dvc.yaml
    stages:
    preprocess:
      cmd: python preprocess.py
      deps:
      - preprocess.py
      - raw_data.csv
      outs:
      - processed_data.csv
    
CI/CD för maskininlärning

Beroendegraf

  • Lägg till ett träningssteg som använder utdata från föregående steg
    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 för maskininlärning

Reproducera en pipeline

  • Reproducera pipelinen med dvc repro
-> dvc repro
Running stage 'preprocess':                                      
> python preprocess.py

Running stage 'train': > python train.py Updating lock file 'dvc.lock'
  • En tillståndsfil dvc.lock genereras
    • Liknar .dvc-filen, lagrar MD5-hashar
    • Committa till Git direkt för att registrera tillståndet git add dvc.lock && git commit -m "first pipeline repro"`
CI/CD för maskininlärning

Använda cachade resultat

  • Använd cachade resultat för snabbare iteration
-> dvc repro
Stage 'preprocess' didn't change, skipping
Running stage 'train' with command: ...
CI/CD för maskininlärning

Visualisera DVC-pipeline

-> dvc dag
+------------+ 
| preprocess | 
+------------+ 
       *       
       *       
       *       
  +-------+    
  | train |    
  +-------+
1 https://dvc.org/doc/command-reference/dag
CI/CD för maskininlärning

Sammanfattning

  • DVC-pipelines är användbara för
    • Snabb iteration tack vare caching
    • Reproducerbarhet med dvc.yaml och dvc.lock
    • CI/CD-aktivering
  • Skapa pipelines med dvc stage add
  • Reproducera/kör med dvc repro
  • Visualisera med dvc dag
CI/CD för maskininlärning

Nu kör vi en övning!

CI/CD för maskininlärning

Preparing Video For Download...