À propos de l'inférence de modèle d'IA/ML sur GKE


Cette page décrit les concepts clés, les avantages et les étapes à suivre pour exécuter des charges de travail d'inférence de modèles d'IA/ML générative sur Google Kubernetes Engine (GKE), à l'aide des fonctionnalités d'IA générative de GKE.

La diffusion d'inférences est essentielle pour déployer vos modèles d'IA générative dans des applications du monde réel. GKE fournit une plate-forme robuste et évolutive pour gérer vos charges de travail conteneurisées, ce qui en fait un choix intéressant pour diffuser vos modèles en développement ou en production. Avec GKE, vous pouvez utiliser les fonctionnalités d'orchestration, de scaling et de haute disponibilité de Kubernetes pour déployer et gérer efficacement vos services d'inférence.

Conscient des exigences spécifiques de l'inférence d'IA/ML, Google Cloud a lancé les fonctionnalités d'IA générative GKE, une suite de fonctionnalités conçues spécifiquement pour améliorer et optimiser le traitement d'inférence sur GKE. Pour en savoir plus sur des fonctionnalités spécifiques, consultez la section Fonctionnalités d'IA générative de GKE.

Premiers pas avec l'inférence de modèles d'IA/ML sur GKE

Vous pouvez commencer à explorer l'inférence de modèles d'IA/ML sur GKE en quelques minutes. Vous pouvez utiliser la version gratuite de GKE, qui vous permet de commencer à utiliser Kubernetes sans encourir les frais de gestion des clusters.

  1. Accéder à la page "IA/ML GKE" dans la Google Cloud console

  2. Suivez la procédure Déployer des modèles pour déployer un modèle et un serveur de modèles conteneurisés.
  3. Lisez Planifier l'inférence, qui fournit des conseils et des ressources pour planifier et exécuter vos charges de travail d'inférence sur GKE.

Terminologie

Cette page utilise la terminologie suivante liée à l'inférence sur GKE:

  • Inférence: processus d'exécution d'un modèle d'IA générative, tel qu'un grand modèle de langage ou un modèle de diffusion, dans un cluster GKE pour générer du texte, des représentations vectorielles continues ou d'autres sorties à partir de données d'entrée. L'inférence de modèle sur GKE s'appuie sur des accélérateurs pour gérer efficacement les calculs complexes pour le traitement en temps réel ou par lot.
  • Modèle: modèle d'IA générative qui a appris des schémas à partir de données et qui est utilisé pour l'inférence. Les modèles varient en taille et en architecture, des modèles plus petits spécifiques au domaine aux réseaux de neurones massifs à plusieurs milliards de paramètres optimisés pour diverses tâches linguistiques.
  • Serveur de modèle: service conteneurisé chargé de recevoir les requêtes d'inférence et de renvoyer des inférences. Ce service peut être une application Python ou une solution plus robuste telle que vLLM, JetStream, TensorFlow Serving ou Triton Inference Server. Le serveur de modèle gère le chargement des modèles en mémoire et exécute des calculs sur les accélérateurs pour renvoyer des inférences de manière efficace.
  • Accélérateur: matériel spécialisé, tel que les Graphics Processing Units (GPU) de NVIDIA et les Tensor Processing Units (TPU) de Google, qui peut être associé aux nœuds GKE pour accélérer les calculs, en particulier pour les tâches d'entraînement et d'inférence.

Avantages de GKE pour l'inférence

Le traitement des inférences sur GKE présente plusieurs avantages:

  • Rapport qualité-prix efficace:bénéficiez d'un rapport qualité-prix efficace pour vos besoins de diffusion d'inférences. GKE vous permet de choisir parmi une gamme d'accélérateurs puissants (GPU et TPU), de sorte que vous ne payez que les performances dont vous avez besoin.
  • Déploiement plus rapide: accélérez votre mise sur le marché grâce aux bonnes pratiques, aux qualifications et aux bonnes pratiques personnalisées fournies par les fonctionnalités d'IA générative de GKE.
  • Performances évolutives: effectuer un scaling horizontal les performances avec la surveillance prédéfinie à l'aide du gateway d'inférence GKE, de l'autoscaler horizontal de pods (AHP) et de métriques personnalisées. Vous pouvez exécuter une gamme de modèles pré-entraînés ou personnalisés, allant de 8 milliards de paramètres à 671 milliards de paramètres.
  • Portabilité totale: profitez d'une portabilité totale grâce aux normes ouvertes. Google contribue aux principales API Kubernetes, y compris Gateway et LeaderWorkerSet. Toutes les API sont portables avec les distributions Kubernetes.
  • Compatibilité avec l'écosystème: s'appuyer sur l'écosystème robuste de GKE, qui prend en charge des outils tels que Kueue pour la gestion et la mise en file d'attente des ressources avancées, et Ray pour le calcul distribué, afin de faciliter l'entraînement et l'inférence des modèles de manière évolutive et efficace.

