Accueil > Le MLOps en toute simplicité : rationaliser vos workflows ML avec Azure Machine Learning
Fawzi Rida
16 mai 2023
Read this post in English

Le MLOps en toute simplicité : rationaliser vos workflows ML avec Azure Machine Learning

Le MLOps en toute simplicité : rationaliser vos workflows ML avec Azure Machine Learning

Cet article fait partie d’une série de publications autour du service Azure Machine Learning. Je vous invite tout d’abord à lire la première partie consacrée aux tableaux de bord IA responsables.

Dans cette deuxième partie, nous allons découvrir comment construire le backbone d’une plateforme MLOps à partir du service Azure Machine Learning et de l’accélérateur MLOps v2.

Remarque : nous avons volontairement omis certains détails pour ne pas nous écarter du sujet, mais nous vous fournissons des liens utiles dans chaque partie.

 

Ingénierie ML

 

Le domaine du Machine Learning (ML) est complexe. Diverses compétences, connaissances et expériences sont nécessaires pour développer des solutions de production performantes. Face aux nombreuses spécialités qui existent (IA générative, traitement naturel du langage, vision par ordinateur, prédictions, Deep Learning, Machine Learning classique, etc.) en ajoutant à cela la complexité du développement de modèles, il est tout simplement impossible de trouver un profil qui couvre l’ensemble de ces aspects.

L’objectif du ML Engineer n’est pas de maîtriser l’ensemble de ces spécialités, mais plutôt d’avoir une bonne connaissance du ML et suffisamment de compétences dans les domaines de l’ingénierie logicielle, de l’ingénierie des données et de l’infrastructure pour pouvoir mettre en production des projets ML et développer des solutions fiables.

Selon Ben Wilson de Databricks, si les projets de ML n’aboutissent pas, c’est avant tout en raison du manque d’expérience des équipes de Data Science, d’utiliser un modèle de production à grande échelle pour résoudre un problème particulier ou qui ne parviennent tout simplement pas à comprendre les résultats attendus par l’entreprise. L’image ci-dessous présente les différentes causes des échecs des projets ML.

 

E-book Databricks sur l’ingénierie ML

E-book Databricks sur l’ingénierie ML

 

Dans les sections suivantes de cet article, nous allons aborder la problématique de l’infrastructure et la façon de déployer des plateformes de ML en production au moyen de l’accélérateur MLOps v2 sur Azure Machine Learning.

 

Opérations de Machine Learning

 

Le MLOps est une extension du DevOps. Il applique des principes et des pratiques DevOps aux projets de Machine Learning. Plus précisément, il couvre la gestion des données, l’environnement de déploiement, la gestion des versions des modèles et la surveillance des modèles pour permettre la réalisation d’expérimentations reproductibles.

Nous distinguons 5 niveaux de maturité :

  1. Pas de MLOps : développements et déploiements manuels
  2. DevOps sans MLOps : développement et test automatisés du code des applications.
  3. Apprentissage automatisé : gestion automatisée des modèles et des pipelines d’apprentissage
  4. Déploiement automatisé des modèles : déploiement automatisé et catalogue des points de terminaison (endpoints) ML
  5. MLOps complet : automatisation e2e

Pour plus d’informations sur les MLOps, veuillez consulter la documentation Microsoft.

 

Accélérateur MLOps v2

 

Il existe de nombreux articles, outils et référentiels consacrés aux MLOps. Pour autant, une configuration de A à Z reste une tâche très lourde, et nécessite des compétences dans les domaines de l’ingénierie logicielle, de l’infrastructure et du DevOps, sans oublier les données et le Machine Learning, le cœur des projets ML.

Présentation de certains outils et plateformes très connus pour les MLOps

Présentation de certains outils et plateformes très connus pour les MLOps (Source :  illustration extraite du site NimbleBox.ai)

 

Microsoft propose le service Azure Machine Learning sur Azure Cloud. Il s’agit d’une plateforme MLOps qui permet d’effectuer des développements sans code, avec un peu de code ou entièrement avec du code. Ce service peut être utilisé depuis le portail, mais nous recommandons aux data scientists/ingénieurs ML, ainsi qu’aux ingénieurs DevOps/MLOps de s’appuyer sur le SDK et l’interface CLI. Cette plateforme est équipée des composants essentiels pour effectuer des tâches MLOps, telles que les suivantes :

Ressources de Machine Learning Azure

Ressources de Machine Learning Azure

 

