Partager via


Présentation des pipelines Azure Machine Learning

Un pipeline Azure Machine Learning est un workflow exécutable indépendamment d’une tâche Machine Learning complète. Un pipeline Azure Machine Learning aide à normaliser les meilleures pratiques de production d’un modèle Machine Learning, permet à l’équipe d’opérer à grande échelle et améliore l’efficacité de création de modèle.

Pourquoi des pipelines Azure Machine Learning sont-ils nécessaires ?

Le cœur d’un pipeline d’apprentissage automatique consiste à fractionner une tâche d’apprentissage automatique en un flux de travail de plusieurs étapes. Chaque étape est un composant gérable qui peut être développé, optimisé, configuré et automatisé individuellement. Les étapes sont connectées via des interfaces bien définies. Le service du pipeline Azure Machine Learning orchestre automatiquement toutes les dépendances entre les étapes du pipeline. Cette approche modulaire offre deux grands avantages :

Normalisation de la pratique d’opération d’apprentissage automatique (MLOPs) et prise en charge de la collaboration d’équipe évolutive

Une opération d’apprentissage automatique (MLOps) automatise le processus de génération de modèles Machine Learning et la mise en production des modèles. Il s’agit d’un processus complexe. Il nécessite généralement une collaboration entre différentes équipes dotées de compétences diverses. Un pipeline d’apprentissage automatique bien défini permet d’abstraire ce processus complexe en un flux de travail de plusieurs étapes, en associant chaque étape à une tâche spécifique, de sorte que chaque équipe puisse travailler de manière indépendante.

Par exemple, un projet d’apprentissage automatique classique inclut les étapes de collecte de données, de préparation des données, d’apprentissage du modèle, d’évaluation du modèle et de déploiement du modèle. En général, les ingénieurs de données se concentrent sur les étapes ayant trait aux données, les scientifiques de données consacrent l’essentiel de leur temps à l’apprentissage et à l’évaluation des modèles, et les ingénieurs d’apprentissage automatique se concentrent sur le déploiement des modèles et l’automatisation du flux de travail complet. Un pipeline d’apprentissage automatique permet à chaque équipe de se concentrer sur la création de ses propres étapes. La meilleur manière de créer des étapes consiste à utiliser un composant Azure Machine Learning (v2), c’est-à-dire un élément de code autonome qui effectue une étape dans un pipeline d’apprentissage automatique. Toutes ces étapes générées par différents utilisateurs sont finalement intégrées dans un flux de travail unique par le biais de la définition du pipeline. Le pipeline est un outil de collaboration pour tous les participants au projet. Le processus de définition d’un pipeline et de toutes ses étapes peuvent être normalisés par la pratique de DevOps préférée de chaque entreprise. Le pipeline peut encore faire l’objet d’un contrôle de version et d’une automatisation. Si les projets de ML sont décrits comme un pipeline, la meilleure pratique de MLOps est déjà appliquée.

Efficacité de la formation et réduction des coûts

En plus d’être l’outil mettant en pratique MLOps, le pipeline de machine learning améliore également l’efficacité d’apprentissage de modèles volumineux et réduit les coûts. Prenons l’exemple de l’apprentissage d’un modèle de langage naturel moderne. Il nécessite un prétraitement de grandes quantités de données et un apprentissage de modèle de transformateur faisant un usage intensif de GPU. L’apprentissage d’un modèle prend de plusieurs heures à plusieurs jours. Lorsque la création du modèle, le scientifique des données souhaite tester différents codes ou hyperparamètres d’apprentissage, et effectuer l’apprentissage plusieurs fois afin d’obtenir des performances optimales du modèle. Pour la plupart de ces apprentissages, il existe généralement de petits changements d’un apprentissage à l’autre. Si, à chaque fois, l’apprentissage complet, du traitement des données à l’apprentissage du modèle, a lieu, cela entraîne un gaspillage considérable. Un pipeline d’apprentissage automatique permet de calculer automatiquement les étapes dont le résultat est inchangé, et de réutiliser les résultats d’un apprentissage précédent. En outre, le pipeline d’apprentissage automatique prend en charge l’exécution de chaque étape sur différentes ressources de calcul. Ainsi, le travail de traitement de données lourdes en mémoire, l’exécution sur des machines GPU dotées d’une mémoire élevée, et l’apprentissage nécessitant beaucoup de calcul peuvent s’effectuer sur des machines coûteuses en GPU. Choisir judicieusement quelle étape exécuter sur quel type de machine permet de réduire considérablement le coût de l’apprentissage.

