Partager via


Utiliser Azure Kubernetes Service pour héberger des charges de travail basées sur GPU

Cet article explique comment exécuter efficacement des charges de travail qui utilisent des nœuds d’unité de traitement graphique (GPU) sur un cluster Azure Kubernetes Service (AKS). Découvrez comment choisir la référence SKU appropriée, utiliser des nœuds GPU pour entraîner des modèles Machine Learning et utiliser des nœuds GPU pour exécuter l’inférence sur AKS.

Scénarios

Les charges de travail GPU peuvent être coûteuses à exécuter. Pour éviter des coûts inutiles, sachez quand déployer des nœuds basés sur des GPU dans vos clusters AKS.

Les GPU sont spécialement conçus pour les graphiques, l’IA et l’apprentissage automatique, ainsi que pour des tâches spécialisées, ce qui les rend idéaux pour les charges de travail intensives en calcul. Les unités de traitement centralisées (UC) gèrent efficacement la logique et le branchement complexes. Les GPU sont optimisés pour le débit et gèrent efficacement les opérations arithmétiques et vectorielles de base.

Pour déterminer quand utiliser des GPU pour les charges de travail AKS, vous devez comprendre l’optimisation du GPU, l’intensité de calcul et d’autres facteurs qui affectent les performances. Pour mieux comprendre l’utilisation des GPU pour les charges de travail AKS, examinez les exemples de charges de travail suivants qui bénéficient de nœuds GPU dans un cluster AKS.

Science des données et analyses

Utilisez des GPU pour accélérer le prétraitement des données, l’ingénierie des fonctionnalités et l’apprentissage des modèles dans les workflows de science des données. Pour utiliser efficacement des GPU, les infrastructures telles que RAPIDS et la prise en charge du GPU dans Dask étendent les bibliothèques de traitement de données populaires, telles que pandas et scikit-learn.

Les moteurs de requête SQL et les bases de données columnar comme HeavyDB utilisent des GPU pour effectuer des requêtes et des analyses sur des jeux de données volumineux.

Machine Learning et Deep Learning

Les frameworks machine learning et deep learning populaires tels que TensorFlow, PyTorch, vLLM et Triton Inference Server bénéficient de GPU, car ils accélèrent les tâches qui entraînent les modèles et exécutent l’inférence. Par exemple, Azure Machine Learning prend en charge le modèle hautes performances servant sur un point de terminaison en ligne managé à l’aide du serveur d’inférence Triton.

Les modèles Deep Learning utilisent des réseaux neuronaux complexes. Le traitement parallèle sur les GPU accélère leurs calculs. Les GPU fournissent des opérations de multiplication de matrices et de convolution très efficaces, qui sont des opérations fondamentales dans le deep learning.

Vous pouvez également utiliser des GPU pour accélérer des tâches telles que la classification d’images, la détection d’objets, le traitement du langage naturel et la reconnaissance vocale.

Vision par ordinateur et traitement d’images

Les tâches de vision par ordinateur interprètent les données visuelles pour en extraire des informations significatives. Ces tâches apparaissent dans des applications basées sur l’IA telles que les véhicules autonomes, l’imagerie médicale, les systèmes de surveillance et la réalité augmentée. Les GPU utilisent un traitement parallèle pour gérer efficacement les données d’image à grande échelle et les calculs complexes pour les tâches telles que la détection d’objets, la classification d’images et l’extraction de fonctionnalités.

Traitement vidéo et streaming

Les charges de travail qui transcodent, encodent et diffusent des vidéos en continu sont gourmandes en calcul, surtout si elles ont du contenu haute résolution. Les GPU fournissent une plateforme efficace pour le traitement vidéo à faible latence et à débit élevé dans les applications telles que les flux d’événements sportifs et les vidéos d’entreprise.

Les nœuds d’agent compatibles GPU déchargent les tâches gourmandes en graphiques vers le GPU dans les environnements de bureau virtuel. Les fonctionnalités d’encodage et de décodage vidéo qui utilisent des GPU prennent en charge le streaming vidéo en temps réel, le transcodage et l’analytique.

Pour accélérer les tâches de vision par ordinateur telles que la détection d’objets, le suivi des objets et le traitement vidéo, utilisez des frameworks tels que OpenCV, OpenCL, NVIDIA CUDA et NVIDIA cuDNN.