Enfin, Microsoft propose un framework MLOps, appelé Accélérateur MLOps v2, qui permet de configurer des projets ML e2e à l’aide du service AML en quelques minutes seulement. Voici le projet du référentiel dans lequel vous pouvez accéder au guide de déploiement avec Azure DevOps ou GitHub Actions.

Pour commencer à développer votre plateforme MLOps, il convient dans un premier temps de cloner le référentiel. Accédez ensuite au script sparse_checkout.sh. L’exécution de ce script Shell génèrera  un template MLOps.

Comme vous pouvez le voir, les premières lignes sont des arguments que vous pouvez définir dans le but de personnaliser votre projet MLOps :

  • Définir l’infrastructure en tant qu’outil de code (Terraform ou Bicep)
  • Définir le type de projet ML (classique, vision par ordinateur ou traitement du langage naturel)
  • Définir la version MLOps (interface CLI, SDK ou interface CLI pour une IA responsable)
  • Définir l’outil d’orchestration (Azure DevOps ou GitHub Actions)

Ensuite, vous devez choisir l’emplacement où enregistrer le projet, un nom, le nom de l’organisation GitHub et enfin le modèle de projet (vous pouvez laisser l’option par défaut).

L’emplacement où enregistrer le projet, un nom, le nom de l’organisation GitHub

 

Une fois que tous les arguments dont vous avez besoin sont définis, il vous suffit de créer un repository GitHub vide et d’activer l’authentification SSH. Consulter la documentation GitHub pour en savoir plus.

Après l’exécution de l’instruction sparse_checkout.sh, un modèle sera généré, comme le montre l’illustration suivante :

l’exécution de l’instruction sparse_checkout.sh

 

Dans cet exemple, nous avons généré un template classique, qui repose sur Terraform pour IaC et Azure DevOps pour l’orchestration au moyen de l’interface CLI AML.

Remarque : une fois que votre template de base est prêt, vous pouvez le personnaliser et l’adapter à vos besoins de projet ML.

 

Le template comporte plusieurs modules :

  • Data, qui contient un ensemble de données exemples.
  • Data-science, qui contient une configuration d’environnement Conda et du code source pour chaque étape du déploiement ML.
  • Infrastructure, qui contient la configuration des pipelines DevOps pour les modules IaC et Terraform afin de créer des services AML connexes.
  • MLOps, qui contient des configurations de déploiement (par lots et en ligne) et des pipelines DevOps pour des inférences d’apprentissage, par lots et en ligne.

À ce stade, remarquez la présence des fichiers de configuration yml les plus importants pour la construction des éléments suivants :

  • Pipeline d’infrastructure
  • Pipelines MLOps (inférences d’apprentissage, par lots et en ligne)

 

Présence des fichiers de configuration yml les plus importants pour la construction

 

Pour continuer sur Azure DevOps, importez le référentiel GitHub dans votre plateforme Azure DevOps. Ensuite, dans « Manage repositories », sélectionnez « Security » et définissez les autorisations du service de développement de la façon suivante :

référentiel GitHub dans votre plateforme Azure DevOps

 

Pour utiliser Terraform en tant qu’outil IaC, vous avez besoin de son extension. Pour créer des pipelines Azure à partir des précédents fichiers yml, vous devez créer des services principals avec des rôles de contributeur. Veuillez consulter la documentation Microsoft pour cette tâche.

Ensuite, accédez à Azure DevOps et cliquez sur Project Setting au bas de la page. Sous Pipelines, sélectionnez Service connections, New Azure service connection, puis Service principal (manual) et précisez les informations nécessaires pour votre service principal

Project Setting au bas de la page

 

Vous devez enfin configurer les pipelines : cliquez sur les 3 points à côté du bouton New pipeline. Sélectionnez Manage Security, puis choisissez Allow pour l’option Edit build pipeline.

New pipeline

 

Après avoir défini tous ces détails, vous pouvez créer vos pipelines.

 

Infrastructure as Code

 

Commencez par implémenter le pipeline Terraform IaC pour créer votre infrastructure.

Sélectionnez Pipelines, New pipeline, puis choisissez Azure Repos Git. Sélectionnez le référentiel, puis le fichier YAML des pipelines Azure existants et enfin la configuration yml pour IaC (tf-ado-deploy-infra.yml)

implémenter le pipeline Terraform IaC pour créer votre infrastructure

implémenter le pipeline Terraform IaC pour créer votre infrastructure SUITE

 

Votre pipeline IaC apparaît sous la forme suivante :

Votre pipeline IaC

 

Avant de créer un autre pipeline, essayons de comprendre le modèle yaml pour IaC.

