Comparer des mesures et des graphiques dans DVC

CI/CD pour le Machine Learning

Ravi Bhadauria

Machine Learning Engineer

Configuration du fichier YAML de DVC

  • Configurer le fichier YAML de DVC pour suivre les mesures entre expériences
  • Remplacer outs
stages:
  preprocess:
    ...
  train:
    ...
    outs:
    - metrics.json
    - confusion_matrix.png
  • Par metrics
stages:
  preprocess:
    ...
  train:
    ...
    outs:
    - confusion_matrix.png

metrics: - metrics.json: cache: false
CI/CD pour le Machine Learning

Interroger et comparer les mesures DVC

-> dvc metrics show

Path accuracy f1_score precision recall metrics.json 0.947 0.8656 0.988 0.7702

Modifiez un hyperparamètre et relancez dvc repro

-> dvc metrics diff

Path Metric HEAD workspace Change metrics.json accuracy 0.947 0.9995 0.0525 metrics.json f1_score 0.8656 0.9989 0.1333 metrics.json precision 0.988 0.9993 0.0113 metrics.json recall 0.7702 0.9986 0.2284
1 https://dvc.org/doc/command-reference/metrics
CI/CD pour le Machine Learning

Configurer l'action GitHub DVC

  • Ajouter l'action GitHub setup-dvc
  • Remplacer l'exécution des scripts Python par le pipeline DVC
steps:
  ...
  - name: Setup DVC
    uses: iterative/setup-dvc@v1

- name: Run DVC pipeline run: dvc repro
CI/CD pour le Machine Learning

Configurer l'action GitHub DVC

- name: Write CML report
  env:
    REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  run: |
    # Afficher les mesures de la branche courante
    dvc metrics show --md >> report.md

# Comparer aux mesures de la branche main git fetch --prune dvc metrics diff --md main >> report.md
# Créer le rapport CML cml comment create report.md
CI/CD pour le Machine Learning

Pipeline en action

Capture d'écran d'un commentaire de demande de tirage montrant l'écart des mesures par rapport à la branche main

CI/CD pour le Machine Learning

Types de graphiques dans DVC

  • scatter - nuage de points
  • linear - graphique linéaire interactif
  • simple - graphique linéaire personnalisable non interactif
  • smooth - graphique linéaire avec lissage
  • confusion - matrice de confusion
  • confusion_normalized - matrice de confusion avec valeurs normalisées dans l'intervalle <0, 1>
  • bar_horizontal - diagramme à barres horizontal
  • bar_horizontal_sorted - diagramme à barres horizontal trié par taille de barre
1 https://dvc.org/doc/user-guide/experiment-management/visualizing-plots#plot-templates-data-series-only
CI/CD pour le Machine Learning

Configurer DVC YAML pour les graphiques

stages:
  train:
    ...
    plots:
    - predictions.csv: # Nom du fichier contenant les prédictions
        template: confusion # Type de graphique

x: predicted_label # Nom de la colonne de l'axe X dans le fichier csv y: true_label # Nom de la colonne de l'axe Y dans le fichier csv x_label: 'Predicted label' y_label: 'True label' title: Confusion matrix
cache: false # Enregistrer dans Git
CI/CD pour le Machine Learning

Tracer une matrice de confusion

-> dvc plots show predictions.csv
file:///path/to/index.html

Affichage d'une matrice de confusion générée par DVC

CI/CD pour le Machine Learning

Comparer une matrice de confusion

-> dvc plots diff --target predictions.csv main
file:///path/to/index.html

Graphique des écarts de matrice de confusion généré par DVC

CI/CD pour le Machine Learning

Comparer des courbes ROC

# Modifications dans Python
y_proba = model.predict_proba(X_test)
fpr, tpr, _ = roc_curve(y_test, 
                        y_proba[:, 1])
# Modifications dans dvc.yaml
plots:
- roc_curve.csv:
    template: simple
    x: fpr
    y: tpr
    x_label: 'False Positive Rate'
    y_label: 'True Positive Rate'
    title: ROC curve
    cache: false

Graphique des écarts de courbes ROC généré par DVC

CI/CD pour le Machine Learning

Passons à la pratique !

CI/CD pour le Machine Learning

Preparing Video For Download...