Fonctionnement de l'inférence sur GKE

Cette section décrit, de manière générale, les étapes à suivre pour utiliser GKE pour le traitement par inférence:

  1. Conteneurisez votre modèle: déployez un modèle en conteneurisant le serveur de modèles (tel que vLLM) et en chargeant les poids du modèle à partir de Cloud Storage ou d'un dépôt tel que Hugging Face. Lorsque vous utilisez le guide de démarrage rapide de l'inférence GKE, l'image conteneurisée est automatiquement gérée dans le fichier manifeste.

  2. Créer un cluster GKE: créez un cluster GKE pour héberger votre déploiement. Choisissez Autopilot pour une expérience gérée ou Standard pour la personnalisation. Configurez la taille du cluster, les types de nœuds et les accélérateurs. Pour une configuration optimisée, utilisez le guide de démarrage rapide de l'inférence.

  3. Déployer votre modèle en tant que déploiement Kubernetes: créez un déploiement Kubernetes pour gérer votre service d'inférence. Un déploiement est un objet d'API Kubernetes qui vous permet d'exécuter plusieurs réplicas de pods répartis entre les nœuds d'un cluster. Spécifiez l'image Docker, les réplicas et les paramètres. Kubernetes extrait l'image et exécute vos conteneurs sur les nœuds du cluster GKE. Configurez les pods avec votre serveur de modèle et votre modèle, y compris les adaptateurs LoRA si nécessaire.

  4. Exposez votre service d'inférence: rendez votre service d'inférence accessible en créant un service Kubernetes pour fournir un point de terminaison réseau à votre déploiement. Utilisez Inference Gateway pour un équilibrage de charge et un routage intelligents, spécialement adaptés aux charges de travail d'inférence d'IA générative.

  5. Gérer les requêtes d'inférence: envoyez des données à partir des clients de votre application vers le point de terminaison de votre service, au format attendu (JSON, gRPC). Si vous utilisez un équilibreur de charge, il distribue les requêtes aux répliques de modèle. Le serveur de modèle traite la requête, exécute le modèle et renvoie l'inférence.

  6. Évoluez et surveillez votre déploiement d'inférence: faites évoluer l'inférence avec AHP pour ajuster automatiquement les réplicas en fonction du processeur ou de la latence. Utilisez le démarrage rapide de l'inférence pour obtenir des recommandations de scaling générées automatiquement. Pour suivre les performances, utilisez Cloud Monitoring et Cloud Logging avec une observabilité prédéfinie, y compris des tableaux de bord pour les serveurs de modèles populaires tels que vLLM.

Pour obtenir des exemples détaillés qui utilisent des modèles, des serveurs de modèles et des accélérateurs spécifiques, consultez la section Exemples d'inférence.

Fonctionnalités d'IA générative de GKE

Vous pouvez utiliser ces fonctionnalités ensemble ou individuellement pour relever les principaux défis liés à la diffusion de modèles d'IA générative et à l'amélioration de l'utilisation des ressources dans votre environnement GKE, sans frais supplémentaires.

Nom Description Avantages
Démarrage rapide de l'inférence GKE (bêta)

Spécifiez vos besoins métier et obtenez des bonnes pratiques adaptées à la combinaison d'accélérateurs, de configurations de mise à l'échelle et de serveurs de modèles qui répond le mieux à vos besoins. Vous pouvez accéder à ce service avec la gcloud CLI.

Pour en savoir plus, consultez la section Exécuter des inférences selon les bonnes pratiques avec les recettes de démarrage rapide d'inférence GKE.

  • Gagnez du temps en automatisant les étapes initiales de choix et de configuration de votre infrastructure.
  • Vous permet de conserver un contrôle total sur votre configuration Kubernetes pour l'ajuster davantage.
GKE Inference Gateway (bêta)

Obtenez un routage basé sur des métriques, comme l'utilisation du cache KV, pour améliorer la latence.

Pour en savoir plus, consultez la section À propos de la passerelle d'inférence GKE.

  • Partagez des modèles affinés qui utilisent des fichiers LoRA, avec un choix de point de terminaison basé sur l'affinité pour plus de rentabilité.
  • Obtenez une haute disponibilité en accédant de manière dynamique à la capacité des GPU et des TPU dans les différentes régions.
  • Renforcez la sécurité de vos modèles grâce aux règles du module complémentaire Model Armor.
Accélérateurs de chargement des poids de modèle

Accédez rapidement aux données dans Cloud Storage à l'aide de Cloud Storage FUSE avec la mise en cache et les téléchargements parallèles.

