Pipeline-uri DVC

CI/CD pentru Machine Learning

Ravi Bhadauria

Machine Learning Engineer

Necesitatea unui pipeline de date

  • Versionarea datelor singure nu este foarte utilă
  • Urmărirea provenienței datelor este importantă
    • Filtrare, curățare și transformare
    • Antrenarea modelului
  • Executați doar ce este necesar
  • Pași într-un Graf Aciclic Orientat (DAG)

Diagramă schematică a unui DAG care ilustrează relația dintre preprocesare, antrenare și artefacte

CI/CD pentru Machine Learning

Pipeline-uri DVC

  • Secvență de etape ce definesc fluxul ML și dependențele

  • Definit în fișierul dvc.yaml

    • Date de intrare și scripturi (deps)
    • Comenzi de execuție a etapelor (cmd)
    • Artefacte de ieșire (outs)
      • Date speciale, ex. metrics și plots
  • Similar fluxului GitHub Actions

    • Orientat pe sarcini ML în locul CI/CD
    • Poate fi abstractizat ca un pas în GHA
CI/CD pentru Machine Learning

Definirea etapelor pipeline-ului

  • Creați etape cu dvc stage add
dvc stage add \
-n preprocess \
-d raw_data.csv -d preprocess.py \
-o processed_data.csv \
python preprocess.py
  • Conținutul dvc.yaml
    stages:
    preprocess:
      cmd: python preprocess.py
      deps:
      - preprocess.py
      - raw_data.csv
      outs:
      - processed_data.csv
    
CI/CD pentru Machine Learning

Grafuri de dependențe

  • Adăugați o etapă de antrenare folosind rezultatul etapei anterioare
    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 pentru Machine Learning

Reproducerea unui pipeline

  • Reproduceți pipeline-ul cu dvc repro
-> dvc repro
Running stage 'preprocess':                                      
> python preprocess.py

Running stage 'train': > python train.py Updating lock file 'dvc.lock'
  • Se generează fișierul de stare dvc.lock
    • Similar fișierului .dvc, stochează hash-uri MD5
    • Adăugați imediat la Git pentru a înregistra starea git add dvc.lock && git commit -m "first pipeline repro"`
CI/CD pentru Machine Learning

Utilizarea rezultatelor din cache

  • Utilizarea rezultatelor din cache pentru iterații mai rapide
-> dvc repro
Stage 'preprocess' didn't change, skipping
Running stage 'train' with command: ...
CI/CD pentru Machine Learning

Vizualizarea pipeline-ului DVC

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

Rezumat

  • Pipeline-urile DVC sunt utile pentru
    • Iterații rapide datorită cache-ului
    • Reproductibilitate cu dvc.yaml și dvc.lock
    • Activarea CI/CD
  • Generați pipeline-uri cu dvc stage add
  • Reproduceți/executați cu dvc repro
  • Vizualizați cu dvc dag
CI/CD pentru Machine Learning

Să exersăm!

CI/CD pentru Machine Learning

Preparing Video For Download...