Les plateformes de jeux et les services de jeux cloud utilisent des GPU pour restituer des graphiques haute résolution et streamer un gameplay fluide sur Internet.

Calcul haute performance

Les applications de calcul haute performance (HPC) nécessitent souvent des simulations complexes, des analyses numériques et des calculs scientifiques. Pour exécuter ces tâches efficacement, vous pouvez utiliser des GPU pour paralléliser la charge de travail sur plusieurs cœurs. Des exemples d’applications HPC qui nécessitent une puissance de traitement parallèle massive incluent les simulations scientifiques, les prévisions météorologiques, la dynamique des fluides computationnelle et la modélisation moléculaire. Les GPU prennent en charge les calculs parallèles et accélèrent les charges de travail HPC. Ils améliorent également les performances dans l’informatique scientifique et de recherche.

Pour accélérer les applications HPC, les infrastructures telles que NVIDIA CUDA, OpenCL et OpenACC fournissent des API et des bibliothèques compatibles GPU.

Analyse génomique et bioinformatique

Charges de travail en sciences de la santé et de la vie, telles que l’analyse génomique et les applications bioinformatiques, traitent les données génétiques, comme les séquences d’ADN et les structures de protéines. Ils s’appuient sur des algorithmes complexes pour aligner les séquences, les variantes d’appel et les données génomiques de mine. Les GPU accélèrent les flux de travail d’analyse génomique afin que les chercheurs puissent traiter les données et découvrir rapidement des insights.

Modèles IA génératifs

Les modèles de langage comme OpenAI GPT, Meta Llama, Falcon et Phi open models peuvent tirer parti des fonctionnalités de traitement parallèle GPU. Utilisez des GPU pour exécuter ces modèles et améliorer les performances.

Les GPU accélèrent les tâches d’apprentissage et d’inférence, qui impliquent des calculs complexes et de grandes quantités de données. Les GPU ont des capacités de traitement parallèle qui divisent les grandes tâches de calcul d’un modèle donné en sous-tâches plus petites qui s’exécutent simultanément. Ce processus réduit la latence et améliore les performances.

Les modèles de langage ont souvent des réseaux neuronaux complexes avec plusieurs couches et paramètres, ce qui peut augmenter la demande en calcul. Les GPU accélèrent les opérations clés dans le traitement du langage, telles que la multiplication de matrices et les convolutions, ce qui réduit le temps nécessaire à l’apprentissage et à l’inférence.

Les GPU fournissent une capacité de mémoire, une bande passante et une puissance de traitement suffisantes pour gérer les applications basées sur des modèles de langage qui ont des interfaces conversationnelles et génèrent du texte. Par exemple, les améliorations du GPU fournissent des réponses à faible latence pour les utilisateurs qui interagissent avec des chatbots et des assistants IA.

Toutes les charges de travail ne bénéficient pas de nœuds d’agent compatibles GPU. Dans certains cas, les PROCESSEURs sont suffisants. Par exemple, les charges de travail qui sont principalement liées aux entrées et sorties ou qui ne nécessitent pas de calcul lourd peuvent ne pas tirer parti des GPU.

Témoignages client

De nombreux clients Microsoft tirent parti des charges de travail GPU pour innover pour leurs clients. Prenons les exemples suivants :

Bonnes pratiques de déploiement des charges de travail GPU

AKS propose différentes options pour déployer des pools de nœuds Linux et Windows activés par GPU et des charges de travail.

Déploiement de charges de travail Linux

  • Créez un pool de nœuds avec une machine virtuelle compatible GPU prise en charge qui utilise des GPU NVIDIA ou des GPU AMD. Suivez les instructions du fournisseur GPU pour installer le plug-in d’appareil Kubernetes associé. Cette méthode ne vous permet pas de mettre à jour un pool de nœuds existant pour ajouter des GPU.

  • Comprenez les limitations lorsque vous utilisez un pool de nœuds Linux activé par GPU Azure. AKS n’applique pas de correctifs de sécurité automatiques et le comportement par défaut du cluster n’est pas géré.

  • Utilisez des sélecteurs de nœuds Kubernetes, une affinité de nœud et des teintes et des tolérances lorsque vous planifiez des charges de travail sur vos pools de nœuds avec GPU.

