Esportazione TensorRT per modelli YOLO26#
La distribuzione di modelli di computer vision in ambienti ad alte prestazioni può richiedere un formato che massimizzi velocità ed efficienza. Questo vale in particolare quando distribuisci il tuo modello su GPU NVIDIA.
Utilizzando il formato di esportazione TensorRT, puoi ottimizzare i tuoi modelli Ultralytics YOLO26 per un'inferenza rapida ed efficiente su hardware NVIDIA. Questa guida ti offre passaggi semplici da seguire per il processo di conversione e ti aiuta a sfruttare al massimo la tecnologia avanzata di NVIDIA nei tuoi progetti di deep learning.
TensorRT#
TensorRT, sviluppato da NVIDIA, è un kit di sviluppo software (SDK) avanzato progettato per l'inferenza di deep learning ad alta velocità. È ideale 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, tra cui TensorFlow, PyTorch e ONNX, offrendo 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.
TensorRT profila e regola un motore sulla sua GPU di compilazione. Esegui la compilazione per l'architettura GPU di destinazione e allinea il runtime TensorRT/CUDA; non considerare un file .engine come un formato di modello portabile. Per la distribuzione edge, Ultralytics Platform offre otto selezioni di destinazione Jetson, con stato di compilazione fisica e convalida documentato per ciascuna, oppure puoi esportare localmente sul dispositivo di destinazione.
Caratteristiche 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.
-
Fusione dei livelli: Il processo di ottimizzazione di TensorRT include la fusione dei livelli, in cui più livelli di una rete neurale vengono combinati in un'unica operazione. Ciò riduce il sovraccarico di calcolo 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.
Opzioni 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, consentendo ai modelli ottimizzati di essere eseguiti in un ambiente TensorFlow familiare. È utile per i modelli con un mix di livelli supportati e non supportati, 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.
Attività supportate#
L'esportazione in TensorRT supporta tutti e sette i task di Ultralytics. La segmentazione semantica e la stima della profondità sono disponibili solo con YOLO26, l'unica famiglia che include tali teste.
Esportazione di modelli YOLO26 in TensorRT#
Puoi migliorare l'efficienza di esecuzione e ottimizzare le prestazioni convertendo i modelli YOLO26 nel formato TensorRT.
Installazione#
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 di YOLO26. Durante l'installazione dei pacchetti richiesti per YOLO26, se riscontri difficoltà, consulta la nostra guida ai problemi comuni per soluzioni e suggerimenti.
Utilizzo#
Prima di immergiti nelle istruzioni d'uso, assicurati di dare un'occhiata alla gamma di modelli YOLO26 offerti da Ultralytics. Questo ti aiuterà a scegliere il modello più adatto ai 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 validarne la precisione.
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")Argomenti 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. |
quantize | int o str | None | Precisione di quantizzazione: 16 (FP16) o 8 (INT8/PTQ; richiede calibrazione data/fraction); 32/non impostato è FP32. Sostituisce i flag deprecati half/int8. |
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à. |
opset | int | None | Specifica la versione dell'opset ONNX per il grafo ONNX intermedio. Se non impostata, utilizza l'ultima versione supportata. |
workspace | float o None | None | Imposta la dimensione massima dello spazio di lavoro in GiB per le ottimizzazioni di TensorRT, bilanciando l'utilizzo della memoria e le prestazioni; usa None per l'allocazione automatica 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 in batch del modello esportato o il numero massimo di immagini che il modello esportato elaborerà contemporaneamente in modalità predict. |
data | str | None | Percorso del file YAML del dataset, essenziale per la quantizzazione; la classificazione richiede invece una cartella di dataset o il nome di un dataset integrato. Se omesso con quantize=8, Ultralytics seleziona il dataset di calibrazione predefinito per il task del modello. |
fraction | float, int o list | 1.0 | Sottoinsieme di calibrazione come rapporto, conteggio di immagini o rapporti/conteggi [train, val, test]. Gli elenchi a due elementi lasciano test pieno, mentre 0 lo salta. |
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 motore GPU TensorRT 11.0.
Per ulteriori dettagli sul processo di esportazione, visita la pagina della documentazione di Ultralytics sull'esportazione.
Esportazione TensorRT con quantizzazione INT8#
L'esportazione di 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 ciascun tensore di attivazione mentre il modello YOLO elabora l'inferenza su dati di input rappresentativi, e quindi utilizza tale distribuzione per stimare i valori di scala per ciascun tensore. Ciascun 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 NVIDIA ModelOpt, che inserisce nodi Q/DQ nel grafico ONNX prima di costruire un motore fortemente tipizzato, e FP16 viene applicato con la conversione a precisione mista ModelOpt AutoCast. Gli argomenti quantize=8, quantize=16 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.
Configurazione dell'esportazione INT8#
Gli argomenti forniti quando si utilizza export per un modello Ultralytics YOLO influiranno notevolmente sulle prestazioni del modello esportato. Sarà inoltre necessario sceglierli 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 maggiori 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 della memoria del dispositivo durante la conversione dei pesi del modello.-
Regola il valore di
workspacein base alle tue esigenze di calibrazione e alla disponibilità delle risorse. Sebbene unworkspacepiù grande possa aumentare il tempo di calibrazione, consente a TensorRT di esplorare una gamma più ampia di tattiche di ottimizzazione, migliorando potenzialmente le prestazioni e la precisione del modello. Al contrario, unworkspacepiù piccolo può ridurre il tempo di calibrazione ma può limitare le strategie di ottimizzazione, influenzando la qualità del modello quantizzato. -
Il valore predefinito è
workspace=None, che consentirà a TensorRT di allocare automaticamente la memoria; se configurato manualmente, questo valore potrebbe dover essere aumentato in caso di arresto anomalo della calibrazione (uscita senza preavviso). -
TensorRT segnalerà
UNSUPPORTED_STATEdurante l'esportazione se il valore perworkspaceè superiore alla memoria disponibile per il dispositivo, il che significa che il valore perworkspacedeve essere ridotto o impostato suNone. -
Se
workspaceè impostato sul valore massimo e la calibrazione fallisce o si arresta in modo anomalo, considera di utilizzareNoneper l'allocazione automatica o di ridurre i valori perimgszebatchper 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 è possibile utilizzare 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 regola in base ai dati che osserva. 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 maggiore aiuta a garantire risultati di calibrazione più rappresentativi.
La sperimentazione condotta da NVIDIA li ha portati a consigliare l'utilizzo di almeno 500 immagini di calibrazione rappresentative dei dati per il proprio modello, con la calibrazione della quantizzazione INT8. Questa è una linea guida e non un requisito rigido, e dovrai sperimentare ciò che è necessario per ottenere buone prestazioni per il tuo set di dati. Poiché i dati di calibrazione sono necessari per la calibrazione INT8 con TensorRT, assicurati di utilizzare l'argomento data quando quantize=8 per TensorRT e utilizza data="my_dataset.yaml", che utilizzerà le immagini della convalida per la calibrazione. Quando non viene passato alcun valore per data con l'esportazione su TensorRT con quantizzazione INT8, l'impostazione predefinita sarà quella di utilizzare uno dei set di dati di esempio "piccoli" basati sul task del modello anziché generare un errore.
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")- Esportazioni con assi dinamici; questa opzione sarà abilitata per impostazione predefinita durante l'esportazione con
quantize=8anche se non impostata esplicitamente. Vedi gli 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 set di dati COCO per la calibrazione, nello specifico le immagini utilizzate per la convalida (5.000 in totale).
Cache di calibrazione
TensorRT genererà un .cache di calibrazione che può essere riutilizzato per accelerare l'esportazione di futuri pesi del modello utilizzando gli stessi dati, ma ciò potrebbe comportare una scarsa calibrazione quando i dati sono notevolmente diversi o se il valore batch viene modificato drasticamente. In queste circostanze, il .cache esistente deve essere rinominato e spostato in un'altra directory o eliminato completamente.
Vantaggi 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 presentare tempi di pre-elaborazione, inferenza e/o post-elaborazione superiori al normale. Ciò può verificarsi anche quando si modifica imgsz durante l'inferenza, in particolare quando imgsz non corrisponde a quanto specificato durante l'esportazione (il imgsz di esportazione è impostato come profilo "ottimale" di TensorRT).
Svantaggi dell'utilizzo di YOLO con TensorRT INT8#
-
Diminuzione delle metriche di valutazione: L'utilizzo di una precisione inferiore comporterà probabilmente un peggioramento di
mAP,Precision,Recallo di qualsiasi altra metrica utilizzata per valutare le prestazioni del modello. I livelli Sigmoid vengono mantenuti a una precisione superiore per preservare la calibrazione dei punteggi, ma l'INT8 può comunque spostare i valori di confidenza, quindi seleziona la soglia operativa dalla curva F1 del modello INT8 stesso. Consulta 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.
Prestazioni di esportazione Ultralytics YOLO TensorRT#
NVIDIA A100#
Testato con Ubuntu 22.04.3 LTS, python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1
Vedi la Documentazione sul rilevamento per esempi d'uso con questi modelli addestrati su COCO, che includono 80 classi preaddestrate.
Tempi di inferenza mostrati per mean, min (più veloce) e max (più lento) per ciascun test utilizzando i pesi preaddestrati 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 |
GPU 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 ciascun test utilizzando i pesi preaddestrati 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 |
Dispositivi 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 ciascun test utilizzando i pesi preaddestrati 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 |
Consulta la nostra guida di avvio rapido su NVIDIA Jetson con Ultralytics YOLO per saperne di più sull'installazione e sulla configurazione.
Consulta la nostra guida di avvio rapido su NVIDIA DGX Spark con Ultralytics YOLO per saperne di più sull'installazione e sulla configurazione.
Metodi di valutazione#
Espandi le sezioni qui sotto per informazioni su come questi modelli sono stati esportati e testati.
Configurazioni di esportazione
Consulta la modalità di esportazione per i dettagli sugli 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, 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"
)Ciclo di previsione
Vedi la modalità di predizione 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 convalida.
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",
)Distribuzione 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 Triton Server: La nostra guida su come utilizzare il server Triton Inference di NVIDIA (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 di distribuzione basate su GPU.
-
Intelligenza artificiale end-to-end per PC basati su NVIDIA: Distribuzione con NVIDIA TensorRT: Questo post del blog spiega l'uso di NVIDIA TensorRT per l'ottimizzazione e la distribuzione di 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.
Riepilogo#
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 altre integrazioni di Ultralytics YOLO26, la nostra pagina della guida all'integrazione offre un'ampia selezione di risorse informative e approfondimenti.
FAQ#
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.
-
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.
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, quantize=8, 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, fai riferimento alla sezione sull'esportazione di TensorRT con quantizzazione INT8.
-
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 sulla configurazione e sull'utilizzo di Triton Inference Server.
- Distribuzione di reti neurali profonde con NVIDIA TensorRT: La 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.
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 delle prestazioni.
Per approfondimenti più dettagliati sulle prestazioni di TensorRT, fai riferimento alla documentazione di Ultralytics e ai nostri rapporti di analisi delle prestazioni.
-