Pipelines DVC

CI/CD pour le Machine Learning

Ravi Bhadauria

Machine Learning Engineer

Le besoin d'une data pipeline

  • Versionner les données seules est peu utile
  • Suivre la lignée des données est essentiel
    • Filtrage, nettoyage et transformation
    • Entraînement du modèle
  • N'exécuter que le nécessaire
  • Étapes en graphe orienté acyclique (DAG)

Schéma d'un DAG montrant les relations entre le prétraitement, l'entraînement et les artéfacts du modèle

CI/CD pour le Machine Learning

Pipelines DVC

  • Suite d'étapes définissant le workflow ML et ses dépendances

  • Défini dans le fichier dvc.yaml

    • Données et scripts d'entrée (deps)
    • Commandes d'exécution des étapes (cmd)
    • Artéfacts de sortie (outs)
      • Données spéciales p. ex. metrics et plots
  • Semblable au workflow GitHub Actions

    • Centré sur les tâches ML plutôt que CI/CD
    • Peut être encapsulé en étape dans GHA
CI/CD pour le Machine Learning

Définir les étapes d'une pipeline

  • Créez des étapes avec dvc stage add
dvc stage add \
-n preprocess \
-d raw_data.csv -d preprocess.py \
-o processed_data.csv \
python preprocess.py
  • Contenu de dvc.yaml
    stages:
    preprocess:
      cmd: python preprocess.py
      deps:
      - preprocess.py
      - raw_data.csv
      outs:
      - processed_data.csv
    
CI/CD pour le Machine Learning

Graphes de dépendances

  • Ajoutez une étape d'entraînement utilisant la sortie précédente
    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 pour le Machine Learning

Reproduire une pipeline

  • Reproduisez la pipeline avec dvc repro
-> dvc repro
Running stage 'preprocess':                                      
> python preprocess.py

Running stage 'train': > python train.py Updating lock file 'dvc.lock'
  • Un fichier d'état dvc.lock est généré
    • Similaire au fichier .dvc, capture des sommes MD5
    • Validez dans Git immédiatement pour enregistrer l'état git add dvc.lock && git commit -m "first pipeline repro"`
CI/CD pour le Machine Learning

Utiliser les résultats en cache

  • Utiliser le cache pour accélérer les itérations
-> dvc repro
Stage 'preprocess' didn't change, skipping
Running stage 'train' with command: ...
CI/CD pour le Machine Learning

Visualiser une pipeline DVC

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

En résumé

  • Les pipelines DVC servent à
    • Itérer vite grâce au cache
    • Reproductibilité avec dvc.yaml et dvc.lock
    • Activation du CI/CD
  • Générer les pipelines avec dvc stage add
  • Reproduire/exécuter avec dvc repro
  • Visualiser avec dvc dag
CI/CD pour le Machine Learning

Passons à la pratique !

CI/CD pour le Machine Learning

Preparing Video For Download...