Lors de l'exécution de la formation et de l'inférence de modèles d'intelligence artificielle (IA) et d'apprentissage automatique (ML) sur Kubernetes, la mise à l'échelle dynamique vers le haut et vers le bas devient un élément critique. En plus de nécessiter un stockage à large bande passante et une mise en réseau pour ingérer des données, la formation des modèles d'IA nécessite également des capacités de calcul importantes (et coûteuses), principalement à partir de GPU ou d'autres processeurs spécialisés. Même en exploitant des modèles pré-entraînés, des tâches telles que la diffusion de modèles et le réglage fin en production nécessitent toujours plus de ressources de calcul que la plupart des charges de travail d'entreprise.
Kubernetes cloud-native est conçu pour une évolutivité rapide, vers le haut et vers le bas. Il est également conçu pour offrir plus d’agilité et une utilisation rentable des ressources pour les charges de travail dynamiques dans des environnements hybrides et multicloud.
Dans ce blog, nous abordons les trois méthodes les plus courantes pour faire évoluer les charges de travail d'IA/ML sur Kubernetes afin que vous puissiez obtenir des performances optimales, des économies de coûts et une adaptabilité pour une mise à l'échelle dynamique dans divers environnements.
Les trois méthodes courantes utilisées par Kubernetes pour faire évoluer une charge de travail sont l'Horizontal Pod Autoscaler (HPA), l'Horizontal Pod Autoscaler (VPA) et l'Horizontal Pod Autoscaler.
Voici une répartition de ces trois méthodes :
Chaque modalité présente ses avantages en matière de formation et d’inférence de modèles, que vous pouvez explorer dans les cas d’utilisation ci-dessous.
Dans de nombreux cas, les charges de travail d’entraînement et d’inférence des modèles d’IA distribués peuvent évoluer horizontalement (c’est-à-dire en ajoutant davantage de pods pour accélérer le processus d’entraînement ou le traitement des demandes). Cela permet aux charges de travail de bénéficier de HPA, qui peut faire évoluer le nombre de pods en fonction de mesures telles que l'utilisation du processeur et de la mémoire, ou même de mesures personnalisées et externes pertinentes pour la charge de travail. Dans les scénarios où la charge de travail varie au fil du temps, HPA peut ajuster dynamiquement le nombre de pods pour garantir une utilisation optimale des ressources.
Un autre aspect de la mise à l’échelle horizontale des charges de travail de l’IA dans Kubernetes est l’équilibrage de la charge. Pour garantir des performances optimales et un traitement rapide des demandes, les demandes entrantes doivent être réparties sur plusieurs instances ou pods. C’est pourquoi l’un des outils idéaux pouvant être utilisés en conjonction avec HPA est un contrôleur d’entrée .
Les tâches de formation des modèles d’IA sont souvent gourmandes en ressources, nécessitant des ressources CPU, GPU et mémoire importantes. VPA peut ajuster ces allocations de ressources de manière dynamique. Cela permet de garantir que chaque pod dispose de suffisamment de ressources pour gérer efficacement la charge de travail de formation et que tous les pods attribués disposent d'une capacité de calcul suffisante pour effectuer des calculs. De plus, les besoins en mémoire peuvent fluctuer considérablement lors de la formation de grands modèles. VPA peut aider à prévenir les erreurs de manque de mémoire en augmentant l’allocation de mémoire selon les besoins.
Bien qu’il soit techniquement possible d’utiliser HPA et VPA ensemble, cela nécessite une configuration minutieuse pour éviter les conflits, car ils peuvent essayer de faire évoluer la même charge de travail de différentes manières (c’est-à-dire horizontalement ou verticalement). Il est essentiel de définir clairement les limites de chaque autoscaler, en veillant à ce qu’elles se complètent plutôt qu’elles n’entrent en conflit les unes avec les autres. Une approche émergente consiste à utiliser les deux avec des portées différentes – par exemple, HPA pour la mise à l’échelle sur plusieurs pods en fonction de la charge de travail et VPA pour affiner l’allocation des ressources de chaque pod dans les limites définies par HPA.
Cluster Autoscaler peut aider à ajuster de manière dynamique le pool global de ressources d'infrastructure de calcul, de stockage et de réseau disponibles à l'échelle du cluster pour répondre aux exigences des charges de travail AI/ML. En ajustant le nombre de nœuds dans un cluster en fonction des demandes actuelles, une organisation peut équilibrer la charge au niveau macro. Cela est nécessaire pour garantir des performances optimales, car les charges de travail d’IA/ML peuvent exiger des ressources de calcul importantes de manière imprévisible.
En résumé, voici les trois façons dont la mise à l’échelle automatique de Kubernetes fonctionne et profite aux charges de travail de l’IA :
HPA, VPA et Cluster Autoscaler se complètent dans la gestion des charges de travail AI/ML dans Kubernetes. Cluster Autoscaler garantit qu'il y a suffisamment de nœuds pour répondre aux demandes de charge de travail, HPA répartit efficacement les charges de travail sur plusieurs pods et VPA optimise l'allocation des ressources de ces pods. Ensemble, ils fournissent une solution complète de mise à l’échelle et de gestion des ressources pour les applications d’IA/ML dans les environnements Kubernetes.
Visitez notre page Power and Protect Your AI Journey pour en savoir plus sur la manière dont F5 et NGINX peuvent vous aider à fournir, sécuriser et optimiser vos charges de travail IA/ML.
« Cet article de blog peut faire référence à des produits qui ne sont plus disponibles et/ou qui ne sont plus pris en charge. Pour obtenir les informations les plus récentes sur les produits et solutions F5 NGINX disponibles, explorez notre famille de produits NGINX . NGINX fait désormais partie de F5. Tous les liens NGINX.com précédents redirigeront vers un contenu NGINX similaire sur F5.com."