Partager via


Concepts - Opérations d’apprentissage automatique (MLOps) pour des flux de travail IA et d’apprentissage automatique

Dans cet article, vous découvrez les opérations d’apprentissage automatique (MLOps), notamment les types de pratiques et d’outils impliqués, et comment cela peut simplifier et accélérer vos flux de travail IA et d’apprentissage automatique sur Azure Kubernetes Service (AKS).

Qu’est-ce que MLOps ?

Les opérations d’apprentissage automatique (MLOps) englobent des pratiques qui facilitent la collaboration entre les scientifiques des données, les opérations informatiques et les parties prenantes de l’entreprise, ce qui garantit que les modèles d’apprentissage automatique sont développés, déployés et gérés efficacement. MLOps applique des principes DevOps aux projets d’apprentissage automatique, visant à automatiser et à simplifier le cycle de vie de l’apprentissage automatique de bout en bout. Ce cycle de vie inclut l’apprentissage, l’empaquetage, la validation, le déploiement, la supervision et le réentraînement des modèles.

MLOps nécessite que plusieurs rôles et outils travaillent ensemble efficacement. Les scientifiques des données se concentrent sur des tâches liées à l’apprentissage du modèle, ce que l’on appelle la boucle interne. Les ingénieurs en apprentissage automatique et les équipes d’opérations informatiques gèrent la boucle externe, où ils appliquent des pratiques DevOps pour empaqueter, valider, déployer et surveiller des modèles. Lorsque le modèle nécessite un réglage précis ou un réentraînement, le processus revient à la boucle interne.

Pipeline MLOps

Votre pipeline MLOps peut tirer profit de différents outils et microservices déployés séquentiellement ou en parallèle. Voici des exemples de composants clés de votre pipeline qui bénéficient de l’implémentation des meilleures pratiques suivantes pour réduire le traitement et permettre une itération plus rapide :

  • Magasin de données non structuré pour les nouvelles données entrant dans votre application
  • Base de données vectorielle pour stocker et interroger des données structurées et prétraitées
  • Infrastructure d’ingestion et d’indexation des données
  • Flux de travail d’ingestion de vecteurs et/ou de réentraînement de modèle
  • Outils de collecte de mesures et d’alerte (suivi des performances du modèle, volume de données ingérées, etc.)
  • Outils de gestion du cycle de vie

DevOps et MLOps

DevOps est une combinaison d’outils et de pratiques qui vous permet de créer des applications robustes et reproductibles. L’objectif de l’utilisation de DevOps consiste à offrir rapidement une valeur à vos utilisateurs finaux. La création, le déploiement et la surveillance de modèles robustes et reproductibles pour offrir une valeur aux utilisateurs finaux est le principal objectif de MLOps.

Il existe trois processus essentiels à MLOps :

  • Charges de travail d’apprentissage automatique dont un scientifique des données est responsable, notamment l’analyse exploratoire des données (EDA), l’ingénierie des fonctionnalités et l’apprentissage et le réglage des modèles.
  • Pratiques de développement logiciel, notamment la planification, le développement, le test et l’empaquetage du modèle pour le déploiement.
  • Aspects opérationnels de déploiement et de maintenance du modèle en production, notamment la publication, la configuration des ressources et la surveillance du modèle.

Principes DevOps qui s’appliquent à MLOps

MLOps tire profit de plusieurs principes de DevOps pour améliorer le cycle de vie de l’apprentissage automatique, comme l’automatisation, l’intégration continue et la livraison continue (CI/CD), le contrôle de code source, la planification Agile et l’infrastructure en tant que code (IaC) .

Automation

En automatisant les tâches, vous pouvez réduire les erreurs manuelles, augmenter l’efficacité et garantir la cohérence tout au long du cycle de vie ML. L’automatisation peut être appliquée à différentes étapes, notamment la collecte de données, l’apprentissage du modèle, le déploiement et la surveillance. Grâce à l’automatisation, vous pouvez également appliquer des mesures proactives dans le pipeline IA pour garantir la conformité des données avec les stratégies de votre organisation.

