View a markdown version of this page

Exécutez AI/ML des charges de travail d'inférence sur Amazon EKS - Amazon EKS

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 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 aux prochains AI/ML ateliers Amazon EKS.

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 la diffusion 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 de la voix, et des modèles vidéo pour l'analyse ou la génération en temps réel. Amazon EKS fournit une solution évolutive et portable permettant de déployer ces charges de travail d'inférence à l'aide de GPU NVIDIA ou d'accélérateurs AWS Trainium, d'une mise à l'échelle dynamique et d'une intégration à l'ensemble de Kubernetes et à une gamme 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 d'inférences à grande échelle :

  • Mise à l'échelle dynamique du GPU  : Karpenter fournit des instances GPU de la bonne taille à la demande en fonction des demandes de ressources des pods, 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 rapides à froid  : la fonction d'extraction parallèle SOCI (Seekable OCI) télécharge et décompresse simultanément de grandes couches d'images de conteneurs, réduisant ainsi les temps d'extraction des images de quelques minutes à quelques secondes. Combinés à la diffusion de modèles depuis Amazon S3 directement vers la mémoire du GPU, les Pods peuvent commencer à être utilisés en moins de deux minutes.

  • Restauration automatique en cas de panne du GPU  : l'agent de surveillance des nœuds EKS détecte les défaillances matérielles du GPU 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 repérées grâce à une On-Demand solution de repli, à une sélection d'instances de la bonne taille et à un comportement évolutif 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 modèles open source tels que vLLm ou sgLang, assurant la portabilité entre les environnements.

  • Surveillance intégrée  : les métriques Prometheus de vLLM ou SGlang et de l'exportateur NVIDIA DCGM fournissent une visibilité sur la latence des requêtes, 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 qui consiste à exécuter 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).

  • Poids 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 des GPU NVIDIA ou des AWS Trainium/Inferentia puces qui accélèrent les opérations matricielles requises pour l'inférence.

  • Parallélisme tensoriel  : division d'un modèle sur plusieurs GPU sur le même nœud afin de desservir 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

Configurer le cluster

Créez un cluster EKS avec GPU-enabled nœuds, surveillance et stockage. Consultez la section Configuration du cluster dans la documentation AI/ML sur EKS.

Stockez les poids des modèles

Téléchargez les poids des modèles à partir d'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éploiement du serveur modèle

Créez un déploiement Kubernetes qui exécute un serveur modèle (tel que vLLM) sur des nœuds GPU. Le serveur modèle diffuse les poids de S3 vers la mémoire du GPU et expose une OpenAI-compatible API.

Exposer le point final d'inférence

Créez un service Kubernetes pour fournir un point de terminaison réseau stable. Utilisez la redirection de port pour les tests ou un équilibreur de charge tel que AWS Application Load Balancer (ALB) pour le trafic de production.

Surveillez et mesurez

Utilisez les métriques Prometheus (taux de requêtes, débit des jetons, latence, utilisation du cache KV) pour surveiller les performances et configurer la mise à l'échelle automatique.

Métriques 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 écoulé 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 activement utilisés pour l'inférence.

  • Utilisation du cache KV  : pourcentage de la mémoire cache KV allouée utilisée, indiquant à quel point le serveur est proche de sa capacité maximale.

Réduire le temps de démarrage à froid

Les grands conteneurs d'inférence (8 à 15 Go) et le poids des modèles (10 à 100 Go et plus) peuvent ralentir le démarrage du Pod. Les techniques suivantes permettent de minimiser les délais de démarrage à froid :

  • Pull parallèle SOCI  : télécharge et décompresse les couches d'images de conteneurs 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 les 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 depuis un référentiel ECR régional via un point de terminaison VPC permet d'éviter la latence Internet pour les images de conteneur volumineuses.

  • Mise en cache du stockage des G-family instances  : les instances dotées de disques NVMe locaux peuvent mettre en cache des couches de conteneurs et des artefacts de modèle, accélérant ainsi les extractions suivantes sur le même nœud.

Ce que vous allez déployer

La procédure pas à pas du modèle Load & Serve vous guide tout au long du déploiement d'une application d'inférence de bout en bout :

  1. Télécharger les poids des modèles — A Kubernetes Job télécharge le Ministral-3-8B-Instruct modèle depuis Hugging Face et le charge dans votre compartiment S3.

  2. Déploiement de vLLM — Un déploiement exécute vLLM avec Run:ai Model Streamer pour diffuser les poids de S3 directement dans la mémoire du GPU, au service d'une API. OpenAI-compatible

  3. Surveillez avec Grafana — A intègre les métriques ServiceMonitor vLLM Prometheus à la pile de surveillance pour créer des tableaux de bord en temps réel.

  4. Déployez une interface de chat — Open WebUI fournit une interface de discussion basée sur un navigateur connectée au point de terminaison vLLM.

La procédure pas à pas utilise l'infrastructure de cluster de la Configuration du cluster Amazon EKS pour les charges AI/ML de travail section et fonctionne à la fois avec le mode automatique EKS et les chemins Karpenter autogérés.