Link to this sectionEsportazione TensorRT per modelli YOLO26#
Distribuire modelli di computer vision in ambienti ad alte prestazioni può richiedere un formato che massimizzi velocità ed efficienza. Questo è particolarmente vero quando distribuisci il tuo modello su GPU NVIDIA.
Utilizzando il formato di esportazione TensorRT, puoi potenziare i tuoi modelli Ultralytics YOLO26 per un'inferenza rapida ed efficiente su hardware NVIDIA. Questa guida ti fornirà passaggi semplici da seguire per il processo di conversione e ti aiuterà a sfruttare al meglio la tecnologia avanzata di NVIDIA nei tuoi progetti di deep learning.
Link to this sectionTensorRT#
TensorRT, sviluppato da NVIDIA, è un software development kit (SDK) avanzato progettato per l'inferenza di deep learning ad alta velocità. È particolarmente adatto per applicazioni in tempo reale come il rilevamento di oggetti.
Questo toolkit ottimizza i modelli di deep learning per GPU NVIDIA e produce operazioni più veloci ed efficienti. I modelli TensorRT vengono sottoposti a ottimizzazione TensorRT, che include tecniche come la fusione dei layer, la calibrazione della precisione (INT8 e FP16), la gestione dinamica della memoria dei tensori e l'auto-tuning del kernel. Convertire i modelli di deep learning nel formato TensorRT permette agli sviluppatori di realizzare appieno il potenziale delle GPU NVIDIA.
TensorRT è noto per la sua compatibilità con vari formati di modelli, inclusi TensorFlow, PyTorch e ONNX, fornendo agli sviluppatori una soluzione flessibile per integrare e ottimizzare modelli provenienti da diversi framework. Questa versatilità consente una distribuzione del modello efficiente in diversi ambienti hardware e software.
Link to this sectionCaratteristiche principali dei modelli TensorRT#
I modelli TensorRT offrono una gamma di funzionalità chiave che contribuiscono alla loro efficienza ed efficacia nell'inferenza di deep learning ad alta velocità:
-
Precision Calibration: TensorRT supporta la calibrazione della precisione, consentendo ai modelli di essere ottimizzati per requisiti di accuratezza specifici. Ciò include il supporto per formati a precisione ridotta come INT8 e FP16, che possono aumentare ulteriormente la velocità di inferenza mantenendo livelli di accuratezza accettabili.
-
Layer Fusion: Il processo di ottimizzazione TensorRT include la fusione dei layer, in cui più layer di una rete neurale vengono combinati in un'unica operazione. Ciò riduce l'overhead computazionale e migliora la velocità di inferenza riducendo al minimo l'accesso alla memoria e il calcolo.
-
Dynamic Tensor Memory Management: TensorRT gestisce in modo efficiente l'utilizzo della memoria dei tensori durante l'inferenza, riducendo l'overhead di memoria e ottimizzando l'allocazione della stessa. Ciò si traduce in un utilizzo più efficiente della memoria GPU.
-
Automatic Kernel Tuning: TensorRT applica l'auto-tuning del kernel per selezionare il kernel GPU più ottimizzato per ogni layer del modello. Questo approccio adattivo garantisce che il modello sfrutti appieno la potenza computazionale della GPU.
Link to this sectionOpzioni di distribuzione in TensorRT#
Prima di esaminare il codice per esportare i modelli YOLO26 nel formato TensorRT, capiamo dove vengono solitamente utilizzati i modelli TensorRT.
TensorRT offre diverse opzioni di distribuzione, ognuna delle quali bilancia diversamente facilità di integrazione, ottimizzazione delle prestazioni e flessibilità:
- Distribuzione all'interno di TensorFlow: Questo metodo integra TensorRT in TensorFlow, permettendo ai modelli ottimizzati di girare in un ambiente TensorFlow familiare. È utile per modelli con un mix di layer supportati e non, poiché TF-TRT può gestirli in modo efficiente.
-
Standalone TensorRT Runtime API: Offre un controllo granulare, ideale per applicazioni dove le prestazioni sono critiche. È più complesso ma consente un'implementazione personalizzata degli operatori non supportati.
-
NVIDIA Triton Inference Server: Un'opzione che supporta modelli da vari framework. Particolarmente adatto per l'inferenza su cloud o edge, fornisce funzionalità come l'esecuzione simultanea dei modelli e l'analisi dei modelli.
Link to this sectionEsportazione di modelli YOLO26 in TensorRT#
Puoi migliorare l'efficienza di esecuzione e ottimizzare le prestazioni convertendo i modelli YOLO26 nel formato TensorRT.
Link to this sectionInstallazione#
Per installare il pacchetto richiesto, esegui:
# Install the required package for YOLO26
pip install ultralyticsPer istruzioni dettagliate e best practice relative al processo di installazione, consulta la nostra guida all'installazione YOLO26. Durante l'installazione dei pacchetti necessari per YOLO26, se riscontri difficoltà, consulta la nostra guida ai problemi comuni per soluzioni e suggerimenti.
Link to this sectionUtilizzo#
Prima di immergerti nelle istruzioni per l'uso, assicurati di dare un'occhiata alla gamma di modelli YOLO26 offerti da Ultralytics. Questo ti aiuterà a scegliere il modello più appropriato per i requisiti del tuo progetto.
Il formato TensorRT supporta le modalità Export, Predict e Validate. L'inferenza e la convalida richiedono una GPU NVIDIA. Esporta il tuo modello, quindi carica il modello esportato per eseguire l'inferenza o convalidarne l'accuratezza.
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")Link to this sectionArgomenti di esportazione#
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
format | str | 'engine' | Formato di destinazione per il modello esportato, che definisce la compatibilità con vari ambienti di distribuzione. |
imgsz | int o tuple | 640 | Dimensione dell'immagine desiderata per l'input del modello. Può essere un numero intero per immagini quadrate o una tupla (height, width) per dimensioni specifiche. |
half | bool | False | Abilita la quantizzazione FP16 (mezza precisione), riducendo la dimensione del modello e potenzialmente accelerando l'inferenza sull'hardware supportato. |
int8 | bool | False | Attiva la quantizzazione INT8, comprimendo ulteriormente il modello e velocizzando l'inferenza con una perdita minima di precisione, principalmente per dispositivi edge. |
dynamic | bool | False | Consente dimensioni di input dinamiche, migliorando la flessibilità nella gestione di dimensioni variabili delle immagini. |
simplify | bool | True | Semplifica il grafo del modello con onnxslim, migliorando potenzialmente le prestazioni e la compatibilità. |
workspace | float o None | None | Imposta la dimensione massima dell'area di lavoro in GiB per le ottimizzazioni TensorRT, bilanciando l'utilizzo della memoria e le prestazioni; usa None per l'auto-allocazione da parte di TensorRT fino al massimo del dispositivo. |
nms | bool | False | Aggiunge la Non-Maximum Suppression (NMS), essenziale per un post-processing del rilevamento accurato ed efficiente. |
batch | int | 1 | Specifica la dimensione dell'inferenza batch del modello esportato o il numero massimo di immagini che il modello esportato elaborerà simultaneamente in modalità predict. |
data | str | 'coco8.yaml' | Percorso al file di configurazione del dataset (default: coco8.yaml), essenziale per la quantizzazione. |
fraction | float | 1.0 | Specifica la frazione del dataset da utilizzare per la calibrazione della quantizzazione INT8. Consente la calibrazione su un sottoinsieme del dataset completo, utile per esperimenti o quando le risorse sono limitate. Se non specificato con INT8 abilitato, verrà utilizzato l'intero dataset. |
device | str | None | Specifica il dispositivo per l'esportazione: GPU (device=0), DLA per NVIDIA Jetson (device=dla:0 o device=dla:1). |
Assicurati di utilizzare una GPU con supporto CUDA durante l'esportazione in TensorRT.
TensorRT 11.0 non supporta DLA; usa TensorRT 10.x per device=dla:0 o device=dla:1, oppure esporta un engine GPU per TensorRT 11.0.
Per ulteriori dettagli sul processo di esportazione, visita la pagina della documentazione di Ultralytics sull'esportazione.
Link to this sectionEsportazione TensorRT con quantizzazione INT8#
L'esportazione dei modelli Ultralytics YOLO tramite TensorRT con precisione INT8 esegue la quantizzazione post-addestramento (PTQ). TensorRT utilizza la calibrazione per il PTQ, che misura la distribuzione delle attivazioni all'interno di ogni tensore di attivazione mentre il modello YOLO elabora l'inferenza su dati di input rappresentativi, e quindi utilizza quella distribuzione per stimare i valori di scala per ogni tensore. Ogni tensore di attivazione candidato alla quantizzazione ha una scala associata dedotta da un processo di calibrazione.
TensorRT 11 ha rimosso la quantizzazione implicita e l'interfaccia IInt8Calibrator. Su TensorRT 11 e versioni successive, Ultralytics esegue la quantizzazione INT8 con la quantizzazione esplicita di NVIDIA ModelOpt, che inserisce i nodi Q/DQ nel grafo ONNX prima di costruire un motore fortemente tipizzato, e l'FP16 viene applicato con la conversione a precisione mista AutoCast di ModelOpt. Gli argomenti int8=True, half=True e data funzionano allo stesso modo; ModelOpt viene installato automaticamente al primo utilizzo. Su TensorRT 7-10 viene invece utilizzato il calibratore legacy descritto di seguito.
Durante l'elaborazione di reti quantizzate implicitamente, TensorRT utilizza INT8 in modo opportunistico per ottimizzare il tempo di esecuzione dei layer. Se un layer viene eseguito più velocemente in INT8 e ha scale di quantizzazione assegnate sui suoi input e output di dati, allora viene assegnato a quel layer un kernel con precisione INT8, altrimenti TensorRT seleziona una precisione FP32 o FP16 per il kernel in base a ciò che risulta in un tempo di esecuzione più rapido per quel layer.
È critico assicurarsi che lo stesso dispositivo che utilizzerà i pesi del modello TensorRT per la distribuzione venga utilizzato per l'esportazione con precisione INT8, poiché i risultati della calibrazione possono variare tra i dispositivi.
Link to this sectionConfigurazione dell'esportazione INT8#
Gli argomenti forniti durante l'utilizzo di export per un modello Ultralytics YOLO influenzeranno notevolmente le prestazioni del modello esportato. Dovranno anche essere selezionati in base alle risorse del dispositivo disponibili, tuttavia gli argomenti predefiniti dovrebbero funzionare per la maggior parte delle GPU discrete NVIDIA Ampere (o successive). L'algoritmo di calibrazione utilizzato è "MINMAX_CALIBRATION" per le esportazioni su GPU, mentre le esportazioni DLA su NVIDIA Jetson utilizzano "ENTROPY_CALIBRATION_2". Puoi leggere ulteriori dettagli sulle opzioni disponibili nella Guida per gli sviluppatori di TensorRT. I test di Ultralytics hanno riscontrato che "MINMAX_CALIBRATION" è la scelta migliore per le esportazioni su GPU e l'algoritmo viene selezionato automaticamente in base al dispositivo di esportazione.
-
workspace: Controlla la dimensione (in GiB) dell'allocazione di memoria del dispositivo durante la conversione dei pesi del modello.-
Regola il valore di
workspacein base alle tue esigenze di calibrazione e alla disponibilità di risorse. Sebbene unworkspacepiù ampio possa aumentare il tempo di calibrazione, consente a TensorRT di esplorare una gamma più ampia di tattiche di ottimizzazione, migliorando potenzialmente le prestazioni e l'accuratezza del modello. Al contrario, unworkspacepiù piccolo può ridurre il tempo di calibrazione ma potrebbe limitare le strategie di ottimizzazione, influenzando la qualità del modello quantizzato. -
L'impostazione predefinita è
workspace=None, che consentirà a TensorRT di allocare automaticamente la memoria; durante la configurazione manuale, questo valore potrebbe dover essere aumentato se la calibrazione si arresta in modo anomalo (esce senza preavviso). -
TensorRT segnalerà
UNSUPPORTED_STATEdurante l'esportazione se il valore perworkspaceè maggiore della memoria disponibile per il dispositivo, il che significa che il valore perworkspacedovrebbe essere ridotto o impostato suNone. -
Se
workspaceè impostato sul valore massimo e la calibrazione fallisce o si blocca, considera l'utilizzo diNoneper l'allocazione automatica o riduci i valori diimgszebatchper ridurre i requisiti di memoria. -
Ricorda: la calibrazione per INT8 è specifica per ogni dispositivo; prendere in prestito una GPU "di fascia alta" per la calibrazione potrebbe comportare scarse prestazioni quando l'inferenza viene eseguita su un altro dispositivo.
-
-
batch: La dimensione massima del batch che verrà utilizzata per l'inferenza. Durante l'inferenza possono essere utilizzati batch più piccoli, ma l'inferenza non accetterà batch più grandi di quanto specificato.
L'utilizzo di batch piccoli può portare a un ridimensionamento impreciso durante la calibrazione INT8. Questo perché il processo si adatta in base ai dati che vede. I batch piccoli potrebbero non catturare l'intera gamma di valori, portando a problemi con la calibrazione finale. L'utilizzo di una dimensione del batch più ampia aiuta a garantire risultati di calibrazione più rappresentativi.
La sperimentazione da parte di NVIDIA li ha portati a consigliare l'utilizzo di almeno 500 immagini di calibrazione che siano rappresentative dei dati per il tuo modello, con la calibrazione della quantizzazione INT8. Questa è una linea guida e non un requisito rigido, e dovrai sperimentare cosa è necessario per ottenere buoni risultati per il tuo dataset. Poiché i dati di calibrazione sono necessari per la calibrazione INT8 con TensorRT, assicurati di utilizzare l'argomento data quando int8=True per TensorRT e utilizza data="my_dataset.yaml", che utilizzerà le immagini dalla convalida per calibrare. Quando non viene passato alcun valore per data con l'esportazione in TensorRT con quantizzazione INT8, l'impostazione predefinita sarà quella di utilizzare uno dei dataset di esempio "piccoli" basati sul task del modello invece di generare un errore.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(
format="engine",
dynamic=True, # (1)!
batch=8, # (2)!
workspace=4, # (3)!
int8=True,
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")- Esporta con assi dinamici; questo sarà abilitato per impostazione predefinita durante l'esportazione con
int8=Trueanche se non impostato esplicitamente. Vedi argomenti di esportazione per ulteriori informazioni. - Imposta la dimensione massima del batch a 8 per il modello esportato e la calibrazione INT8.
- Alloca 4 GiB di memoria invece di allocare l'intero dispositivo per il processo di conversione.
- Utilizza il dataset COCO per la calibrazione, nello specifico le immagini utilizzate per la convalida (5.000 in totale).
Cache di calibrazione
TensorRT genererà una .cache di calibrazione che può essere riutilizzata per velocizzare l'esportazione di futuri pesi del modello utilizzando gli stessi dati, ma ciò potrebbe comportare una calibrazione scadente quando i dati sono molto diversi o se il valore di batch viene modificato drasticamente. In queste circostanze, la .cache esistente dovrebbe essere rinominata e spostata in una directory diversa o eliminata completamente.
Link to this sectionVantaggi dell'utilizzo di YOLO con TensorRT INT8#
-
Dimensione del modello ridotta: La quantizzazione da FP32 a INT8 può ridurre la dimensione del modello di 4 volte (su disco o in memoria), portando a tempi di download più rapidi, requisiti di archiviazione inferiori e un ingombro di memoria ridotto durante la distribuzione di un modello.
-
Minore consumo energetico: Le operazioni a precisione ridotta per i modelli YOLO esportati in INT8 possono consumare meno energia rispetto ai modelli FP32, specialmente per i dispositivi alimentati a batteria.
-
Velocità di inferenza migliorate: TensorRT ottimizza il modello per l'hardware di destinazione, portando potenzialmente a velocità di inferenza più elevate su GPU, dispositivi embedded e acceleratori.
Nota sulle velocità di inferenza
Le prime chiamate di inferenza con un modello esportato in TensorRT INT8 possono avere tempi di pre-elaborazione, inferenza e/o post-elaborazione più lunghi del solito. Questo può verificarsi anche quando si modifica imgsz durante l'inferenza, specialmente quando imgsz non è uguale a quello specificato durante l'esportazione (l'esportazione imgsz è impostata come profilo "ottimale" di TensorRT).
Link to this sectionSvantaggi dell'utilizzo di YOLO con TensorRT INT8#
-
Diminuzioni nelle metriche di valutazione: L'utilizzo di una precisione inferiore significherà che
mAP,Precision,Recallo qualsiasi altra metrica utilizzata per valutare le prestazioni del modello sarà probabilmente leggermente peggiore. Vedi la sezione Risultati delle prestazioni per confrontare le differenze inmAP50emAP50-95durante l'esportazione con INT8 su un piccolo campione di vari dispositivi. -
Tempi di sviluppo aumentati: Trovare le impostazioni "ottimali" per la calibrazione INT8 per il dataset e il dispositivo può richiedere una notevole quantità di test.
-
Dipendenza dall'hardware: La calibrazione e i guadagni di prestazioni potrebbero essere fortemente dipendenti dall'hardware e i pesi del modello sono meno trasferibili.
Link to this sectionPrestazioni di esportazione Ultralytics YOLO TensorRT#
Link to this sectionNVIDIA A100#
Testato con Ubuntu 22.04.3 LTS, python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1
Vedi Documentazione Rilevamento per esempi di utilizzo con questi modelli addestrati su COCO, che includono 80 classi pre-addestrate.
Tempi di inferenza mostrati per mean, min (più veloce) e max (più lento) per ogni test utilizzando pesi pre-addestrati yolov8n.engine
| Precision | Test di valutazione | media (ms) | min | max (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | dimensione (pixel) |
|---|---|---|---|---|---|---|---|
| FP32 | Previsione | 0.52 | 0.51 | 0.56 | 8 | 640 | ||
| FP32 | COCOval | 0.52 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Previsione | 0.34 | 0.34 | 0.41 | 8 | 640 | ||
| FP16 | COCOval | 0.33 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Previsione | 0.28 | 0.27 | 0.31 | 8 | 640 | ||
| INT8 | COCOval | 0.29 | 0.47 | 0.33 | 1 | 640 |
Link to this sectionGPU consumer#
Testato con Windows 10.0.19045, python 3.10.9, ultralytics==8.2.4, tensorrt==10.0.0b6
Tempi di inferenza mostrati per mean, min (più veloce) e max (più lento) per ogni test utilizzando pesi pre-addestrati yolov8n.engine
| Precision | Test di valutazione | media (ms) | min | max (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | dimensione (pixel) |
|---|---|---|---|---|---|---|---|
| FP32 | Previsione | 1.06 | 0.75 | 1.88 | 8 | 640 | ||
| FP32 | COCOval | 1.37 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Previsione | 0.62 | 0.75 | 1.13 | 8 | 640 | ||
| FP16 | COCOval | 0.85 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Previsione | 0.52 | 0.38 | 1.00 | 8 | 640 | ||
| INT8 | COCOval | 0.74 | 0.47 | 0.33 | 1 | 640 |
Link to this sectionDispositivi embedded#
Testato con JetPack 6.0 (L4T 36.3) Ubuntu 22.04.4 LTS, python 3.10.12, ultralytics==8.2.16, tensorrt==10.0.1
Tempi di inferenza mostrati per mean, min (più veloce) e max (più lento) per ogni test utilizzando pesi pre-addestrati yolov8n.engine
| Precision | Test di valutazione | media (ms) | min | max (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | dimensione (pixel) |
|---|---|---|---|---|---|---|---|
| FP32 | Previsione | 6.11 | 6.10 | 6.29 | 8 | 640 | ||
| FP32 | COCOval | 6.17 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Previsione | 3.18 | 3.18 | 3.20 | 8 | 640 | ||
| FP16 | COCOval | 3.19 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Previsione | 2.30 | 2.29 | 2.35 | 8 | 640 | ||
| INT8 | COCOval | 2.32 | 0.46 | 0.32 | 1 | 640 |
Vedi la nostra guida rapida su NVIDIA Jetson con Ultralytics YOLO per saperne di più sull'installazione e la configurazione.
Vedi la nostra guida rapida su NVIDIA DGX Spark con Ultralytics YOLO per saperne di più sull'installazione e la configurazione.
Link to this sectionMetodi di valutazione#
Espandi le sezioni qui sotto per informazioni su come questi modelli sono stati esportati e testati.
Configurazioni di esportazione
Vedi la modalità di esportazione per i dettagli relativi agli argomenti di configurazione dell'esportazione.
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, half=True)
# 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, int8=True, data="coco8.yaml"
)Ciclo di previsione
Vedi la modalità di previsione per ulteriori informazioni.
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",
)Configurazione di validazione
Vedi la modalità val per saperne di più sugli argomenti di configurazione della validazione.
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",
)Link to this sectionDistribuzione dei modelli YOLO26 TensorRT esportati#
Dopo aver esportato con successo i tuoi modelli Ultralytics YOLO26 nel formato TensorRT, sei pronto per distribuirli. Per istruzioni approfondite sulla distribuzione dei tuoi modelli TensorRT in vari contesti, dai un'occhiata alle seguenti risorse:
-
Distribuisci Ultralytics con un server Triton: La nostra guida su come utilizzare il server NVIDIA Triton Inference (precedentemente TensorRT Inference Server) specificamente per l'uso con i modelli Ultralytics YOLO.
-
Distribuzione di reti neurali profonde con NVIDIA TensorRT: Questo articolo spiega come utilizzare NVIDIA TensorRT per distribuire in modo efficiente reti neurali profonde su piattaforme basate su GPU.
-
AI end-to-end per PC basati su NVIDIA: distribuzione NVIDIA TensorRT: Questo post del blog spiega l'uso di NVIDIA TensorRT per ottimizzare e distribuire modelli di IA su PC basati su NVIDIA.
-
Repository GitHub per NVIDIA TensorRT:: Questo è il repository GitHub ufficiale che contiene il codice sorgente e la documentazione per NVIDIA TensorRT.
Link to this sectionRiepilogo#
In questa guida, ci siamo concentrati sulla conversione dei modelli Ultralytics YOLO26 nel formato di modello TensorRT di NVIDIA. Questo passaggio di conversione è fondamentale per migliorare l'efficienza e la velocità dei modelli YOLO26, rendendoli più efficaci e adatti a diversi ambienti di distribuzione.
Per ulteriori informazioni sui dettagli di utilizzo, dai un'occhiata alla documentazione ufficiale di TensorRT.
Se sei curioso di conoscere ulteriori integrazioni di Ultralytics YOLO26, la nostra pagina delle guide all'integrazione offre un'ampia selezione di risorse informative e approfondimenti.
Link to this sectionFAQ#
Link to this sectionCome converto i modelli YOLO26 nel formato TensorRT?#
Per convertire i tuoi modelli Ultralytics YOLO26 nel formato TensorRT per un'inferenza ottimizzata su GPU NVIDIA, segui questi passaggi:
-
Installa il pacchetto richiesto:
pip install ultralytics -
Esporta il tuo modello YOLO26:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="engine") # creates 'yolo26n.engine' # Run inference model = YOLO("yolo26n.engine") results = model("https://ultralytics.com/images/bus.jpg")
Per maggiori dettagli, visita la guida all'installazione di YOLO26 e la documentazione sull'esportazione.
Link to this sectionQuali sono i vantaggi dell'utilizzo di TensorRT per i modelli YOLO26?#
L'utilizzo di TensorRT per ottimizzare i modelli YOLO26 offre diversi vantaggi:
- Maggiore velocità di inferenza: TensorRT ottimizza i layer del modello e utilizza la calibrazione della precisione (INT8 e FP16) per velocizzare l'inferenza senza sacrificare significativamente l'accuratezza.
- Efficienza della memoria: TensorRT gestisce la memoria dei tensori in modo dinamico, riducendo l'overhead e migliorando l'utilizzo della memoria della GPU.
- Layer Fusion: Combina più layer in singole operazioni, riducendo la complessità computazionale.
- Kernel Auto-Tuning: Seleziona automaticamente i kernel GPU ottimizzati per ogni layer del modello, garantendo le massime prestazioni.
Per saperne di più, esplora la documentazione ufficiale di TensorRT di NVIDIA e la nostra panoramica approfondita su TensorRT.
Link to this sectionPosso utilizzare la quantizzazione INT8 con TensorRT per i modelli YOLO26?#
Sì, puoi esportare i modelli YOLO26 utilizzando TensorRT con la quantizzazione INT8. Questo processo prevede la quantizzazione post-addestramento (PTQ) e la calibrazione:
-
Esporta con INT8:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="engine", batch=8, workspace=4, int8=True, data="coco.yaml") -
Esegui l'inferenza:
from ultralytics import YOLO model = YOLO("yolo26n.engine", task="detect") result = model.predict("https://ultralytics.com/images/bus.jpg")
Per maggiori dettagli, consulta la sezione sull'esportazione di TensorRT con quantizzazione INT8.
Link to this sectionCome posso distribuire i modelli YOLO26 TensorRT su un server NVIDIA Triton Inference Server?#
La distribuzione dei modelli YOLO26 TensorRT su un server NVIDIA Triton Inference Server può essere effettuata utilizzando le seguenti risorse:
- Distribuisci Ultralytics YOLO26 con Triton Server: Guida passo-passo su come configurare e utilizzare Triton Inference Server.
- Distribuzione di reti neurali profonde con NVIDIA TensorRT: Guida di NVIDIA sulla distribuzione di modelli di deep learning con TensorRT per opzioni e configurazioni di distribuzione dettagliate.
Queste guide ti aiuteranno a integrare i modelli YOLO26 in modo efficiente in diversi ambienti di distribuzione.
Link to this sectionQuali sono i miglioramenti delle prestazioni osservati con i modelli YOLO26 esportati in TensorRT?#
I miglioramenti delle prestazioni con TensorRT possono variare in base all'hardware utilizzato. Ecco alcuni benchmark tipici:
-
NVIDIA A100:
- Inferenza FP32: ~0,52 ms / immagine
- Inferenza FP16: ~0,34 ms / immagine
- Inferenza INT8: ~0,28 ms / immagine
- Leggera riduzione dell'mAP con precisione INT8, ma miglioramento significativo della velocità.
-
GPU consumer (es. RTX 3080):
- Inferenza FP32: ~1,06 ms / immagine
- Inferenza FP16: ~0,62 ms / immagine
- Inferenza INT8: ~0,52 ms / immagine
Benchmark dettagliati delle prestazioni per diverse configurazioni hardware sono disponibili nella sezione sulle prestazioni.
Per approfondimenti più completi sulle prestazioni di TensorRT, consulta la documentazione di Ultralytics e i nostri report di analisi delle prestazioni.