Par exemple, votre pipeline peut automatiser :

  • Le réglage/réentraînement du modèle à intervalles réguliers ou lorsqu’une certaine quantité de nouvelles données est collectée dans votre application.
  • La détection d’une dégradation des performances pour lancer un réglage précis ou un réentraînement sur un autre sous-ensemble de données.
  • L’analyse des vulnérabilités et des risques courants (CVE) sur les images conteneur de base extraites de registres de conteneurs externes pour garantir des pratiques de sécurité sûres.

Intégration continue (CI)

L’intégration continue couvre la création et la vérification des aspects du processus de développement du modèle. L’objectif de l’intégration continue est de créer le code et de vérifier la qualité du code et du modèle avant le déploiement. Cela inclut des tests sur une plage d’un échantillon de jeux de données pour s’assurer que le modèle s’exécute comme prévu et répond aux normes de qualité.

Dans MLOps, l’intégration continue peut impliquer :

  • Refactorisation du code exploratoire dans les notebooks Jupyter dans des scripts Python ou R.
  • La validation de nouvelles données d’entrée pour des valeurs manquantes ou d’erreur.
  • Des tests unitaires et d’intégration dans le pipeline de bout en bout.

Pour effectuer des tests unitaires et de linting, vous pouvez utiliser des outils d’automatisation tels qu’Azure Pipelines dans Azure DevOps ou GitHub Actions.

Déploiement continu (CD)

La livraison continue implique les étapes nécessaires au déploiement en toute sécurité d’un modèle en production. La première étape consiste à empaqueter et déployer le modèle dans des environnements de préproduction, tels que des environnements de développement et de test. La portabilité des paramètres, des hyperparamètres et d’autres artefacts de modèle est un aspect important à conserver lorsque vous promouvez le code via ces environnements. Cette portabilité est particulièrement importante lorsqu’il s’agit de grands modèles de langage (LLM) et de modèles de diffusion stables. Une fois que le modèle réussit les tests unitaires et d’assurance qualité (QA), vous pouvez l’approuver pour un déploiement dans l’environnement de production.

Contrôle de code source

Le contrôle de code source, ou contrôle de version, est essentiel pour gérer les modifications apportées au code et aux modèles. Dans un système ML, cela fait référence au contrôle de version des données, du code et du modèle, ce qui permet aux équipes interfonctionnelles de collaborer efficacement et de suivre les modifications au fil du temps. L’utilisation d’un système de contrôle de code source basé sur Git, comme Azure Repos dans Azure DevOps ou un référentiel GitHub, vous permet de conserver par programmation un historique des modifications, de revenir aux versions précédentes et de gérer les branches pour différentes expériences.

Planification agile

La planification Agile implique de diviser un travail en sprints, qui sont des délais courts d’exécution de tâches spécifiques. Cette approche permet aux équipes de s’adapter rapidement aux modifications et de fournir des améliorations incrémentielles au modèle. L’apprentissage du modèle peut être un processus continu, et la planification Agile peut aider à étendre le projet et à améliorer l’alignement de l’équipe.

Vous pouvez utiliser des outils comme Azure Boards dans Azure DevOps ou des problèmes GitHub pour gérer votre planification Agile.

Infrastructure en tant que code (IaC)

Vous utilisez une infrastructure en tant que code pour répéter et automatiser l’infrastructure nécessaire à l'apprentissage, au déploiement et au service de vos modèles. Dans un système ML, une infrastructure en tant que code permet de simplifier et de définir les ressources Azure appropriées nécessaires au type de travail spécifique dans le code, et le code est conservé dans un référentiel. Cela vous permet de contrôler la version de votre infrastructure et d’apporter des modifications pour une optimisation des ressources, une efficacité des coûts, etc. si nécessaire.

Étapes suivantes

Consultez les articles suivants pour en savoir plus sur les meilleures pratiques de MLOps dans vos applications intelligentes sur AKS :