TensorRT
TensorRT est le SDK de NVIDIA qui compile les réseaux neuronaux entraînés en moteurs optimisés pour accélérer l’inférence sur un seul GPU. Découvre comment il optimise les modèles et consulte le code.
TensorRT est le SDK de NVIDIA pour l’inférence d’apprentissage profond haute performance sur les GPU NVIDIA. Il prend un réseau entraîné, généralement sous forme de fichier ONNX, et le compile lors d’une phase de construction en un moteur, également appelé fichier de plan : un programme propre au GPU qui fusionne des couches, fonctionne en précision réduite et utilise les noyaux les plus rapides mesurés sur le GPU cible. Lors de la phase d’exécution, une application charge le moteur et l’exécute, généralement avec une latence d’inférence plus faible et un débit supérieur à ceux du framework d’origine. TensorRT est fourni sous forme de bibliothèques C++ et Python, ainsi que d’un outil en ligne de commande trtexec ; sa version majeure actuelle est TensorRT 11, dont la version 11.4 est disponible en octobre 2026.
Comment TensorRT optimise un modèle#
Le constructeur applique plusieurs optimisations au graphe du réseau :
- Fusion de couches et de tenseurs : Une convolution, son biais et sa fonction d’activation deviennent un seul noyau, et les couches dont les sorties ne sont jamais utilisées sont supprimées ; les résultats intermédiaires restent ainsi sur la puce au lieu d’effectuer des allers-retours dans la mémoire du GPU.
- Précision réduite : FP16 et BF16 divisent par deux le trafic mémoire par rapport à FP32 ; INT8 et FP8 le réduisent encore de moitié, tandis que INT4 (pour les poids uniquement) et FP4 vont plus loin sur les GPU récents : c’est une forme de quantification de modèle. TensorRT 11 a supprimé les indicateurs de constructeur FP16 et INT8, ainsi que l’étalonnage INT8 implicite de TensorRT 10, et exige désormais des réseaux fortement typés, où des nœuds de conversion et des paires quantification-déquantification déclarent la précision de chaque couche. Le Model Optimizer de NVIDIA peut insérer ces nœuds dans un fichier ONNX.
- Réglage automatique des noyaux : Pour chaque couche, le constructeur chronomètre sur le GPU réel les implémentations candidates, appelées tactiques, et conserve la plus rapide.
- Planification de la mémoire : Les tampons d’activation sont réutilisés entre les couches dont les durées de vie ne se chevauchent pas, ce qui réduit l’empreinte mémoire du moteur.
- Formes dynamiques : Les profils d’optimisation définissant des formes minimale, optimale et maximale permettent à un même moteur d’accepter différentes tailles de lot ou résolutions d’image, avec un réglage optimisé pour la forme optimale.
La construction d’un moteur peut prendre plusieurs minutes, et le résultat dépend du matériel. Par défaut, un moteur ne s’exécute que sur le type de GPU sur lequel il a été construit et avec la même version de TensorRT ; les moteurs compatibles avec le matériel et les versions sacrifient un peu de vitesse au profit de la portabilité. Les déploiements conservent donc le fichier ONNX et construisent les moteurs sur les machines où ils seront exécutés :
Exporter un modèle vers TensorRT#
Les modèles Ultralytics YOLO26 s’exportent vers TensorRT avec model.export(format="engine"), qui crée d’abord un fichier ONNX, puis construit le moteur sur le GPU local, en FP16 avec quantize=16 ou en INT8 avec quantize=8, étalonné sur des images du jeu de données data. Avec TensorRT 11, l’export applique ces précisions par l’intermédiaire de Model Optimizer, car l’API fortement typée l’exige :
from ultralytics import YOLO
# Construire un moteur TensorRT FP16 sur le GPU NVIDIA local (écrit yolo26n.engine)
model = YOLO("yolo26n.pt")
model.export(format="engine", quantize=16)
# Charger le moteur et exécuter l’inférence via la même API
trt_model = YOLO("yolo26n.engine")
results = trt_model("https://ultralytics.com/images/bus.jpg")
results[0].save(filename="bus_tensorrt.jpg")L’image enregistrée montre les détections produites sur la photo du bus par le moteur FP16, via la même interface YOLO que le modèle PyTorch.
TensorRT et les outils apparentés#
- ONNX : Le format de modèle portable que TensorRT utilise le plus souvent. Un même fichier ONNX peut être compilé en moteurs distincts pour un GPU de centre de données et un module embarqué.
- ONNX Runtime avec le fournisseur d’exécution TensorRT : Exécute sous forme de moteurs TensorRT les sous-graphes pris en charge par TensorRT, et utilise des noyaux CUDA ou CPU pour le reste, tout en conservant l’API ONNX Runtime.
- PyTorch : Le framework dans lequel la plupart des modèles sont entraînés. Torch-TensorRT compile directement les modèles PyTorch avec TensorRT, sans étape ONNX distincte.
- Autres moteurs d’inférence : OpenVINO pour le matériel Intel, Core ML pour les appareils Apple et LiteRT pour Android et les appareils embarqués remplissent le même rôle sur d’autres puces.
- TensorRT-LLM : La bibliothèque open source de NVIDIA pour l’inférence des grands modèles de langage, désormais conçue autour de PyTorch, avec des noyaux d’attention optimisés, la quantification, le décodage spéculatif et le parallélisme multi-GPU.
Applications concrètes#
- Analyse vidéo : Le SDK DeepStream de NVIDIA exécute des moteurs TensorRT au sein de pipelines mult caméras pour l’analyse du commerce de détail, du trafic et de la sécurité, où plusieurs flux partagent un même GPU.
- Inspection industrielle : Les caméras des chaînes de production rapides doivent effectuer une inférence en temps réel pendant le temps où chaque pièce est dans leur champ de vision ; les moteurs à précision réduite rendent cela possible sur des GPU compacts.
- Véhicules autonomes : Les réseaux de perception des véhicules autonomes s’exécutent sous forme de moteurs TensorRT sur les plateformes NVIDIA DRIVE, comme DRIVE AGX Orin et Thor.
- Robotique et appareils en périphérie : les modules NVIDIA Jetson sont fournis avec TensorRT et JetPack.