Meilleures pratiques de prise en main

Le point de départ de la création d’un pipeline d’apprentissage automatique peut varier en fonction de ce dont un projet d’apprentissage automatique est déjà doté. Il existe quelques approches typiques pour créer un pipeline.

La première approche s’applique généralement à l’équipe qui n’a pas utilisé de pipeline auparavant et souhaite tirer parti d’un pipeline tel que MLOps. Dans ce cas, les scientifiques des données ont généralement développé des modèles Machine Learning sur leur environnement local à l’aide de leurs outils de prédilection. Les ingénieurs en apprentissage automatique doivent mettre en production les résultats des scientifiques des données. Le travail implique de supprimer du code inutile du notebook d’origine ou du code Python, de modifier l’entrée d’entraînement des données locales en valeurs paramétrisées, de fractionner le code d’entraînement en plusieurs étapes en fonction des besoins, d’effectuer un test unitaire de chaque étape, et enfin d’encapsuler toutes les étapes dans un pipeline.

Lorsque les équipes seront familiarisées avec les pipelines et souhaiteront réaliser davantage de projets d’apprentissage automatique à l’aide de pipelines, elles constateront que la première approche est difficile à mettre à l’échelle. La deuxième approche consiste à configurer quelques modèles de pipeline, chacun tentant de résoudre un problème d’apprentissage automatique spécifique. Le modèle prédéfinit la structure du pipeline, notamment le nombre d’étapes, les entrées et sorties de chaque étape, ainsi que leur connectivité. Pour démarrer un nouveau projet d’apprentissage automatique, l’équipe commence par dupliquer un modèle de référentiel. Le chef d’équipe attribue ensuite aux membres les étapes sur lesquelles ils doivent travailler. Les scientifiques des données et les ingénieurs de données accomplissent leur travail ordinaire. Lorsqu’ils sont satisfaits du résultat, ils structurent leur code pour l’adapter aux étapes prédéfinies. Une fois les codes structurés archivés, le pipeline peut être exécuté ou automatisé. En cas de modification, chaque membre doit uniquement travailler sur son morceau de code sans toucher au reste du code du pipeline.

Une fois qu’une équipe a créé une collection de pipelines d’apprentissage automatique et de composants réutilisables, elle peut commencer à créer le pipeline d’apprentissage automatique à partir du clonage d’un pipeline précédent ou lier un composant réutilisable existant. À ce stade, la productivité globale de l’équipe sera considérablement améliorée.

Azure Machine Learning propose différentes méthodes pour créer un pipeline. Pour les utilisateurs qui connaissent les pratiques de DevOps, nous recommandons d’utiliser l’interface CLI. Pour les spécialistes des données qui connaissent Python, nous recommandons d’écrire des pipelines à l’aide du kit de développement logiciel (SDK) Azure Machine Learning v2. Pour les utilisateurs qui préfèrent utiliser l’interface utilisateur, ils peuvent utiliser le concepteur pour créer le pipeline à l’aide de composants inscrits.

Quelle technologie de pipeline Azure dois-je utiliser ?

Le cloud Azure offre plusieurs types de pipelines, chacun ayant un objectif différent. Dans le tableau suivant figurent les différents pipelines et une explication de leur utilisation :

Scénario Personnage principal Offre Azure Offre OSS Canal canonique Forces
Orchestration de modèle (Machine Learning) Scientifique des données Pipelines Azure Machine Learning Pipelines Kubeflow Données -> Modèle Distribution, mise en cache, orienté code, réutilisation
Orchestration de données (préparation des données) Ingénierie de données Azure Data Factory Apache Airflow Données -> Données Mouvement fortement typé, activités centrées sur les données
Orchestration de code et d’application (CI/CD) Développeur d’applications/opérations Azure Pipelines Jenkins Code + modèle -> application/service Prise en charge de l’activité la plus ouverte et flexible, files d’attente d’approbation, phases avec vérification

Étapes suivantes

Les pipelines Azure Machine Learning sont une fonctionnalité puissante qui commence à générer de la valeur dès les premières étapes du développement.