Déploiement de charges de travail Windows

  • Créez un pool de nœuds avec une machine virtuelle compatible avec GPU prise en charge. Cette approche crée un pool de nœuds Windows compatible GPU. AKS installe automatiquement les pilotes et le plug-in d’appareil Kubernetes. Cette méthode ne vous permet pas de mettre à jour un pool de nœuds existant pour ajouter des GPU.

    Lorsque vous sélectionnez une machine virtuelle compatible GPU prise en charge, AKS installe automatiquement le pilote NVIDIA CUDA ou GRID requis. Certaines charges de travail dépendent d’un pilote spécifique, ce qui peut affecter votre déploiement. Pour les tailles de VM de la série NC et ND, AKS installe le pilote CUDA. Pour les tailles de VM de la série NV, AKS installe le pilote GRID.

  • Comprendre les limitations lorsque vous utilisez un pool de nœuds Windows.

  • Utilisez des sélecteurs de nœuds Kubernetes, l'affinité de nœuds, ainsi que les taints et tolérances lorsque vous planifiez des charges de travail sur vos pools de nœuds activés pour GPU.

Note

Le GPU Windows est une fonctionnalité en avant-première. Vous devez enregistrer l’indicatif de fonctionnalité WindowsGPUPreview.

Opérateur NVIDIA GPU

Utilisez l’opérateur GPU NVIDIA pour déployer et gérer des ressources GPU dans des clusters Kubernetes. L’opérateur automatise l’installation, la configuration et la maintenance des composants logiciels requis. Cette approche permet de garantir une utilisation optimale des GPU NVIDIA pour les charges de travail gourmandes en ressources, telles que l’IA et le Machine Learning.

L’opérateur GPU NVIDIA gère automatiquement les composants logiciels NVIDIA dont vous avez besoin pour déployer des GPU, comme le plug-in d’appareil NVIDIA pour Kubernetes et le runtime de conteneur NVIDIA. L’opérateur installe automatiquement le pilote. Pour plus d’informations, consultez vue d’ensemble de l’opérateur GPU NVIDIA.

Si vous souhaitez améliorer le contrôle et la flexibilité des charges de travail GPU avancées, utilisez l’opérateur GPU NVIDIA avec vos nœuds compatibles GPU sur AKS. L’opérateur ne prend pas en charge les GPU Windows.

Envisagez les meilleures pratiques suivantes :

  • Utilisez l’opérateur GPU NVIDIA pour effectuer des configurations GPU avancées, telles que la sélection de version du pilote et le découpage temporel GPU.

  • Ignorez l’installation automatique du pilote avant d’utiliser l’opérateur.

  • Définissez le nombre minimal sur 1 lorsque vous utilisez l’opérateur avec l'autoscaler de cluster.

Note

Microsoft ne prend pas en charge ni ne gère la maintenance et la compatibilité des pilotes NVIDIA dans le cadre du déploiement d’images de nœud lorsque vous utilisez l’opérateur GPU NVIDIA. Pour plus d’informations, consultez les meilleures pratiques gpu pour AKS.

Déploiement de charge de travail GPU pour les modèles de langage

L’opérateur de chaîne d’outils IA simplifie l’exécution de modèles de langage open source, tels que Falcon, sur votre cluster Kubernetes. Vous pouvez déployer l’opérateur de chaîne d’outils IA sur votre cluster AKS en tant que fonctionnalité gérée pour AKS. L’opérateur de chaîne d’outils IA utilise Karpenter pour approvisionner et déployer automatiquement des nœuds GPU en fonction d’une spécification dans la définition de ressource personnalisée de l’espace de travail de votre modèle choisi. L’opérateur de chaîne d’outils IA crée le serveur d’inférence en tant que point de terminaison pour votre modèle de langage et réduit le temps d’intégration afin de vous concentrer sur les opérations de Machine Learning au lieu de la configuration et de la maintenance de l’infrastructure.

