TensorRT est un kit de développement logiciel (SDK) et un moteur d'exécution d'optimisation d'inférence développé par Nvidia pour déployer des modèles d'apprentissage profond et d'apprentissage automatique entraînés sur des unités de traitement graphique (GPU). Il peut importer des modèles issus de frameworks tels que PyTorch, TensorFlow et ONNX, et les compiler en moteurs d'exécution optimisés pour une inférence à faible latence et à haut débit. Dans la documentation actuelle de Nvidia, le nom TensorRT désigne également une famille de produits plus large qui comprend le SDK TensorRT de base, TensorRT-LLM et TensorRT-RTX.
Le SDK de base est principalement un produit propriétaire de Nvidia, bien que Nvidia maintienne également des dépôts TensorRT open source sous licence Apache et des projets compagnons associés. TensorRT est largement utilisé dans les environnements de production pour les tâches d'inférence IA, de la vision par ordinateur aux grands modèles de langage, et constitue un composant clé de la pile logicielle d'apprentissage profond de Nvidia.
Historique
TensorRT était disponible dans le cadre de la pile logicielle d'apprentissage profond de Nvidia dès 2017, lorsqu'il a été décrit comme un moteur d'inférence haute performance pour déployer des réseaux de neurones entraînés sur les GPU Nvidia. En 2018, Google a annoncé l'intégration de Nvidia TensorRT avec TensorFlow 1.7, décrivant TensorRT comme une bibliothèque qui optimise les modèles d'apprentissage profond pour l'inférence et crée un moteur d'exécution pour le déploiement sur GPU dans les environnements de production. Cette intégration a marqué une étape précoce dans la standardisation de TensorRT comme outil pour l'inférence d'apprentissage automatique sur le matériel Nvidia.
Vue d'ensemble
Le cœur de TensorRT est une bibliothèque C++ qui prend un réseau entraîné, composé d'une définition de réseau et de paramètres entraînés, et produit un moteur d'exécution hautement optimisé pour l'inférence sur les GPU Nvidia. TensorRT fournit des API C++ et Python, et les modèles peuvent être exprimés directement via son API de définition de réseau ou importés via son analyseur ONNX. Cette flexibilité permet aux développeurs de travailler avec des modèles issus de divers frameworks d'apprentissage profond.
Selon la documentation de Nvidia, TensorRT effectue des optimisations au niveau du graphe et au niveau du noyau, telles que la fusion de couches et la sélection d'implémentations efficaces pour les opérations prises en charge. Ces optimisations réduisent la latence et augmentent le débit, rendant TensorRT adapté aux applications en temps réel. La documentation actuelle décrit également la prise en charge des formes dynamiques, des modes d'exécution en précision mixte incluant FP32, FP16, BF16, FP8 et INT8, ainsi que des optimisations spécialisées pour les charges de travail transformers et de grands modèles de langage. Cela inclut des techniques comme le élagage de modèles et la quantification pour améliorer encore les performances.
Les moteurs TensorRT peuvent être générés via les API TensorRT ou avec l'utilitaire en ligne de commande trtexec. La documentation de démarrage rapide de Nvidia décrit des flux de déploiement basés sur la conversion ONNX, les API d'exécution et la désérialisation directe des moteurs pour les applications C++ et Python. Ces flux permettent une intégration transparente dans les systèmes de production, souvent en conjonction avec des services cloud comme Amazon Web Services ou Google Cloud.
Licence et composants open source
Le modèle de licence autour de TensorRT est divisé entre un SDK de base propriétaire et un ensemble de dépôts et d'outils open source. Le logiciel TensorRT packagé distribué par Nvidia est régi par l'accord de licence logicielle Nvidia. En parallèle, Nvidia maintient un dépôt TensorRT public sur GitHub sous la licence Apache 2.0, permettant les contributions communautaires et la transparence pour certains composants.
La documentation officielle de TensorRT oriente également les utilisateurs vers le dépôt logiciel open source TensorRT pour les exemples de code et les échantillons de démarrage rapide. La documentation d'architecture décrit des outils associés tels que Polygraphy pour le débogage et le pliage de constantes, ainsi qu'ONNX-GraphSurgeon pour modifier les graphes ONNX avant le déploiement avec TensorRT. TensorRT prend également en charge un mécanisme de plugins pour les couches personnalisées et les opérations non prises en charge, permettant aux développeurs d'étendre ses fonctionnalités pour des besoins spécialisés.
Famille de produits
La documentation actuelle de Nvidia regroupe plusieurs produits d'inférence sous le nom TensorRT. Dans cette documentation, le SDK de base est distingué comme TensorRT (Enterprise), tandis que les offres associées incluent TensorRT-LLM pour l'inférence de grands modèles de langage et TensorRT-RTX pour les GPU RTX grand public. Cette approche familiale reflète la diversité croissante des charges de travail d'IA et des cibles matérielles.
TensorRT-LLM
TensorRT-LLM est un kit d'outils open source associé pour optimiser et servir les grands modèles de langage sur les GPU Nvidia. Nvidia le décrit comme fournissant une API Python pour définir des LLM et construire des moteurs TensorRT optimisés pour les charges de travail LLM. Ce kit d'outils est conçu pour répondre aux défis uniques des modèles d'IA générative, qui nécessitent une bande passante mémoire élevée et des mécanismes d'attention efficaces.
Selon la documentation de la famille de produits Nvidia, TensorRT-LLM prend en charge l'exécution multi-GPU et multi-nœuds, le traitement par lots en vol, la mise en cache KV paginée et des méthodes de quantification telles que FP8, INT8 et INT4 pour un service de modèles à plus haut débit. Ces fonctionnalités permettent un déploiement efficace de modèles comme ceux d'OpenAI ou d'Anthropic en production. Le code source de TensorRT-LLM est publié sur GitHub sous la licence Apache 2.0, favorisant une communauté de développeurs.
Étant donné que Nvidia documente TensorRT-LLM comme un membre distinct de la famille de produits TensorRT, il est généralement traité comme un projet logiciel associé mais distinct plutôt que comme une simple fonctionnalité du SDK TensorRT de base. Cette distinction permet un développement et une optimisation ciblés pour les grands modèles de langage, qui présentent des caractéristiques de performance différentes de celles des réseaux de neurones traditionnels.
Voir aussi
- llama.cpp
- SGLang
- vLLM
- Listes de logiciels d'intelligence artificielle open source
- Comparaison des logiciels d'apprentissage profond
- Comparaison des logiciels d'apprentissage automatique