Pipelines DVC

CI/CD pour le Machine Learning

Ravi Bhadauria

Machine Learning Engineer

Pourquoi une filière de données ?

  • Versionner les données seules aide peu
  • 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 acyclique orienté (DAG)

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

CI/CD pour le Machine Learning

Pipelines DVC

  • Suite d'étapes définissant le flux de travail ML et ses dépendances

  • Définie dans le fichier dvc.yaml

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

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

Définir les étapes de la filière

  • Créer 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

  • Ajouter 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 filière

  • Reproduire la filière 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é
    • Semblable au fichier .dvc, il consigne les hachages MD5
    • Valider dans Git tout de suite 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

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

Visualiser une filière DVC

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

Résumé

  • Les pipelines DVC servent à
    • Itérer vite grâce au cache
    • Assurer la reproductibilité avec dvc.yaml et dvc.lock
    • Activer la CI/CD
  • Générer des 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...