Aidez à améliorer cette page
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien Modifier cette page sur qui se trouve dans le volet droit de chaque page.
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Exécutez AI/ML des charges de travail d'inférence sur Amazon EKS
Astuce
Inscrivez-vous
L'inférence est le processus qui consiste à exécuter un modèle d'IA entraîné pour générer des prédictions ou des sorties à partir de données d'entrée. Cela inclut le service de grands modèles linguistiques (LLM) qui produisent du texte ou du code, des modèles de diffusion qui génèrent des images, des modèles vocaux pour la synthèse et la transcription vocales, et des modèles vidéo pour l'analyse ou la génération en temps réel. Amazon EKS fournit une solution portable et évolutive pour déployer ces charges de travail d'inférence avec des GPU NVIDIA ou des accélérateurs AWS Trainium, une mise à l'échelle dynamique et une intégration avec Kubernetes au sens large et à l'environnement d'outils et de services. AWS
Pourquoi utiliser Amazon EKS pour l'inférence
Amazon EKS associe l'orchestration de Kubernetes à l' AWS infrastructure pour relever les principaux défis liés à l'exécution de l'inférence à grande échelle :
-
Dimensionnement dynamique du GPU : Karpenter fournit des instances de GPU de la bonne taille à la demande en fonction des demandes de ressources du Pod, en partant de zéro en cas d'inactivité et en ajoutant de la capacité à mesure que le trafic augmente. Cela permet d'éviter de surprovisionner des ressources GPU coûteuses.
-
Démarrages à froid rapides : le système SOCI (Seekable OCI) permet de télécharger et de décompresser simultanément de grandes couches d'images de conteneurs, réduisant ainsi le temps d'extraction des images de quelques minutes à quelques secondes. Associés au streaming du modèle depuis Amazon S3 directement vers la mémoire GPU, les Pods peuvent commencer à fonctionner en moins de deux minutes.
-
Restauration automatique en cas de panne du processeur graphique : l'agent de surveillance des nœuds EKS détecte les défaillances matérielles du processeur graphique et déclenche le remplacement automatique des nœuds, minimisant ainsi les temps d'arrêt sans intervention manuelle.
-
Optimisation des coûts : les instances ponctuelles dotées d'une solution de On-Demand repli, d'une sélection d'instances à la bonne taille et d'un comportement de mise à l'échelle jusqu'à zéro réduisent les coûts du GPU. La capacité réservée (ODCR) permet de réaliser des économies supplémentaires pour les charges de travail en régime permanent.
-
Standards ouverts et portabilité : les charges de travail d'inférence s'exécutent sur des API Kubernetes standard (déploiements, services, HPA) avec des serveurs open source tels que vLLM ou SGlang, garantissant ainsi la portabilité entre les environnements.
-
Surveillance intégrée : les métriques Prometheus issues de vLLM ou SGLang et de NVIDIA DCGM Exporter offrent une visibilité sur la latence des demandes, le débit des jetons, l'utilisation du GPU et l'utilisation de la mémoire via les tableaux de bord Grafana.
Glossaire
Les termes suivants sont utilisés dans cette section :
-
Inférence : processus d'exécution d'un modèle entraîné pour générer des sorties (texte, intégrations, classifications) à partir des données d'entrée.
-
Serveur de modèles : service conteneurisé qui charge un modèle en mémoire, reçoit des demandes d'inférence et renvoie des prédictions. Les exemples incluent VLLm
, SGlang , Triton Inference Server et Text Generation Inference (TGI). -
Pondérations du modèle : paramètres appris d'un modèle entraîné, stockés sous forme de fichiers (généralement au SafeTensors format GGUF) que le serveur de modèles charge dans la mémoire du GPU.
-
Accélérateur : matériel spécialisé tel que les GPU ou les AWS Trainium/Inferentia puces NVIDIA qui accélèrent les opérations matricielles nécessaires à l'inférence.
-
Parallélisme tensoriel : division d'un modèle sur plusieurs GPU sur le même nœud pour servir des modèles dont la mémoire dépasse celle d'un seul GPU.
-
Cache KV : mémoire tampon qui stocke les paires clé-valeur précédemment calculées lors de la génération du texte, évitant ainsi les calculs redondants pour chaque nouveau jeton.
Comment fonctionne l'inférence sur Amazon EKS
À un niveau élevé, le déploiement d'une charge de travail d'inférence sur Amazon EKS implique les étapes suivantes :
| Step (Étape) | Description |
|---|---|
|
Configuration du cluster |
Créez un cluster EKS avec GPU-enabled des nœuds, une surveillance et un stockage. Voir Configuration du cluster dans la documentation AI/ML sur EKS. |
|
Stockez le poids du modèle |
Téléchargez les poids des modèles depuis un registre de modèles (tel que Hugging Face) et stockez-les dans Amazon S3 pour un chargement rapide des modèles lors d'événements de démarrage à froid ou de mise à l'échelle. |
|
Déployer le modèle de serveur |
Créez un déploiement Kubernetes qui exécute un modèle de serveur (tel que vLLM) sur des nœuds GPU. Le serveur de modèles diffuse les poids de S3 vers la mémoire du GPU et expose une OpenAI-compatible API. |
|
Exposer le point de terminaison d'inférence |
Créez un service Kubernetes pour fournir un point de terminaison réseau stable. Utilisez le transfert de port pour les tests ou un équilibreur de charge tel que AWS Application Load Balancer (ALB) pour le trafic de production. |
|
Surveillance et mise à l'échelle |
Utilisez les métriques Prometheus (taux de demandes, débit de jetons, latence, utilisation du cache KV) pour surveiller les performances et configurer l'autoscaling. |
Mesures de performance d'inférence
Pour comprendre les performances d'inférence, il faut suivre les métriques en termes de latence et de débit :
Métriques de latence
-
Time to First Token (TTFT) — Temps écoulé entre l'arrivée de la demande et le premier jeton généré. Essentiel pour les applications interactives.
-
Temps par jeton de sortie (TPOT) : temps moyen nécessaire pour générer chaque jeton suivant après le premier.
-
End-to-end latence de la demande : temps total entre la soumission de la demande et l'achèvement de la réponse complète.
Métriques de débit
-
Demandes par seconde : nombre total de demandes d'inférence traitées par seconde pour toutes les répliques.
-
Jetons de sortie par seconde — Taux de génération de jetons, mesuré comme le total des jetons de sortie divisé par le temps écoulé.
-
Utilisation du GPU — Pourcentage de cycles de calcul du GPU utilisés activement à des fins d'inférence.
-
Utilisation du cache KV : pourcentage de mémoire cache KV allouée utilisée, indiquant à quel point le serveur est proche de sa capacité maximale.
Réduction du temps de démarrage à froid
Les conteneurs d'inférence de grande taille (8 à 15 Go) et le poids du modèle (10 à 100 Go ou plus) peuvent ralentir le démarrage du Pod. Les techniques suivantes minimisent les délais de démarrage à froid :
-
SOCI parallel pull : télécharge et décompresse les couches d'images du conteneur simultanément plutôt que de manière séquentielle. Activé par défaut en mode automatique EKS pour les instances GPU.
-
Streaming de modèles depuis S3 — Des outils tels que Run:ai Model Streamer
diffusent le poids des modèles directement depuis Amazon S3 vers la mémoire GPU, en contournant le disque local et en réduisant le temps de chargement de quelques minutes à quelques secondes. -
Stockez des images dans Amazon ECR : l'extraction d'un référentiel ECR régional via un point de terminaison VPC permet d'éviter la latence Internet pour les images de conteneurs de grande taille.
-
Mise en cache du stockage des G-family instances : les instances dotées de disques NVMe locaux peuvent mettre en cache des couches de conteneur et des artefacts de modèles, accélérant ainsi les extractions ultérieures sur le même nœud.
Ce que vous allez déployer
La présentation du modèle Load & Serve vous guide tout au long du déploiement d'une application d'inférence de bout en bout :
-
Télécharger les poids du modèle — A Kubernetes Job télécharge Ministral-3-8B-Instruct le modèle depuis Hugging Face et le charge dans votre compartiment S3.
-
Déployer vLLM — Un déploiement exécute vLLM avec Run:ai Model Streamer pour transférer les poids de S3 directement dans la mémoire du GPU, au service d'une API. OpenAI-compatible
-
Surveillez avec Grafana — A intègre ServiceMonitor les métriques VLLM Prometheus à la pile de surveillance pour obtenir des tableaux de bord en temps réel.
-
Déployer une interface de chat — Open WebUI fournit une interface de chat basée sur un navigateur connectée au point de terminaison vLLM.
La procédure pas à pas utilise l'infrastructure du cluster décrite dans la Configuration du cluster Amazon EKS pour les charges AI/ML de travail section et fonctionne à la fois avec le mode automatique EKS et avec les chemins Karpenter autogérés.