Pour les charges de travail d'inférence qui exigent des performances d'effectuer un scaling horizontal cohérentes, Google Cloud Hyperdisk ML est un disque en réseau pouvant être associé à jusqu'à 2 500 pods.

  • Optimisez le temps de démarrage de l'inférence en minimisant la latence du modèle de chargement des poids sur GKE.
  • Pour les déploiements avec une mise à l'échelle limitée des nœuds, envisagez d'utiliser Cloud Storage FUSE pour installer les poids du modèle.
  • Pour les scénarios à grande échelle qui nécessitent un accès cohérent et à faible latence à de grands poids de modèle, Google Cloud Hyperdisk ML propose une solution de stockage de blocs dédiée.

Planifier les inférences

Cette section présente certains des éléments clés à prendre en compte pour vos charges de travail d'inférence sur GKE.

Rentabilité

L'exécution de grands modèles d'IA générative peut être coûteuse en raison de l'utilisation d'accélérateurs. Vous devez donc vous concentrer sur une utilisation efficace des ressources. Il est essentiel de sélectionner le type de machine et l'accélérateur appropriés pour vous assurer que la mémoire de l'accélérateur correspond à la taille et au niveau de quantification de votre modèle. Par exemple, les instances G2 avec des GPU NVIDIA L4 peuvent être rentables pour les modèles plus petits, tandis que les instances A3 sont plus adaptées aux modèles plus volumineux.

Suivez ces conseils et recommandations pour maximiser la rentabilité:

Performances

Pour optimiser les performances d'inférence sur GKE, concentrez-vous sur les métriques de référence suivantes:

Indicateurs de référence Métrique (unité) Description
Latence Délai avant le premier jeton (TTFT) (ms) Temps nécessaire pour générer le premier jeton d'une requête.
Délai normalisé par jeton de sortie (NTPOT) (ms) Latence de requête normalisée par le nombre de jetons de sortie, mesurée en request_latency / total_output_tokens.
Délai par jeton de sortie (TPOT) (ms) Temps nécessaire pour générer un jeton de sortie, mesuré en (request_latency - time_to_first_token) / (total_output_tokens - 1).
Latence inter-jetons (ITL) (ms) Mesure la latence entre deux générations de jetons de sortie. Contrairement à TPOT, qui mesure la latence pour l'ensemble de la requête, l'ITL mesure le temps nécessaire pour générer chaque jeton de sortie individuel. Ces mesures individuelles sont ensuite agrégées pour produire des valeurs de moyenne, de médiane et de percentile, telles que p90.
Latence de la requête (ms) Temps de bout en bout pour traiter une requête.
Débit Requêtes par seconde Nombre total de requêtes que vous diffusez par seconde. Notez que cette métrique n'est peut-être pas un moyen fiable de mesurer le débit du LLM, car il peut varier considérablement pour différentes longueurs de contexte.
Jetons de sortie par seconde Métrique courante mesurée en total_output_tokens_generated_by_server / elapsed_time_in_seconds.
Jetons d'entrée par seconde Mesure en tant que total_input_tokens_generated_by_server / elapsed_time_in_seconds.
Jetons par seconde Mesure en tant que total_tokens_generated_by_server / elapsed_time_in_seconds. Cette métrique compte à la fois les jetons d'entrée et de sortie, ce qui vous permet de comparer les charges de travail avec un préremplissage élevé et les temps de décodage élevés.

Voici d'autres conseils et recommandations pour améliorer les performances:

  • Pour obtenir les accélérateurs recommandés en fonction de vos besoins en performances, utilisez le démarrage rapide de l'inférence.
  • Pour améliorer les performances, utilisez des techniques d'optimisation du serveur de modèle telles que le traitement par lot et PagedAttention, qui figurent dans notre guide des bonnes pratiques. De plus, priorisez une gestion de la mémoire et un calcul de l'attention efficaces pour obtenir des latences inter-jetons toujours faibles.
  • Utilisez des métriques standardisées sur les serveurs de modèles (tels que le TGI Hugging Face, vLLM ou NVIDIA Triton) pour améliorer l'autoscaling et l'équilibrage de charge, ce qui peut vous aider à obtenir un débit plus élevé à la latence de votre choix. GKE fournit une surveillance automatique des applications pour plusieurs serveurs de modèles.
  • Utilisez les fonctionnalités d'infrastructure réseau GKE telles que le barrière d'inférence pour réduire la latence.
  • Utilisez Cloud Storage FUSE avec des téléchargements et une mise en cache parallèles, ou Hyperdisk ML pour accélérer le chargement des pondérations de modèle à partir d'un stockage persistant.

  • Pour l'entraînement ou l'inférence à grande échelle, utilisez Pathways. Pathways simplifie les calculs de machine learning à grande échelle en permettant à un seul client JAX d'orchestrer des charges de travail sur plusieurs grandes tranches de TPU. Pour en savoir plus, consultez la section Parcours.

