Exportation TensorRT pour les modèles YOLO26#
Déployer des modèles de computer vision dans des environnements haute performance peut nécessiter un format qui maximise la vitesse et l'efficacité. C'est particulièrement vrai lorsque tu déploies ton modèle sur des GPU NVIDIA.
En utilisant le format d'exportation TensorRT, tu peux optimiser tes modèles Ultralytics YOLO26 pour une inférence rapide et efficace sur le matériel NVIDIA. Ce guide te donne des étapes faciles à suivre pour le processus de conversion et t'aide à tirer le meilleur parti de la technologie avancée de NVIDIA dans tes projets de deep learning.
TensorRT#
TensorRT, développé par NVIDIA, est un kit de développement logiciel (SDK) avancé conçu pour l'inférence de deep learning à haute vitesse. Il est particulièrement bien adapté aux applications en temps réel comme l'object detection.
Ce toolkit optimise les modèles de deep learning pour les GPU NVIDIA, ce qui permet des opérations plus rapides et plus efficaces. Les modèles TensorRT subissent une optimisation TensorRT, qui inclut des techniques telles que la fusion de couches, la calibration de précision (INT8 et FP16), la gestion dynamique de la mémoire des tenseurs et l'auto-ajustement des noyaux. Convertir des modèles de deep learning au format TensorRT permet aux développeurs de réaliser pleinement le potentiel des GPU NVIDIA.
TensorRT est connu pour sa compatibilité avec divers formats de modèles, notamment TensorFlow, PyTorch et ONNX, offrant aux développeurs une solution flexible pour intégrer et optimiser des modèles issus de différents frameworks. Cette polyvalence permet un model deployment efficace dans divers environnements matériels et logiciels.
TensorRT profile et ajuste un moteur sur son GPU de compilation. Compile pour l'architecture du GPU de déploiement et fais correspondre le runtime TensorRT/CUDA ; ne traite pas un fichier .engine comme un format de modèle portable. Pour le déploiement en edge, Ultralytics Platform propose huit sélections cibles Jetson, avec le statut de compilation physique et de validation documenté pour chacune, ou tu peux exporter localement sur l'appareil de destination.
Caractéristiques principales des modèles TensorRT#
Les modèles TensorRT offrent une gamme de fonctionnalités clés qui contribuent à leur efficacité et à leur performance dans l'inférence de deep learning à haute vitesse :
-
Calibration de précision : TensorRT prend en charge la calibration de précision, permettant aux modèles d'être ajustés selon des exigences de précision spécifiques. Cela inclut la prise en charge de formats de précision réduite tels que INT8 et FP16, qui peuvent augmenter davantage la vitesse d'inférence tout en maintenant des niveaux de précision acceptables.
-
Layer Fusion : Le processus d'optimisation de TensorRT inclut la fusion de couches, où plusieurs couches d'un neural network sont combinées en une seule opération. Cela réduit la surcharge de calcul et améliore la vitesse d'inférence en minimisant l'accès à la mémoire et les calculs.
-
Gestion dynamique de la mémoire des tenseurs : TensorRT gère efficacement l'utilisation de la mémoire des tenseurs pendant l'inférence, réduisant la surcharge mémoire et optimisant l'allocation mémoire. Il en résulte une utilisation plus efficace de la mémoire GPU.
-
Auto-ajustement des noyaux (Automatic Kernel Tuning) : TensorRT applique un auto-ajustement des noyaux pour sélectionner le noyau GPU le plus optimisé pour chaque couche du modèle. Cette approche adaptative garantit que le modèle tire pleinement parti de la puissance de calcul du GPU.
Options de déploiement dans TensorRT#
Avant de regarder le code pour exporter des modèles YOLO26 au format TensorRT, comprenons où les modèles TensorRT sont habituellement utilisés.
TensorRT propose plusieurs options de déploiement, et chaque option équilibre différemment la facilité d'intégration, l'optimisation des performances et la flexibilité :
- Déploiement au sein de TensorFlow : Cette méthode intègre TensorRT dans TensorFlow, permettant aux modèles optimisés de s'exécuter dans un environnement TensorFlow familier. Elle est utile pour les modèles comprenant un mélange de couches prises en charge et non prises en charge, car TF-TRT peut les gérer efficacement.
-
API d'exécution autonome TensorRT (Standalone Runtime API) : Offre un contrôle granulaire, idéal pour les applications où la performance est critique. C'est plus complexe mais permet une implémentation personnalisée des opérateurs non pris en charge.
-
NVIDIA Triton Inference Server : Une option qui prend en charge les modèles de divers frameworks. Particulièrement adapté à l'inférence cloud ou edge, il fournit des fonctionnalités telles que l'exécution concurrente de modèles et l'analyse de modèles.
Tâches prises en charge#
L'exportation TensorRT prend en charge l'ensemble des sept tâches Ultralytics. La segmentation sémantique et l'estimation de la profondeur ne sont disponibles qu'avec YOLO26, la seule famille qui intègre ces têtes.
Exporter des modèles YOLO26 vers TensorRT#
Tu peux améliorer l'efficacité de l'exécution et optimiser les performances en convertissant les modèles YOLO26 au format TensorRT.
Installation#
Pour installer le package requis, exécute :
# Install the required package for YOLO26
pip install ultralyticsPour des instructions détaillées et les meilleures pratiques concernant le processus d'installation, consulte notre YOLO26 Installation guide. Si tu rencontres des difficultés lors de l'installation des packages requis pour YOLO26, consulte notre Common Issues guide pour trouver des solutions et des astuces.
Utilisation#
Avant de te lancer dans les instructions d'utilisation, assure-toi de découvrir la gamme de YOLO26 models offered by Ultralytics. Cela t'aidera à choisir le modèle le plus adapté aux exigences de ton projet.
Le format TensorRT prend en charge les modes Export, Predict et Validate. L'inférence et la validation nécessitent un GPU NVIDIA. Exporte ton modèle, puis charge le modèle exporté pour exécuter l'inférence ou valider sa précision.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to TensorRT format
model.export(format="engine") # creates 'yolo26n.engine'from ultralytics import YOLO
# Load the exported TensorRT model
model = YOLO("yolo26n.engine")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported TensorRT model
model = YOLO("yolo26n.engine")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Arguments d'exportation#
| Argument | Type | Défaut | Description |
|---|---|---|---|
format | str | 'engine' | Format cible pour le modèle exporté, définissant la compatibilité avec divers environnements de déploiement. |
imgsz | int ou tuple | 640 | Taille d'image souhaitée pour l'entrée du modèle. Peut être un entier pour des images carrées ou un tuple (height, width) pour des dimensions spécifiques. |
quantize | int ou str | None | Précision de quantification : 16 (FP16) ou 8 (INT8/PTQ ; nécessite une calibration data/fraction) ; 32/non défini est FP32. Remplace les indicateurs obsolètes half/int8. |
dynamic | bool | False | Autorise des tailles d'entrée dynamiques, améliorant la flexibilité dans la gestion de dimensions d'image variables. |
simplify | bool | True | Simplifie le graphe du modèle avec onnxslim, ce qui peut améliorer les performances et la compatibilité. |
opset | int | None | Spécifie la version de l'opset ONNX pour le graphe ONNX intermédiaire. Si elle n'est pas définie, la dernière version prise en charge est utilisée. |
workspace | float ou None | None | Définit la taille maximale de l'espace de travail en Gio pour les optimisations TensorRT, en équilibrant l'utilisation de la mémoire et les performances ; utilise None pour une allocation automatique par TensorRT jusqu'au maximum de l'appareil. |
nms | bool | False | Ajoute le NMS (Non-Maximum Suppression), essentiel pour un post-traitement de détection précis et efficace. |
batch | int | 1 | Spécifie la taille d'inférence par lots du modèle exporté ou le nombre maximal d'images que le modèle exporté traitera simultanément en mode predict. |
data | str | None | Chemin d'accès au fichier YAML du dataset, essentiel pour la quantification ; la classification prend à la place un répertoire de dataset ou un nom de dataset intégré. S'il est omis avec quantize=8, Ultralytics sélectionne le dataset de calibration par défaut pour la tâche du modèle. |
fraction | float, int ou list | 1.0 | Sous-ensemble de calibration sous forme de rapport, de nombre d'images ou de rapports/comptes [train, val] ; une liste limite train ou val, tandis que test reste complet. |
device | str | None | Spécifie l'appareil pour l'exportation : GPU (device=0), DLA pour NVIDIA Jetson (device=dla:0 ou device=dla:1). |
Assure-toi d'utiliser un GPU avec prise en charge de CUDA lors de l'exportation vers TensorRT.
TensorRT 11.0 ne prend pas en charge DLA ; utilise TensorRT 10.x pour device=dla:0 ou device=dla:1, ou exporte un moteur GPU TensorRT 11.0.
Pour plus de détails sur le processus d'exportation, visite la page de documentation d'Ultralytics sur l'exportation.
Exporter TensorRT avec quantification INT8#
L'exportation de modèles Ultralytics YOLO utilisant TensorRT avec une précision INT8 exécute une quantification post-entraînement (PTQ). TensorRT utilise la calibration pour le PTQ, qui mesure la distribution des activations au sein de chaque tenseur d'activation lorsque le modèle YOLO traite l'inférence sur des données d'entrée représentatives, puis utilise cette distribution pour estimer les valeurs d'échelle pour chaque tenseur. Chaque tenseur d'activation candidat à la quantification possède une échelle associée déduite par un processus de calibration.
TensorRT 11 a supprimé la quantification implicite et l'interface IInt8Calibrator. Sur TensorRT 11 et les versions ultérieures, Ultralytics effectue la quantification INT8 avec la quantification explicite NVIDIA ModelOpt, qui insère des nœuds Q/DQ dans le graphe ONNX avant de compiler un moteur fortement typé, et FP16 est appliqué avec la conversion en précision mixte ModelOpt AutoCast. Les arguments quantize=8, quantize=16 et data fonctionnent de la même manière ; ModelOpt est installé automatiquement lors de la première utilisation. Sur TensorRT 7-10, le calibrateur hérité décrit ci-dessous est utilisé à la place.
Lors du traitement de réseaux quantifiés implicitement, TensorRT utilise l'INT8 de manière opportuniste pour optimiser le temps d'exécution des couches. Si une couche s'exécute plus rapidement en INT8 et possède des échelles de quantification assignées sur ses entrées et sorties de données, alors un noyau avec une précision INT8 est assigné à cette couche ; sinon, TensorRT sélectionne une précision FP32 ou FP16 pour le noyau en fonction de ce qui résulte en un temps d'exécution plus rapide pour cette couche.
Il est critique de s'assurer que le même appareil qui utilisera les poids du modèle TensorRT pour le déploiement est utilisé pour l'exportation avec une précision INT8, car les résultats de calibration peuvent varier d'un appareil à l'autre.
Configurer l'exportation INT8#
Les arguments fournis lors de l'utilisation de l'exportation pour un modèle Ultralytics YOLO influenceront fortement les performances du modèle exporté. Ils devront également être sélectionnés en fonction des ressources de l'appareil disponibles, bien que les arguments par défaut doivent fonctionner pour la plupart des GPU discrets NVIDIA Ampere (ou plus récents). L'algorithme de calibration utilisé est "MINMAX_CALIBRATION" pour les exportations GPU, tandis que les exportations DLA sur NVIDIA Jetson utilisent "ENTROPY_CALIBRATION_2". Tu peux lire plus de détails sur les options disponibles dans le guide du développeur TensorRT. Les tests d'Ultralytics ont montré que "MINMAX_CALIBRATION" est le meilleur choix pour les exportations GPU, et l'algorithme est sélectionné automatiquement en fonction de l'appareil d'exportation.
-
workspace: Contrôle la taille (en Gio) de l'allocation de mémoire de l'appareil lors de la conversion des poids du modèle.-
Ajuste la valeur de
workspaceen fonction de tes besoins de calibration et de la disponibilité des ressources. Bien qu'unworkspaceplus grand puisse augmenter le temps de calibration, il permet à TensorRT d'explorer un plus large éventail de tactiques d'optimisation, améliorant potentiellement les performances et la précision du modèle. Inversement, unworkspaceplus petit peut réduire le temps de calibration mais peut limiter les stratégies d'optimisation, affectant la qualité du modèle quantifié. -
La valeur par défaut est
workspace=None, ce qui permettra à TensorRT d'allouer automatiquement de la mémoire. En cas de configuration manuelle, cette valeur peut devoir être augmentée si la calibration plante (quitte sans avertissement). -
TensorRT signalera
UNSUPPORTED_STATElors de l'exportation si la valeur deworkspaceest supérieure à la mémoire disponible sur l'appareil, ce qui signifie que la valeur deworkspacedoit être abaissée ou définie surNone. -
Si
workspaceest défini sur la valeur maximale et que la calibration échoue ou plante, envisage d'utiliserNonepour l'allocation automatique ou en réduisant les valeurs deimgszetbatchpour diminuer les besoins en mémoire. -
N'oublie pas que la calibration pour INT8 est spécifique à chaque appareil ; emprunter un GPU "haut de gamme" pour la calibration pourrait entraîner de faibles performances lorsque l'inférence sera exécutée sur un autre appareil.
-
-
batch: La taille de lot maximale qui sera utilisée pour l'inférence. Pendant l'inférence, des lots plus petits peuvent être utilisés, mais l'inférence n'acceptera pas de lots supérieurs à celui spécifié.
L'utilisation de petits lots peut entraîner une mise à l'échelle imprécise lors de la calibration INT8. En effet, le processus s'ajuste en fonction des données qu'il observe. De petits lots peuvent ne pas capturer toute la plage de valeurs, ce qui entraîne des problèmes avec la calibration finale. L'utilisation d'une taille de lot plus grande aide à garantir des résultats de calibration plus représentatifs.
Des expérimentations menées par NVIDIA les ont amenés à recommander d'utiliser au moins 500 images de calibration représentatives des données de ton modèle, avec la calibration par quantification INT8. Il s'agit d'une directive et non d'une exigence stricte, et tu devras expérimenter ce qui est nécessaire pour obtenir de bons résultats sur ton jeu de données. Étant donné que les données de calibration sont requises pour la calibration INT8 avec TensorRT, assure-toi d'utiliser l'argument data lorsque quantize=8 pour TensorRT et d'utiliser data="my_dataset.yaml", ce qui utilisera les images de validation pour la calibration. Lorsqu'aucune valeur n'est transmise pour data lors de l'exportation vers TensorRT avec quantification INT8, l'option par défaut consistera à utiliser l'un des jeux de données d'exemple "petits" basés sur la tâche du modèle au lieu de générer une erreur.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(
format="engine",
dynamic=True, # (1)!
batch=8, # (2)!
workspace=4, # (3)!
quantize=8,
data="coco.yaml", # (4)!
)
# Load the exported TensorRT INT8 model
model = YOLO("yolo26n.engine", task="detect")
# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")- Exportations avec des axes dynamiques, cela sera activé par défaut lors de l'exportation avec
quantize=8même si ce n'est pas explicitement défini. Consulte les arguments d'exportation pour plus d'informations. - Définit une taille de lot maximale de 8 pour le modèle exporté et la calibration INT8.
- Alloue 4 GiB de mémoire au lieu d'allouer la totalité de l'appareil pour le processus de conversion.
- Utilise le jeu de données COCO pour la calibration, plus précisément les images utilisées pour la validation (5 000 au total).
Cache de calibration
TensorRT générera un .cache de calibration qui pourra être réutilisé pour accélérer l'exportation future des poids du modèle en utilisant les mêmes données, mais cela peut entraîner une mauvaise calibration si les données sont très différentes ou si la valeur de batch est modifiée de manière drastique. Dans ces circonstances, le .cache existant doit être renommé et déplacé vers un autre répertoire ou entièrement supprimé.
Avantages de l'utilisation de YOLO avec TensorRT INT8#
-
Taille de modèle réduite : La quantification de FP32 à INT8 peut réduire la taille du modèle par 4 (sur disque ou en mémoire), conduisant à des temps de téléchargement plus rapides, des exigences de stockage plus faibles et une empreinte mémoire réduite lors du déploiement d'un modèle.
-
Consommation d'énergie réduite : Les opérations de précision réduite pour les modèles YOLO exportés en INT8 peuvent consommer moins d'énergie par rapport aux modèles FP32, surtout pour les appareils alimentés par batterie.
-
Vitesses d'inférence améliorées : TensorRT optimise le modèle pour le matériel cible, conduisant potentiellement à des vitesses d'inférence plus rapides sur les GPU, les appareils embarqués et les accélérateurs.
Note sur les vitesses d'inférence
On peut s'attendre à ce que les premiers appels d'inférence avec un modèle exporté vers TensorRT INT8 aient des temps de prétraitement, d'inférence et/ou de post-traitement plus longs que d'habitude. Cela peut également se produire lors du changement de imgsz pendant l'inférence, en particulier lorsque imgsz n'est pas identique à ce qui a été spécifié lors de l'exportation (l'exportation imgsz est définie comme profil "optimal" de TensorRT).
Inconvénients de l'utilisation de YOLO avec TensorRT INT8#
-
Baisse des métriques d'évaluation : Utiliser une précision inférieure signifie que
mAP,Precision,Recallou toute autre métrique utilisée pour évaluer les performances du modèle sera probablement un peu moins bonne. Les couches sigmoïdes sont maintenues à une précision plus élevée pour préserver la calibration des scores, mais l'INT8 peut tout de même décaler les valeurs de confiance, alors choisis le seuil opérationnel à partir de la courbe F1 du modèle INT8 lui-même. Consulte la section Résultats de performance pour comparer les différences entremAP50etmAP50-95lors d'une exportation avec INT8 sur un petit échantillon de divers appareils. -
Temps de développement accrus : Trouver les paramètres "optimaux" pour la calibration INT8 pour un jeu de données et un appareil peut prendre une quantité significative de tests.
-
Dépendance matérielle : La calibration et les gains de performance pourraient être hautement dépendants du matériel et les poids du modèle sont moins transférables.
Performances d'exportation Ultralytics YOLO TensorRT#
NVIDIA A100#
Testé avec Ubuntu 22.04.3 LTS, python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1
Consulte la documentation sur la détection pour des exemples d'utilisation avec ces modèles entraînés sur COCO, qui incluent 80 classes pré-entraînées.
Temps d'inférence affichés pour mean, min (le plus rapide) et max (le plus lent) pour chaque test utilisant les poids pré-entraînés yolov8n.engine
| Précision | Test d'évaluation | moyenne (ms) | min | max (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | taille (pixels) |
|---|---|---|---|---|---|---|---|
| FP32 | Prédire (Predict) | 0.52 | 0.51 | 0.56 | 8 | 640 | ||
| FP32 | COCOval | 0.52 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Prédire (Predict) | 0.34 | 0.34 | 0.41 | 8 | 640 | ||
| FP16 | COCOval | 0.33 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Prédire (Predict) | 0.28 | 0.27 | 0.31 | 8 | 640 | ||
| INT8 | COCOval | 0.29 | 0.47 | 0.33 | 1 | 640 |
GPU grand public#
Testé avec Windows 10.0.19045, python 3.10.9, ultralytics==8.2.4, tensorrt==10.0.0b6
Temps d'inférence affichés pour mean, min (le plus rapide) et max (le plus lent) pour chaque test utilisant les poids pré-entraînés yolov8n.engine
| Précision | Test d'évaluation | moyenne (ms) | min | max (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | taille (pixels) |
|---|---|---|---|---|---|---|---|
| FP32 | Prédire (Predict) | 1.06 | 0.75 | 1.88 | 8 | 640 | ||
| FP32 | COCOval | 1.37 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Prédire (Predict) | 0.62 | 0.75 | 1.13 | 8 | 640 | ||
| FP16 | COCOval | 0.85 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Prédire (Predict) | 0.52 | 0.38 | 1.00 | 8 | 640 | ||
| INT8 | COCOval | 0.74 | 0.47 | 0.33 | 1 | 640 |
Appareils embarqués#
Testé avec JetPack 6.0 (L4T 36.3) Ubuntu 22.04.4 LTS, python 3.10.12, ultralytics==8.2.16, tensorrt==10.0.1
Temps d'inférence affichés pour mean, min (le plus rapide) et max (le plus lent) pour chaque test utilisant les poids pré-entraînés yolov8n.engine
| Précision | Test d'évaluation | moyenne (ms) | min | max (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | taille (pixels) |
|---|---|---|---|---|---|---|---|
| FP32 | Prédire (Predict) | 6.11 | 6.10 | 6.29 | 8 | 640 | ||
| FP32 | COCOval | 6.17 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Prédire (Predict) | 3.18 | 3.18 | 3.20 | 8 | 640 | ||
| FP16 | COCOval | 3.19 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Prédire (Predict) | 2.30 | 2.29 | 2.35 | 8 | 640 | ||
| INT8 | COCOval | 2.32 | 0.46 | 0.32 | 1 | 640 |
Consulte notre guide de démarrage rapide sur NVIDIA Jetson avec Ultralytics YOLO pour en savoir plus sur l'installation et la configuration.
Consulte notre guide de démarrage rapide sur NVIDIA DGX Spark avec Ultralytics YOLO pour en savoir plus sur l'installation et la configuration.
Méthodes d'évaluation#
Développe les sections ci-dessous pour plus d'informations sur la façon dont ces modèles ont été exportés et testés.
Configurations d'exportation
Consulte le mode export pour plus de détails concernant les arguments de configuration de l'exportation.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# TensorRT FP32
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2)
# TensorRT FP16
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, quantize=16)
# TensorRT INT8 with calibration `data` (i.e. COCO, ImageNet, or DOTAv1 for appropriate model task)
out = model.export(
format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, quantize=8, data="coco8.yaml"
)Boucle de prédiction
Consulte le mode predict pour des informations supplémentaires.
import cv2
from ultralytics import YOLO
model = YOLO("yolo26n.engine")
img = cv2.imread("path/to/image.jpg")
for _ in range(100):
result = model.predict(
[img] * 8, # batch=8 of the same image
verbose=False,
device="cuda",
)Configuration de la validation
Consulte le mode val pour en savoir plus sur les arguments de configuration de la validation.
from ultralytics import YOLO
model = YOLO("yolo26n.engine")
results = model.val(
data="data.yaml", # COCO, ImageNet, or DOTAv1 for appropriate model task
batch=1,
imgsz=640,
verbose=False,
device="cuda",
)Déploiement de modèles YOLO26 exportés en TensorRT#
Après avoir exporté avec succès tes modèles Ultralytics YOLO26 au format TensorRT, tu es maintenant prêt à les déployer. Pour des instructions détaillées sur le déploiement de tes modèles TensorRT dans divers environnements, jette un œil aux ressources suivantes :
-
Déployer Ultralytics avec un serveur Triton : Notre guide sur la façon d'utiliser le serveur d'inférence Triton de NVIDIA (anciennement TensorRT Inference Server) spécifiquement pour une utilisation avec les modèles Ultralytics YOLO.
-
Déploiement de réseaux de neurones profonds avec NVIDIA TensorRT : Cet article explique comment utiliser NVIDIA TensorRT pour déployer efficacement des réseaux de neurones profonds sur des plates-formes de déploiement basées sur GPU.
-
IA de bout en bout pour les PC équipés par NVIDIA : Déploiement avec NVIDIA TensorRT : Cet article de blog explique l'utilisation de NVIDIA TensorRT pour optimiser et déployer des modèles d'IA sur des PC équipés par NVIDIA.
-
Répertoire GitHub pour NVIDIA TensorRT : : Il s'agit du dépôt GitHub officiel qui contient le code source et la documentation pour NVIDIA TensorRT.
Résumé#
Dans ce guide, nous nous sommes concentrés sur la conversion des modèles Ultralytics YOLO26 vers le format de modèle TensorRT de NVIDIA. Cette étape de conversion est cruciale pour améliorer l'efficacité et la vitesse des modèles YOLO26, les rendant plus performants et adaptés à divers environnements de déploiement.
Pour plus d'informations sur les détails d'utilisation, jette un œil à la documentation officielle de TensorRT.
Si tu es curieux d'en savoir plus sur les autres intégrations d'Ultralytics YOLO26, notre page de guide d'intégration propose une vaste sélection de ressources et d'informations utiles.
FAQ#
L'utilisation de TensorRT pour optimiser les modèles YOLO26 offre plusieurs avantages :
- Vitesse d'inférence plus rapide : TensorRT optimise les couches du modèle et utilise la calibration de précision (INT8 et FP16) pour accélérer l'inférence sans sacrifier significativement la précision.
- Efficacité de la mémoire : TensorRT gère dynamiquement la mémoire des tenseurs, réduisant la surcharge et améliorant l'utilisation de la mémoire GPU.
- Fusion de couches : Combine plusieurs couches en opérations uniques, réduisant la complexité computationnelle.
- Auto-ajustement des noyaux : Sélectionne automatiquement les noyaux GPU optimisés pour chaque couche de modèle, garantissant une performance maximale.
Pour en savoir plus, explore la documentation officielle de TensorRT par NVIDIA et notre aperçu approfondi de TensorRT.
Oui, tu peux exporter les modèles YOLO26 en utilisant TensorRT avec la quantification INT8. Ce processus implique la quantification post-entraînement (PTQ) et la calibration :
-
Exporter avec INT8 :
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="engine", batch=8, workspace=4, quantize=8, data="coco.yaml") -
Exécuter l'inférence :
from ultralytics import YOLO model = YOLO("yolo26n.engine", task="detect") result = model.predict("https://ultralytics.com/images/bus.jpg")
Pour plus de détails, réfère-toi à la section sur l'exportation de TensorRT avec la quantification INT8.
-
Le déploiement des modèles YOLO26 TensorRT sur un NVIDIA Triton Inference Server peut être effectué en utilisant les ressources suivantes :
- Déployer Ultralytics YOLO26 avec le serveur Triton : Un guide étape par étape sur la configuration et l'utilisation de Triton Inference Server.
- Déploiement de réseaux de neurones profonds avec NVIDIA TensorRT : Le guide de NVIDIA sur le déploiement de modèles de deep learning avec TensorRT pour des options de déploiement et des configurations détaillées.
Ces guides t'aideront à intégrer efficacement les modèles YOLO26 dans divers environnements de déploiement.
Les améliorations de performance avec TensorRT peuvent varier selon le matériel utilisé. Voici quelques benchmarks typiques :
-
NVIDIA A100 :
- Inférence FP32 : ~0,52 ms / image
- Inférence FP16 : ~0,34 ms / image
- Inférence INT8 : ~0,28 ms / image
- Légère réduction du mAP avec la précision INT8, mais amélioration significative de la vitesse.
-
GPU grand public (ex : RTX 3080) :
- Inférence FP32 : ~1,06 ms / image
- Inférence FP16 : ~0,62 ms / image
- Inférence INT8 : ~0,52 ms / image
Des benchmarks de performance détaillés pour différentes configurations matérielles se trouvent dans la section des performances.
Pour des informations plus complètes sur les performances de TensorRT, réfère-toi à la documentation d'Ultralytics et à nos rapports d'analyse des performances.
-
Pour convertir tes modèles Ultralytics YOLO26 au format TensorRT pour une inférence optimisée sur GPU NVIDIA, suis ces étapes :
Installe le package requis :
Exporte ton modèle YOLO26 :
Pour plus de détails, visite le guide d'installation de YOLO26 et la documentation sur l'exportation.