DVC Pipelines : comment construire un pipeline de machine learning reproductible

DVC Pipelines : comment construire un pipeline de machine learning reproductible
2 min de lecture

PyImageSearch publie un tutoriel consacré à la construction d’un pipeline d’apprentissage automatique reproductible avec DVC, un outil de versionnement de données et de modèles qui fonctionne avec Git. Signé Vikram Singh, ce guide montre comment enchaîner plusieurs étapes, du prétraitement des données à l’évaluation, pour les relancer d’une seule commande.

  • DVC relie les étapes d’un pipeline de machine learning via dvc.yaml et dvc.lock.
  • Une seule commande, dvc repro, relance uniquement les étapes modifiées.
  • Les commandes dvc metrics show et dvc metrics diff suivent les performances d’un commit à l’autre.
  • Le tutoriel utilise le jeu Iris, une régression logistique et trois bibliothèques principales.

L’exemple repose sur le jeu de données Iris, un classique du domaine. Le fichier brut iris.csv est d’abord séparé en un ensemble d’entraînement et un ensemble de test, selon une proportion de 80/20 qui conserve les proportions de classes. Vient ensuite l’entraînement d’un modèle de régression logistique, puis une évaluation qui calcule la précision et produit un rapport de classification. Le tutoriel précise que l’ensemble du projet n’utilise que trois bibliothèques : DVC 3.48.4, pandas 2.1.4 et scikit-learn 1.3.2.

Trois étapes reliées par un fichier de configuration

Chaque étape est décrite dans un fichier dvc.yaml, qui précise la commande à exécuter, les fichiers dont dépend l’étape et les résultats qu’elle produit. Les sorties d’une étape servent d’entrées à la suivante. Ainsi, une modification du jeu de données relance l’ensemble du pipeline, alors qu’une modification du seul script d’entraînement ne relance que l’entraînement et l’évaluation.

Ces dépendances sont consignées dans un fichier dvc.lock, qui enregistre l’état exact du pipeline lors de son exécution. Selon l’auteur, ce fichier doit être versionné avec Git, ce qui permet à un autre membre de l’équipe, ou à un serveur d’intégration continue, de reproduire les résultats avec les commandes dvc pull puis dvc repro. Lorsque rien n’a changé, DVC indique que les étapes sont à jour et n’effectue aucun calcul.

Inspecter et comparer les exécutions

Le tutoriel présente plusieurs commandes d’inspection. dvc dag affiche le graphe des étapes sous forme de schéma, dvc status indique quelles dépendances ont changé, et dvc diff compare les sorties avec la dernière version enregistrée. Pour le suivi des performances, dvc metrics show affiche les métriques de la dernière exécution, et dvc metrics diff les compare d’un commit à l’autre.

Dans l’exemple présenté, l’évaluation sur 30 échantillons de test donne une précision de 0,9333. L’auteur indique que la même logique permet de suivre l’effet d’un changement de paramètres ou de données, en repérant aussi bien les progressions que les régressions.

Le tutoriel évoque enfin des extensions optionnelles. Les hyperparamètres peuvent être déplacés dans un fichier params.yaml, des graphiques peuvent être suivis comme sorties, et de nouvelles étapes, comme l’ingénierie de caractéristiques ou la recherche d’hyperparamètres, peuvent être ajoutées au graphe sans modifier les autres étapes. DVC se charge alors de recalculer uniquement les parties concernées.