L'optimisation de l'inférence vise à améliorer les performances et l'efficacité des modèles d'IA lors de leur exécution en production. À mesure que les grands modèles de langage (LLM) atteignent des dizaines ou des centaines de milliards de paramètres et que les architectures d'inférence deviennent plus complexes, la difficulté de concevoir et de gérer des applications ne fait que croître. L'optimisation consiste à gérer, surveiller et mettre à jour ces charges de travail gourmandes en ressources de calcul, ce qui permet d'obtenir des temps de réponse inférieurs à une seconde et un débit plus élevé à moindre coût.
Elle regroupe un ensemble de techniques, allant de la compression de modèles à la gestion avancée de la mémoire, qui déplacent l'attention de la simple "exécution d'un modèle" vers la "mise à l'échelle d'un service d'intelligence". Les développeurs peuvent ainsi créer des applications plus responsives tout en maintenant une empreinte d'infrastructure durable.
Optimisation au niveau de l'infrastructure : elle se concentre sur la façon dont le modèle est exécuté sur le matériel. Cela inclut l'utilisation d'environnements d'exécution optimisés (comme NVIDIA NIM ou vLLM), la gestion de la mémoire des GPU avec des techniques telles que PagedAttention et le traitement par lot en cours d'exécution pour traiter plusieurs requêtes simultanément. C'est souvent l'approche la plus pratique pour les développeurs qui utilisent des modèles Open Source ou propriétaires.
Optimisation au niveau du modèle : il s'agit de modifier le modèle lui-même pour réduire sa taille ou sa complexité. Des techniques comme la quantification (réduction de la précision de 16 bits à 4 bits), la distillation (entraînement d'un modèle "élève" plus petit pour imiter un modèle "enseignant" plus grand) et la parcimonie (élagage des paramètres non importants) peuvent réduire considérablement la mémoire et les ressources de calcul nécessaires pour chaque jeton.
Pour optimiser efficacement l'inférence des LLM, vous devez comprendre les deux phases distinctes qu'elle comporte :
Phase | Description | Principale caractéristique |
Préremplissage | Le modèle traite l'intégralité du prompt d'entrée pour calculer les états intermédiaires. | Hautement parallélisé ; lié au calcul (sature le GPU). |
Decode | Le modèle génère les jetons de sortie un par un par régression automatique. | Séquentiel ; lié à la mémoire (limité par la vitesse de transfert des données). |
Phase
Description
Principale caractéristique
Préremplissage
Le modèle traite l'intégralité du prompt d'entrée pour calculer les états intermédiaires.
Hautement parallélisé ; lié au calcul (sature le GPU).
Decode
Le modèle génère les jetons de sortie un par un par régression automatique.
Séquentiel ; lié à la mémoire (limité par la vitesse de transfert des données).
Voici une comparaison entre l'inférence optimisée et la mise en service de modèle "naïve" traditionnelle :
Fonctionnalité | Déploiement standard | Inférence optimisée |
Débit | Limité par la taille statique des lots et le temps d'inactivité. | Élevé ; utilise le traitement par lot en cours d'exécution et l'itération continue. |
Latence | Croissance linéaire avec la longueur de la séquence ; délai d'émission du premier jeton (TTFT) élevé. | Optimisé ; utilise l'accélération du préremplissage et le décodage spéculatif. |
Gestion de la mémoire | Allocation statique (surprovisionnement pour la longueur maximale). | Dynamique (pagination) ; gaspillage minimal grâce à PagedAttention. |
Efficacité du matériel | Sous-utilisation fréquente des capacités de calcul des GPU/TPU | Maximisé ; utilise des kernels optimisés (TFE-IE, XLA). |
Coût par requête | Plus élevé ; nécessite plus de matériel pour la même charge. | Plus faible ; regroupe davantage de requêtes dans la même infrastructure. |
Fonctionnalité
Déploiement standard
Inférence optimisée
Débit
Limité par la taille statique des lots et le temps d'inactivité.
Élevé ; utilise le traitement par lot en cours d'exécution et l'itération continue.
Latence
Croissance linéaire avec la longueur de la séquence ; délai d'émission du premier jeton (TTFT) élevé.
Optimisé ; utilise l'accélération du préremplissage et le décodage spéculatif.
Gestion de la mémoire
Allocation statique (surprovisionnement pour la longueur maximale).
Dynamique (pagination) ; gaspillage minimal grâce à PagedAttention.
Efficacité du matériel
Sous-utilisation fréquente des capacités de calcul des GPU/TPU
Maximisé ; utilise des kernels optimisés (TFE-IE, XLA).
Coût par requête
Plus élevé ; nécessite plus de matériel pour la même charge.
Plus faible ; regroupe davantage de requêtes dans la même infrastructure.
Google Cloud propose une gamme d'outils conçus pour différents niveaux de compétences et besoins architecturaux.
Outil | Point de départ | Niveau de compétence | Méthode | Fonctionnalité clé |
Cloud Run (avec des GPU) | Service d'IA léger basé sur des événements | Débutant | Sans serveur | Inférence avec scaling à zéro instance pour les charges de travail intensives à faible latence |
Modèle OSS (Llama 3, par exemple) | Niveau débutant à intermédiaire | Géré/Low-code | Déploiement en un clic avec les environnements d'exécution vLLM ou NVIDIA NIM optimisés | |
Charges de travail de production hautes performances | Niveau intermédiaire à avancé | Inférence accélérée | Microservices prédéfinis avec des optimisations TensorRT-LLM de pointe | |
Infrastructure personnalisée à plusieurs modèles | Avancé | Cloud natif/personnalisé | Contrôle total sur la segmentation des GPU, l'orchestration et les serveurs d'inférence personnalisés | |
Développement à grande échelle privilégiant les TPU | Avancé | Optimisé pour les TPU/XLA | Adapté à XLA avec le traitement par lot continu et PagedAttention sur les Cloud TPU |
Outil
Point de départ
Niveau de compétence
Méthode
Fonctionnalité clé
Cloud Run (avec des GPU)
Service d'IA léger basé sur des événements
Débutant
Sans serveur
Inférence avec scaling à zéro instance pour les charges de travail intensives à faible latence
Modèle OSS (Llama 3, par exemple)
Niveau débutant à intermédiaire
Géré/Low-code
Déploiement en un clic avec les environnements d'exécution vLLM ou NVIDIA NIM optimisés
Charges de travail de production hautes performances
Niveau intermédiaire à avancé
Inférence accélérée
Microservices prédéfinis avec des optimisations TensorRT-LLM de pointe
Infrastructure personnalisée à plusieurs modèles
Avancé
Cloud natif/personnalisé
Contrôle total sur la segmentation des GPU, l'orchestration et les serveurs d'inférence personnalisés
Développement à grande échelle privilégiant les TPU
Avancé
Optimisé pour les TPU/XLA
Adapté à XLA avec le traitement par lot continu et PagedAttention sur les Cloud TPU
Model Garden est le moyen le plus rapide de déployer des versions optimisées des principaux modèles ouverts comme Llama, Gemma et Mistral.
Accédez à Model Garden et recherchez un modèle OSS compatible. Cliquez sur "Déployer". Dans la configuration, sélectionnez un environnement d'exécution optimisé tel que vLLM ou NVIDIA NIM.
Choisissez une version quantifiée du modèle (par exemple, 4 bits ou 8 bits) pour réduire l'espace mémoire utilisé. Cela vous permet de diffuser des lots de plus grande taille sur le même GPU, ce qui augmente directement le débit.
Assurez-vous que le conteneur de service est configuré pour utiliser PagedAttention. Cette technique permet au modèle de stocker sa "mémoire" (cache clé-valeur) dans des blocs non contigus, ce qui évite le gaspillage de mémoire et permet d'utiliser des fenêtres de contexte plus longues.
Une fois déployé, Vertex AI gère automatiquement le traitement par lot en cours, en traitant de nouvelles requêtes dès qu'une requête existante a terminé un jeton. Utilisez Vertex AI Model Monitoring pour suivre la latence et vous assurer que le style de la sortie reste de haute qualité.
Pour les équipes ayant besoin d'un contrôle précis sur l'orchestration et leurs kernels d'inférence personnalisés, GKE est le choix de référence.
Provisionnez un cluster GKE avec des nœuds GPU spécialisés (par exemple, L4 ou H100). Installez l'opérateur GPU NVIDIA pour gérer les pilotes et optimiser les performances automatiquement.
Utilisez un moteur d'inférence conteneurisé comme vLLM ou Triton Inference Server. Ces serveurs sont compatibles avec le traitement par lots continu et le parallélisme des tenseurs, ce qui vous permet de segmenter de grands modèles sur plusieurs GPU. vLLM vous permet également de passer des TPU aux GPU, avec un minimum de code supplémentaire.
Pour les besoins de latence critiques, configurez le décodage spéculatif. Cette technique consiste à utiliser un modèle "brouillon" plus petit et plus rapide pour prédire des jetons, qui sont ensuite vérifiés en parallèle par votre modèle "cible" plus grand, ce qui permet souvent de multiplier la vitesse par deux ou trois.
GKE Inference Quickstart sert de base de données préconfigurée pour les configurations de piles d'inférence testées. En spécifiant votre modèle, vos exigences de latence et vos priorités en termes de coûts, l'outil fournit un ensemble de recommandations basées sur les bonnes pratiques et les derniers benchmarks. Vous pouvez ainsi surveiller les métriques de performance spécifiques à l'inférence et affiner dynamiquement votre déploiement pour vous assurer qu'il s'exécute toujours sur une technologie optimisée.
La passerelle d'inférence GKE est désormais en disponibilité générale et propose deux fonctionnalités avancées pour gérer les applications d'IA générative complexes.
Anywhere Cache est un nouveau cache de lecture entièrement cohérent qui fonctionne avec les buckets Google Cloud Storage (GCS) existants afin de mettre en cache les données dans la même zone que vos accélérateurs. Cela réduit la latence de lecture jusqu'à 96 % et minimise les coûts réseau associés aux charges de travail intensives en lecture.
L'ensemble de l'infrastructure est relié par Cloud WAN, un réseau mondial entièrement géré et basé sur l'infrastructure à l'échelle mondiale de Google. Cloud WAN connecte les ressources de calcul d'IA dans différentes régions, différents clouds et différents environnements sur site. Il améliore de 40 % l'expérience des applications d'inférence et réduit de 40 % le coût total de possession par rapport aux solutions WAN traditionnelles.
Commencez à créer sur Google Cloud avec 300 $ de crédits inclus et plus de 20 produits toujours sans frais.