MLOps, ou opérations de machine learning, est un ensemble de pratiques qui combinent le machine learning (ML), l’ingénierie des données et le DevOps pour rationaliser et automatiser le cycle de vie complet des modèles ML. MLOps est un aspect essentiel des flux de travail actuels en science des données. C’est un composant fondamental du paysage moderne des technologies de l’information, et son influence devrait augmenter considérablement dans les années à venir. Il englobe tout, du traitement des données et du développement des modèles à leur déploiement, leur surveillance et leur amélioration continue, en faisant une discipline cruciale pour intégrer le machine learning dans les environnements de production.
Cependant, un défi majeur dans MLOps réside dans la demande d’infrastructure scalable et flexible capable de gérer les exigences distinctes des charges de travail en machine learning. Alors que le cycle de développement est souvent expérimental, utilisant typiquement des outils interactifs comme les notebooks Jupyter, le déploiement en production nécessite automatisation et scalabilité.
Kubernetes, un outil de conteneurisation ou d’orchestration, offre cette infrastructure essentielle pour soutenir MLOps à grande échelle, garantissant flexibilité, scalabilité et gestion efficace des ressources pour divers flux de travail ML. Pour comprendre son importance davantage, décomposons-le en utilisant des exemples simples et concrets.
1. Scalabilité et gestion des ressources
Kubernetes offre un support exceptionnel pour le dimensionnement des flux de travail en apprentissage automatique, qui nécessitent souvent des ressources informatiques substantielles. En particulier pour les modèles d’apprentissage profond, le dimensionnement dynamique est crucial pour gérer les charges de travail fluctuantes pendant les phases d’entraînement et d’inférence. Kubernetes automatise l’orchestration des ressources, permettant un dimensionnement horizontal des services conteneurisés en réponse à la demande en temps réel. Dans les pipelines MLOps, les charges de travail impliquent généralement de grands ensembles de données, plusieurs tâches d’ingénierie des caractéristiques et un entraînement de modèle gourmand en ressources. Kubernetes distribue efficacement ces tâches entre les nœuds au sein d’un cluster, allouant dynamiquement des ressources CPU, GPU et mémoire en fonction des besoins de chaque tâche. Cette approche assure des performances optimales à travers les flux de travail en apprentissage automatique, quel que soit l’échelle de l’infrastructure. De plus, les capacités d’auto-dimensionnement de Kubernetes améliorent l’efficacité des coûts en réduisant les ressources inutilisées pendant les périodes de faible demande.
Exemple
Par exemple, une entreprise qui gère un système de recommandation (comme Netflix suggérant des films) pourrait constater une demande plus élevée à certains moments de la journée. Kubernetes s’assure que le système peut gérer plus de requêtes pendant les heures de pointe et réduire la capacité lorsqu’il est plus calme. De même, Airbnb utilise Kubernetes pour gérer ses charges de travail en apprentissage automatique pour des recherches et des recommandations personnalisées. Avec un trafic utilisateur fluctuant, Airbnb tire parti de Kubernetes pour dimensionner automatiquement ses services ML. Par exemple, pendant les saisons de voyage de pointe, Kubernetes alloue dynamiquement plus de ressources pour gérer l’augmentation des requêtes des utilisateurs, optimisant les coûts et garantissant une haute disponibilité.
2. Consistance à travers les environnements
Un des défis principaux en matière de MLOps est d’assurer la reproductibilité des expériences et des modèles d’apprentissage automatique. Imaginez que vous préparez un gâteau et que vous souhaitez qu’il soit identique, que vous le cuisiez à la maison ou dans une cuisine commerciale. Vous suivez la même recette pour garantir la cohérence. Kubernetes fait quelque chose de similaire en utilisant des conteneurs. Ces conteneurs regroupent le modèle d’apprentissage automatique et toutes ses dépendances (logiciels, bibliothèques, etc.), de sorte qu’il fonctionne de la même manière, que ce soit en test sur l’ordinateur d’un développeur ou en exécution dans un grand environnement cloud. Cela est crucial pour les projets d’apprentissage automatique car même de petites différences dans la configuration peuvent entraîner des résultats inattendus.
Exemple
Spotify a adopté Kubernetes pour conteneuriser ses modèles d’apprentissage automatique et garantir la reproductibilité dans différents environnements. En regroupant les modèles avec toutes les dépendances dans des conteneurs, Spotify minimise les écarts qui pourraient survenir lors du déploiement. Cette pratique a permis à Spotify de maintenir la cohérence dans les performances des modèles à travers les environnements de développement, de test et de production, réduisant ainsi le problème du « ça fonctionne sur ma machine ».
3. Automatisation du travail
Dans un flux de travail MLOps typique, les data scientists soumettent des mises à jour de code et de modèle aux systèmes de contrôle de version. Ces mises à jour activent des pipelines CI automatisés qui gèrent la construction, les tests et la validation des modèles dans des environnements conteneurisés. Kubernetes simplifie ce processus en orchestrant les tâches conteneurisées, garantissant que chaque étape du développement et des tests de modèle est réalisée dans un environnement évolutif et isolé. Pendant ce temps, les modèles, après validation, sont déployés en douceur dans des environnements de production en utilisant les fonctionnalités de déploiement et de mise à l’échelle natives de Kubernetes, permettant des mises à jour continues, fiables et à faible latence des modèles d’apprentissage automatique.
Exemple
Par exemple, lorsqu’une nouvelle version de modèle ML est prête (comme un filtre anti-spam dans Gmail), Kubernetes peut la déployer automatiquement, garantissant qu’elle fonctionne bien et remplace l’ancienne version sans interruption. De même, Zalando – un grand détaillant de mode européen – utilise Kubernetes dans son pipeline CI/CD pour les mises à jour de modèles ML.
4. Surveillance Améliorée et Gouvernance des Modèles
Surveiller les modèles d’apprentissage automatique en production peut être assez difficile en raison de la nature constamment changeante des données d’entrée et du comportement évolutif des modèles au fil du temps. Kubernetes améliore considérablement l’observabilité des systèmes ML en offrant des outils de surveillance intégrés comme Prometheus et Grafana, ainsi que ses propres capacités de journalisation natives. Ces outils permettent aux data scientists et aux ingénieurs MLOps de surveiller des métriques essentielles liées à la performance du système, telles que l’utilisation du CPU, de la mémoire et du GPU, ainsi que des métriques spécifiques au modèle comme la précision des prédictions, le temps de réponse et la détection de dérive.
Exemple
Par exemple, les capacités de Kubernetes aident NVIDIA à définir des métriques personnalisées liées à leurs modèles d’apprentissage automatique, telles que la dérive du modèle ou les changements de précision au fil du temps. Ils mettent en place des alertes pour informer les data scientists et les ingénieurs MLOps lorsque ces métriques sortent des seuils acceptables. Cette surveillance proactive aide à maintenir les performances du modèle et garantit que les modèles fonctionnent comme prévu.
5. Orchestration de la formation et de l’inférence distribuées
Kubernetes a été essentiel pour orchestrer la formation et l’inférence distribuées de modèles d’apprentissage automatique à grande échelle. La formation de modèles complexes, en particulier les réseaux neuronaux profonds, nécessite souvent la distribution des tâches de calcul sur plusieurs machines ou nœuds, utilisant fréquemment du matériel spécialisé tel que des GPU ou des TPU. Kubernetes offre une prise en charge native des cadres de calcul distribué tels que TensorFlow, PyTorch et Horovod, permettant aux ingénieurs en apprentissage automatique de mettre à l’échelle efficacement la formation des modèles à travers les clusters.
Exemple
Par exemple, Uber utilise Kubernetes pour la formation distribuée de ses modèles d’apprentissage automatique utilisés dans divers services, y compris le covoiturage et la livraison de repas. De plus, Kubernetes sert les modèles en temps réel pour fournir aux utilisateurs les estimations des temps d’arrivée (ETAs) et les tarifs avec une faible latence, en s’adaptant à la demande pendant les heures de pointe.
6. Flexibilité hybride et multi-cloud
Dans MLOps, les organisations déploient souvent des modèles dans des environnements divers, y compris sur site, dans des nuages publics et sur des dispositifs edge. La conception cloud-agnostique de Kubernetes permet une orchestration transparente dans des configurations hybrides et multi-cloud, offrant une flexibilité essentielle pour la souveraineté des données et les besoins en faible latence. En abstraire l’infrastructure, Kubernetes permet aux modèles ML d’être déployés et scalés à travers les régions et les fournisseurs, soutenant la redondance, la récupération après sinistre et la conformité sans verrouillage du fournisseur.
Exemple
Par exemple, Alibaba utilise Kubernetes pour exécuter ses charges de travail en apprentissage automatique à la fois dans des centres de données sur site et dans des environnements de cloud public. Cette configuration hybride permet à Alibaba de gérer les problèmes de souveraineté des données tout en offrant la flexibilité de faire évoluer les charges de travail en fonction de la demande. En utilisant les capacités cloud-agnostiques de Kubernetes, Alibaba peut déployer et gérer efficacement ses modèles à travers différents environnements, optimisant ainsi les performances et les coûts.
7. Tolérance aux pannes
La tolérance aux pannes de Kubernetes garantit que les charges de travail d’apprentissage automatique peuvent se dérouler sans heurts, même si des nœuds ou des conteneurs individuels rencontrent des problèmes. Cette fonctionnalité est cruciale pour la formation distribuée, où la perte d’un nœud pourrait sinon entraîner un redémarrage de l’ensemble du processus de formation, gaspillant ainsi du temps et des ressources informatiques. Le plan de contrôle de Kubernetes surveille en continu la santé des nœuds et des pods, et lorsqu’il détecte une défaillance d’un nœud, il marque automatiquement le pod affecté comme « non sain ». Kubernetes reprogramme alors la charge de travail du pod défaillant vers un autre nœud sain du cluster. Si des nœuds GPU sont disponibles, Kubernetes en sélectionne automatiquement un, permettant ainsi à la formation de se poursuivre sans interruption.
Exemple
Uber exploite Kubernetes avec Horovod pour la formation distribuée de modèles d’apprentissage profond. Dans cette configuration, Kubernetes offre une tolérance aux pannes ; si un nœud exécutant un worker Horovod échoue, Kubernetes redémarre automatiquement le worker sur un nœud différent. En incorporant des points de contrôle, les tâches de formation d’Uber peuvent récupérer de telles pannes avec une perte minimale. Ce système permet à Uber de former des modèles à grande échelle de manière plus fiable, même en cas de problèmes matériels ou réseau occasionnels.
Conclusion
Kubernetes est devenu essentiel dans MLOps, fournissant une infrastructure robuste pour gérer et évoluer efficacement les workflows d’apprentissage automatique. Ses forces en orchestration des ressources, en containerisation, en déploiement continu et en surveillance rationalisent l’ensemble du cycle de vie des modèles ML, du développement à la production. À mesure que les modèles d’apprentissage automatique deviennent plus complexes et importants au sein des opérations d’entreprise, Kubernetes continuera d’être un élément clé pour améliorer la scalabilité, l’efficacité et la fiabilité des pratiques MLOps. Au-delà du soutien à l’implémentation technique, Kubernetes stimule également l’innovation et l’excellence opérationnelle dans les systèmes pilotés par l’IA.
Source:
https://dzone.com/articles/the-importance-of-kubernetes-in-mlops