Chargez les variables appropriées en fonction d’une branche spécifique. Dans ce cas, deux ensembles de variables d’environnement sont définis, « prod » sur la branche principale et « dev » sur toutes les autres. Définissez le déclenchement manuel et une Machine Virtuelle ubuntu pour l’agent hébergé (sur lequel le pipeline sera exécuté).

Définissez le déclenchement manuel et une Machine Virtuelle ubuntu pour l’agent hébergé

 

Le fichier config-infra-x est l’emplacement où vous définissez les variables d’environnement pour chaque environnement.

 

Continuez avec les deux étapes suivantes : créez un stockage blob dans lequel enregistrer le fichier terraform.tfstate de Terraform pour simplifier la collaboration entre l’équipe et bénéficier d’autres avantages. Déployez ensuite votre infrastructure en initialisant, validant, planifiant et appliquant le workflow Terraform.

workflow Terraform

 

Pour obtenir plus de détails sur le code utilisé pour ces différentes étapes, cliquez ici.

Comme vous pouvez le voir, la procédure est assez simple et vous n’avez pas besoin d’énormément d’expérience avec Terraform, car le plus gros de la configuration a déjà été effectué à votre place. Pour vérifier les détails de cette configuration, accédez à l’infrastructure, puis aux modules.

Notez qu’Azure Machine Learning repose sur 4 services : Storage Account, Key Vault, Azure Container Registry et Application Insights.

 

Pipelines MLOps

 

Une fois l’infrastructure livrée et l’espace de travail construit, vous pouvez procéder à la création des pipelines d’inférence ML (apprentissage, par lots, en ligne).

 

Pipeline d’apprentissage (Training)

 

Ce pipeline contient plusieurs tâches :

  • Installer az cli
  • Installer aml cli
  • Se connecter à l’espace de travail
  • Enregistrer l’environnement
  • Créer des calculs
  • Enregistrer les données
  • Exécuter le pipeline

 

 

Pipeline d’inférence par lots (Batch)

 

Ce pipeline contient plusieurs tâches :

  • Installer az cli
  • Installer aml cli
  • Se connecter à l’espace de travail
  • Créer des calculs
  • Créer un point de terminaison
  • Créer un déploiement
  • Tester le déploiement

 

 

Pipeline d’inférence en ligne

 

Ce pipeline contient plusieurs tâches :

  • Installer az cli
  • Installer aml cli
  • Se connecter à l’espace de travail
  • Créer un point de terminaison
  • Créer un déploiement
  • Allouer le trafic
  • Tester le déploiement

 

 

Nous avons suivi les mêmes étapes précédentes pour sélectionner la bonne configuration yml dans le but de créer les pipelines.

 

Comme vous pouvez le voir, tout est déjà créé et à la fin du parcours, vous aurez 4 pipelines, chacun d’eux effectuant une tâche spécifique pour permettre le cycle MLOps e2e.

tâche spécifique pour permettre le cycle MLOps e2e

 

À ce stade, vous avez automatisé tous les workflows, de l’infrastructure aux inférences par lots (Batch) et en ligne, et vous avez créé les bases essentielles de votre plateforme MLOps.

Maintenant, vous devez intégrer votre code ML existant dans ce modèle et connecter tous les éléments de façon appropriée (par exemple, utiliser les données existantes sur un Data Lake). En d’autres termes, accédez à l’écran suivant :

intégrer votre code ML existant

 

Et modifiez ces fichiers en y intégrant votre propre code !

Voici quelques liens utiles pour intégrer correctement votre code et commencer à adopter Azure Machine Learning (AML) en tant que plateforme MLOps :

Remarque : vous pouvez retrouver tous les détails dans les guides d’utilisation, concepts, références, etc. de la documentation AML.

 

Et pour avoir un autre point de vue, découvrez ce que nous venons de réaliser : jetez un œil à l’architecture globale que propose l’accélérateur MLOps v2, c’est tout simplement incroyable !

Accélérateur MLOPS v2 par Microsoft

Accélérateur MLOPS v2 par Microsoft (* nouveaux composants disponibles prochainement)

 

Conclusion sur la création d’un projet MLOps

 

Pour conclure, jamais la création d’un projet MLOps n’aura été aussi simple. Il vous suffit de vous appuyer sur le modèle généré et de le personnaliser en fonction de vos besoins.

 

Vous souhaitez obtenir de l’aide lors de vos projets de plateforme MLOps ? Contactez-nous !

 

Formation AZ 102

Nos autres articles
Commentaires
Laisser un commentaire

Restez au courant des dernières actualités !
Le meilleur de l’actualité sur le Cloud, le DevOps, l’IT directement dans votre boîte mail.