Intelligence Artificielle
TensorRT-LLM : un guide complet pour optimiser l'inférence de modèles de langage volumineux pour des performances maximales

Alors que la demande de modèles de langage volumineux (LLM) continue d'augmenter, garantir une inférence rapide, efficace et évolutive est devenu plus crucial que jamais. TensorRT-LLM TensorRT-LLM intervient pour relever ce défi en fournissant un ensemble d'outils et d'optimisations puissants spécialement conçus pour l'inférence LLM. TensorRT-LLM offre un éventail impressionnant d'améliorations des performances, telles que la quantification, la fusion de noyaux, le traitement par lots en vol et la prise en charge multi-GPU. Ces avancées permettent d'atteindre des vitesses d'inférence jusqu'à 8 fois plus rapides que les méthodes traditionnelles basées sur le processeur, transformant ainsi la façon dont nous déployons les LLM en production.
Ce guide complet explore tous les aspects de TensorRT-LLM, de son architecture et de ses fonctionnalités clés aux exemples pratiques de déploiement de modèles. Que vous soyez ingénieur en IA, développeur de logiciels ou chercheur, ce guide vous donnera les connaissances nécessaires pour exploiter TensorRT-LLM afin d'optimiser l'inférence LLM sur les GPU NVIDIA.
Accélérer l'inférence LLM avec TensorRT-LLM
TensorRT-LLM offre des améliorations spectaculaires en termes de performances d'inférence LLM. Selon les tests de NVIDIA, les applications basées sur TensorRT se révèlent jusqu'à Déploiements 8x plus rapides des vitesses d'inférence par rapport aux plates-formes uniquement basées sur le processeur. Il s'agit d'une avancée cruciale dans les applications en temps réel telles que les chatbots, les systèmes de recommandation et les systèmes autonomes qui nécessitent des réponses rapides.
Comment ça marche
TensorRT-LLM accélère l'inférence en optimisant les réseaux neuronaux pendant le déploiement à l'aide de techniques telles que :
- Quantification:Réduit la précision des poids et des activations, réduisant la taille du modèle et améliorant la vitesse d'inférence.
- Fusion de couches et de tenseurs:Fusionne des opérations telles que des fonctions d'activation et des multiplications de matrices en une seule opération.
- Réglage du noyau: Sélectionne les noyaux CUDA optimaux pour le calcul GPU, réduisant ainsi le temps d'exécution.
Ces optimisations garantissent que vos modèles LLM fonctionnent efficacement sur une large gamme de plates-formes de déploiement, des centres de données hyperscale aux systèmes embarqués.
Optimisation des performances d'inférence avec TensorRT
Construit sur le modèle de programmation parallèle CUDA de NVIDIA, TensorRT fournit des optimisations hautement spécialisées pour l'inférence sur les GPU NVIDIA. En rationalisant les processus tels que la quantification, le réglage du noyau et la fusion des opérations de tenseur, TensorRT garantit que les LLM peuvent s'exécuter avec une latence minimale.
Certaines des techniques les plus efficaces incluent :
- Quantification:Cela réduit la précision numérique des paramètres du modèle tout en maintenant une grande précision, accélérant ainsi efficacement l'inférence.
- Fusion Tensor:En fusionnant plusieurs opérations dans un seul noyau CUDA, TensorRT minimise la surcharge de mémoire et augmente le débit.
- Réglage automatique du noyau: TensorRT sélectionne automatiquement le meilleur noyau pour chaque opération, optimisant l'inférence pour un GPU donné.
Ces techniques permettent à TensorRT-LLM d’optimiser les performances d’inférence pour les tâches d’apprentissage en profondeur telles que le traitement du langage naturel, les moteurs de recommandation et l’analyse vidéo en temps réel.
Accélérer les charges de travail de l'IA avec TensorRT
TensorRT accélère les charges de travail d'apprentissage en profondeur en incorporant des optimisations de précision telles que INT8 et FP16. Ces formats à précision réduite permettent une inférence beaucoup plus rapide tout en maintenant la précision. Cela est particulièrement utile dans les applications en temps réel où une faible latence est une exigence critique.
INT8 et FP16 les optimisations sont particulièrement efficaces dans :
- Video Streaming:Les tâches de traitement vidéo basées sur l’IA, comme la détection d’objets, bénéficient de ces optimisations en réduisant le temps nécessaire au traitement des images.
- Systèmes de recommandation:En accélérant l’inférence pour les modèles qui traitent de grandes quantités de données utilisateur, TensorRT permet une personnalisation en temps réel à grande échelle.
- Traitement du langage naturel (PNL):TensorRT améliore la vitesse des tâches NLP telles que la génération de texte, la traduction et le résumé, les rendant adaptées aux applications en temps réel.
Déployez, exécutez et faites évoluer avec NVIDIA Triton
Une fois votre modèle optimisé avec TensorRT-LLM, vous pouvez facilement le déployer, l'exécuter et le mettre à l'échelle à l'aide de Serveur d'inférence NVIDIA Triton. Triton est un logiciel open source qui prend en charge le traitement par lots dynamique, les ensembles de modèles et le débit élevé. Il fournit un environnement flexible pour la gestion des modèles d'IA à grande échelle.
Certaines des caractéristiques clés incluent:
- Exécution simultanée du modèle:Exécutez plusieurs modèles simultanément, maximisant ainsi l’utilisation du GPU.
- Traitement par lots dynamique:Combine plusieurs demandes d'inférence en un seul lot, réduisant ainsi la latence et augmentant le débit.
- Entrées audio/vidéo en streaming:Prend en charge les flux d'entrée dans les applications en temps réel, telles que les analyses vidéo en direct ou les services de conversion de la parole en texte.
Cela fait de Triton un outil précieux pour le déploiement de modèles optimisés TensorRT-LLM dans des environnements de production, garantissant une évolutivité et une efficacité élevées.
Fonctionnalités principales de TensorRT-LLM pour l'inférence LLM
API Python Open Source
TensorRT-LLM fournit une solution hautement modulaire et API Python open source, simplifiant le processus de définition, d'optimisation et d'exécution des LLM. L'API permet aux développeurs de créer des LLM personnalisés ou de modifier des LLM prédéfinis en fonction de leurs besoins, sans nécessiter de connaissances approfondies de CUDA ou des frameworks d'apprentissage profond.
Traitement par lots en vol et attention paginée
L'une des fonctionnalités remarquables de TensorRT-LLM est Traitement par lots en vol, qui optimise la génération de texte en traitant plusieurs requêtes simultanément. Cette fonctionnalité minimise le temps d'attente et améliore l'utilisation du GPU en regroupant les séquences de manière dynamique.
En outre, Attention paginée garantit que l'utilisation de la mémoire reste faible même lors du traitement de longues séquences d'entrée. Au lieu d'allouer une mémoire contiguë à tous les jetons, l'attention paginée divise la mémoire en « pages » qui peuvent être réutilisées de manière dynamique, évitant ainsi la fragmentation de la mémoire et améliorant l'efficacité.
Inférence multi-GPU et multi-nœuds
Pour les modèles plus volumineux ou les charges de travail plus complexes, TensorRT-LLM prend en charge multi-GPU et inférence multi-nœuds. Cette capacité permet la distribution des calculs de modèle sur plusieurs GPU ou nœuds, améliorant ainsi le débit et réduisant le temps d'inférence global.
Prise en charge du 8e PC
Avec l'avènement de FP8 (virgule flottante 8 bits), TensorRT-LLM exploite les GPU H100 de NVIDIA pour convertir les pondérations des modèles dans ce format pour une inférence optimisée. FP8 permet une consommation de mémoire réduite et un calcul plus rapide, particulièrement utile dans les déploiements à grande échelle.
Architecture et composants de TensorRT-LLM
Comprendre l'architecture de TensorRT-LLM vous aidera à mieux exploiter ses capacités d'inférence LLM. Décomposons les composants clés :
Définition du modèle
TensorRT-LLM vous permet de définir des LLM à l'aide d'une API Python simple. L'API construit un représentation graphique du modèle, facilitant la gestion des couches complexes impliquées dans les architectures LLM comme GPT ou BERT.
Fixations de poids
Avant de compiler le modèle, les pondérations (ou paramètres) doivent être liées au réseau. Cette étape garantit que les pondérations sont intégrées au moteur TensorRT, ce qui permet une inférence rapide et efficace. TensorRT-LLM permet également de mettre à jour les pondérations après la compilation, ce qui ajoute de la flexibilité aux modèles qui nécessitent des mises à jour fréquentes.
Recherche de motifs et fusion
Opération Fusion est une autre fonctionnalité puissante de TensorRT-LLM. En fusionnant plusieurs opérations (par exemple, des multiplications de matrices avec des fonctions d'activation) dans un seul noyau CUDA, TensorRT minimise la surcharge associée aux lancements multiples du noyau. Cela réduit les transferts de mémoire et accélère l'inférence.
Plugins
Pour étendre les capacités de TensorRT, les développeurs peuvent écrire plugins—des noyaux personnalisés qui effectuent des tâches spécifiques comme l'optimisation des blocs d'attention multi-têtes. Par exemple, Attention Flash le plugin améliore considérablement les performances des couches d'attention LLM.
Benchmarks : Gains de performances de TensorRT-LLM
TensorRT-LLM démontre des gains de performances significatifs pour l'inférence LLM sur différents GPU. Voici une comparaison de la vitesse d'inférence (mesurée en jetons par seconde) à l'aide de TensorRT-LLM sur différents GPU NVIDIA :
Modèle | La précision | Longueur d'entrée/sortie | H100 (80 Go) | A100 (80 Go) | L40S FP8 |
---|---|---|---|---|---|
GPTJ 6B | FP8 | 128/128 | 34,955 | 11,206 | 6,998 |
GPTJ 6B | FP8 | 2048/128 | 2,800 | 1,354 | 747 |
LLaMA v2 7B | FP8 | 128/128 | 16,985 | 10,725 | 6,121 |
LLaMA v3 8B | FP8 | 128/128 | 16,708 | 12,085 | 8,273 |
Ces tests montrent que TensorRT-LLM offre des améliorations substantielles en termes de performances, en particulier pour les séquences plus longues.
Travaux pratiques : Installation et création de TensorRT-LLM
Étape 1 : Créer un environnement de conteneur
Pour faciliter l'utilisation, TensorRT-LLM fournit des images Docker pour créer un environnement contrôlé pour la création et l'exécution de modèles.
docker build --pull \ --target devel \ --file docker/Dockerfile.multi \ --tag tensorrt_llm/devel:latest .