Pour améliorer les opérations d’IA sur AKS, l’opérateur de chaîne d’outils IA fournit les fonctionnalités suivantes :

  • Gère les images conteneur : Utilisez des images conteneur pour gérer les modèles de langage. L’opérateur de chaîne d’outils IA fournit un serveur HTTP afin que vous puissiez utiliser des espaces de travail de modèle prédéfinis pour effectuer l’inférence, les outils d’appel et utiliser le protocole MCP (Model Context Protocol).

  • Prend en charge les modèles BYO (bring-your-own) : Utilisez l’opérateur de chaîne d’outils IA pour utiliser des modèles de langage préentraînés internes à l’aide d’un modèle de déploiement personnalisé et des HuggingFace Transformers pour l’inférence.

  • Configure le matériel GPU : L’opérateur de chaîne d’outils IA applique automatiquement des configurations prédéfinies en fonction des exigences du modèle. Vous n’avez pas besoin de régler manuellement les paramètres de déploiement pour qu’ils correspondent au matériel GPU ou résolvent les erreurs de mémoire insuffisante du GPU (OOM).

  • Fournit une surveillance intégrée de l’inférence : Lorsque vous déployez un modèle à l’aide du moteur d’inférence vLLM par défaut, l’opérateur de chaîne d’outils IA surface les métriques vLLM en temps réel via Prometheus et Grafana et expose des métriques sur les performances et l’intégrité de l’inférence dans votre cluster AKS.

Pour plus d’informations sur l’opérateur de chaîne d’outils IA, consultez les ressources suivantes :

Mise à l’échelle des charges de travail et des clusters

Pour les scénarios d’IA et d’apprentissage automatique, vous devez différencier les charges de travail d’entraînement et les inférences avec des modèles pré-entraînés. Pour créer et entraîner un modèle Machine Learning, utilisez le calcul GPU conçu pour le deep learning et parallélisez les calculs IA. L’entraînement vous oblige souvent à mettre à l’échelle les ressources GPU progressivement et à distribuer de grandes quantités de données entre les GPU pour obtenir une précision élevée via le parallélisme des données.

Le partitionnement de modèle est une technique avancée courante pour diviser les phases d’entraînement du modèle. Vous pouvez affecter des GPU à des tâches distinctes et optimiser leur utilisation en activant LE GPU à plusieurs instances (MIG) sur les pools de nœuds GPU NVIDIA dans AKS. Les GPU peuvent intensifier et étendre les charges de travail de calcul haute performance (HPC), telles que les machines virtuelles de la série NV ou de la série ND sur Azure. Cette capacité aide à maintenir une utilisation élevée des ressources et à réduire l’intervention de l’utilisateur pour les processus d’entraînement d’apprentissage automatique qui sont longs et coûteux.

Vous pouvez également utiliser des modèles d’ia open source et d’apprentissage automatique préentraînés pour l’inférence. Commencez par des modèles populaires comme Llama, Falcon ou Phi comme une option plus économique que la création et l’entraînement d’un modèle de langage entièrement personnalisé. Pour plus d’informations, consultez Modèles de langage sur AKS.

Lorsque vous utilisez des modèles préentraînés pour l’inférence, l’utilisation des ressources peut varier en fonction du volume de données que vous traitez. Lorsque vous exécutez des données actives via votre modèle choisi, le trafic peut augmenter en fonction de la taille et des exigences du modèle. Maintenez une faible latence tout au long du processus d’inférence. Pour utiliser efficacement vos GPU pour des performances élevées et une faible latence, effectuez une inférence distribuée à l’aide de modèles pris en charge par l’opérateur de chaîne d’outils IA. Cette approche élargit vos options de calcul pour inclure des SKU avec un faible nombre de GPU, qui ont un ou deux GPU chacun, offre une haute disponibilité dans les régions Azure et réduit les coûts de maintenance.

Surveillance de l'état du GPU

Les problèmes de GPU peuvent être difficiles à détecter et provoquent souvent des erreurs silencieuses ou dégradent les performances au lieu de tomber en panne. Ces problèmes ajoutent du temps pour résoudre les problèmes, consommer inutilement des ressources et augmenter les coûts opérationnels.

La surveillance de l'intégrité des GPU sur AKS effectue des vérifications cohérentes et fréquentes des événements et conditions du nœud. Le détecteur de problèmes de nœud (NPD) signale ces événements sur des tailles de machine virtuelle GPU spécifiques. NPD expose les signaux clés tels que le nombre incorrect de GPU ou les erreurs de connectivité réseau directement dans les conditions des nœuds Kubernetes, ce qui permet aux équipes d’identifier et de réagir aux problèmes. Cette approche prend en charge les alertes automatiques, l'isolement des nœuds et la reprogrammation des charges de travail. Il permet également de maintenir la fiabilité et les performances des applications dans des environnements nécessitant beaucoup de ressources de calcul.