Obtention

Assurer la disponibilité des ressources (CPU, GPU et TPU) est essentiel pour maintenir les performances, la disponibilité et la rentabilité de vos charges de travail d'inférence. Les charges de travail d'inférence présentent souvent des modèles de trafic sporadiques et imprévisibles, ce qui peut mettre à rude épreuve la capacité matérielle. GKE répond à ces défis grâce à des fonctionnalités telles que:

  • Options de consommation de ressources: choisissez parmi des options telles que les réservations pour une capacité garantie, la mise à l'échelle rentable, le planificateur de charges de travail dynamique et les VM Spot pour optimiser les coûts et accéder à la demande pour une disponibilité immédiate.
  • Adaptation des ressources: par exemple, Google Cloud propose des VM A3 High plus petites avec des GPU NVIDIA H100 (1 Go, 2 Go ou 4 Go) pour un scaling d'inférence d'IA générative économique compatible avec les VM Spot.
  • Classes de calcul pour les accélérateurs: vous pouvez utiliser des classes de calcul personnalisées pour un contrôle plus précis, afin d'éviter le surprovisionnement et de maximiser la disponibilité des ressources grâce à des options de remplacement automatique.

Mises à niveau de nœuds

GKE automatise une grande partie du processus de mise à niveau, mais vous devez envisager des stratégies de mise à niveau, en particulier pour la compatibilité et les tests. Pour les mises à niveau manuelles, vous pouvez choisir entre les mises à niveau de surutilisation ou bleu-vert en fonction de la tolérance de votre charge de travail d'inférence aux interruptions. Les mises à niveau de pointe sont rapides, mais elles peuvent avoir un impact temporaire sur les services. Les mises à niveau bleu-vert offrent un temps d'arrêt quasi nul, ce qui est essentiel pour l'inférence en temps réel. Pour en savoir plus, consultez la section Stratégies de mise à niveau des nœuds.

Les GPU et les TPU ne sont pas compatibles avec la migration à chaud. La maintenance nécessite donc de redémarrer les pods. Utilisez les notifications GKE pour vous préparer aux perturbations. Nous vous recommandons d'utiliser des budgets d'interruption de pod (PDB) pour vous assurer qu'un nombre minimal de pods reste disponible. Assurez-vous que vos pods peuvent gérer l'arrêt de manière appropriée. Les tranches de TPU peuvent être perturbées par des événements à hôte unique. Planifiez donc la redondance. Pour en savoir plus sur les bonnes pratiques, consultez Gérer les interruptions des nœuds GKE pour les GPU et les TPU.

Essayer des exemples d'inférence

Découvrez des exemples de déploiement GKE pour les modèles d'IA générative, les accélérateurs et les serveurs de modèles. Si vous débutez, nous vous recommandons de consulter le tutoriel Diffuser des modèles ouverts Gemma à l'aide de GPU sur GKE avec vLLM.

Vous pouvez également rechercher un tutoriel par mot clé:

Accélérateur Serveur de modèles Tutoriel
GPU vLLM Diffuser des LLM tels que DeepSeek-R1 671B ou Llama 3.1 405B sur GKE
GPU vLLM Diffuser des modèles Llama à l'aide de GPU sur GKE avec vLLM
GPU vLLM Diffuser des modèles ouverts Gemma à l'aide de GPU sur GKE avec vLLM
GPU vLLM Diffuser un LLM avec GKE Inference Gateway
GPU NVIDIA Triton Diffuser un modèle avec un seul GPU dans GKE
GPU Ray Serve Diffuser un LLM sur des GPU L4 avec Ray
GPU TGI Diffuser un LLM avec plusieurs GPU dans GKE
GPU NVIDIA Triton Diffuser des modèles ouverts Gemma à l'aide de GPU sur GKE avec Triton et TensorRT-LLM
GPU Inférence de génération de texte Hugging Face Diffuser des modèles ouverts Gemma à l'aide de GPU sur GKE avec Hugging Face TGI
GPU TensorFlow Serving Diffuser un modèle avec un seul GPU dans GKE
TPU vLLM Diffuser un LLM à l'aide de TPU Trillium sur GKE avec vLLM
TPU vLLM Diffuser un LLM à l'aide de TPU sur GKE avec KubeRay
TPU JetStream Diffuser un LLM à l'aide de TPU sur GKE avec JetStream et PyTorch
TPU JetStream Diffuser Gemma à l'aide de TPU sur GKE avec JetStream
TPU MaxDiffusion Diffuser Stable Diffusion XL (SDXL) à l'aide de TPU sur GKE avec MaxDiffusion
TPU TPU Optimum Diffuser des modèles Open Source à l'aide de TPU sur GKE avec Optimum TPU

Étapes suivantes