Gestion des coûts des charges de travail GPU

Les GPU peuvent augmenter les coûts. Surveillez les charges de travail pour comprendre les coûts gpu et identifier les opportunités d’optimisation. Pour augmenter la visibilité des coûts, utilisez l’outil d’analyse des coûts AKS.

Les scénarios suivants bénéficient de la visibilité des coûts.

Coût de taille de VM activée par GPU

Sélectionnez la taille de machine virtuelle compatible GPU appropriée pour optimiser le coût d’exécution des GPU. Les coûts quotidiens peuvent varier en fonction de la taille de VM que vous choisissez. Les GPU A100 sont coûteux, donc évitez-les, sauf si votre charge de travail les nécessite. L’analyse des coûts AKS montre le coût quotidien de chacune de vos machines virtuelles et indique les coûts associés de chaque charge de travail qui s’exécute sur la machine virtuelle avec GPU. Utilisez ces données pour déterminer si vous disposez d’une taille de machine virtuelle appropriée ou si vous avez besoin d’une option plus économique.

Coût inactif

Après avoir créé un pool de nœuds activé par GPU, vous engagez des coûts sur la ressource Azure même si vous n’exécutez pas de charge de travail GPU. Les coûts d’inactivité représentent le coût de la capacité de ressource disponible que les charges de travail n’utilisent pas. Ces coûts peuvent s’ajouter rapidement si vous avez plusieurs nœuds inutilisés. Pour éviter les coûts d’inactivité élevés, créez des pools de nœuds uniquement lorsque vous exécutez une charge de travail et utilisez des méthodes telles que la fonctionnalité d’arrêt du cluster lorsque vous n’exécutez pas de charge de travail. L’analyse des coûts AKS montre les coûts d’inactivité pour chacun de vos nœuds.

Surapprovisionnement et sous-utilisation

Le surapprovisionnement se produit lorsque vous allouez plus de ressources que nécessaire pour un pod. Le surapprovisionnement entraîne un gaspillage de ressources et une sous-utilisation. Le nœud continue de réserver des ressources excédentaires même si les charges de travail ne les utilisent pas. Pour réduire le surapprovisionnement, utilisez la mise à l’échelle automatique verticale des pods pour définir des requêtes et des limites précises en fonction des schémas d’utilisation précédents.

La sous-utilisation peut se produire lorsque vos charges de travail n’utilisent pas pleinement les GPU. Envisagez des techniques avancées pour partager et partitionner des GPU. Au lieu de déployer plusieurs nœuds, vous pouvez utiliser un seul nœud avec des partitions pour optimiser l’utilisation du GPU. Ces techniques vous aident à allouer la quantité appropriée d’accélération GPU pour chaque charge de travail, ce qui peut améliorer l’utilisation et réduire les coûts opérationnels du déploiement.

Les déploiements de charges de travail GPU Linux sur AKS prennent en charge des GPU à plusieurs instances. Utilisez cette fonctionnalité pour partitionner des GPU NVIDIA A100 et H100 dans jusqu’à sept instances indépendantes. Chaque instance a sa propre mémoire et son multiprocesseur de flux.

NVIDIA prend en charge d’autres techniques de partitionnement, telles que le découpage temporel et le service multiprocesseur (MPS). Pour appliquer manuellement ces configurations, utilisez l’opérateur GPU NVIDIA.

Pour les scénarios avancés, vous pouvez améliorer l’empaquetage des compartiments de ressources sur les nœuds AKS et optimiser l’utilisation des ressources GPU dans votre cluster. Vous pouvez définir des configurations de planificateur à l’aide d’un ou plusieurs plug-ins de planification Kubernetes intégrés (ou dans l’arborescence) pour introduire des stratégies de placement de charge de travail qui diffèrent du planificateur AKS par défaut. Pour plus d’informations, consultez les concepts de configuration du système de planification pour le placement de la charge de travail dans AKS (version préliminaire).

Contributeurs

Microsoft gère cet article. Les contributeurs suivants ont écrit cet article.

Auteur principal :

Autres contributeurs :

Pour afficher les profils LinkedIn non publics, connectez-vous à LinkedIn.

Étapes suivantes