Esportazione TensorRT per modelli YOLO26
Distribuire modelli di visione artificiale 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 ottimizzare 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 l'avanzata tecnologia 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à. È particolarmente adatto per applicazioni in tempo reale come il rilevamento oggetti.
Questo toolkit ottimizza i modelli di deep learning per le GPU NVIDIA e porta a operazioni più rapide ed efficienti. I modelli TensorRT vengono sottoposti all'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 sfruttare appieno il potenziale delle GPU NVIDIA.
TensorRT è noto per la sua compatibilità con vari formati di modelli, inclusi TensorFlow, PyTorch e ONNX, offrendo agli sviluppatori una soluzione flessibile per integrare e ottimizzare modelli da framework diversi. Questa versatilità abilita un'efficiente distribuzione dei modelli attraverso diversi ambienti hardware e software.
Caratteristiche principali dei modelli TensorRT
I modelli TensorRT offrono una serie di caratteristiche chiave che contribuiscono alla loro efficienza ed efficacia nell'inferenza di deep learning ad alta velocità:
-
Calibrazione della precisione: TensorRT supporta la calibrazione della precisione, permettendo ai modelli di essere ottimizzati per specifici requisiti di accuratezza. Ciò include il supporto per formati a precisione ridotta come INT8 e FP16, che possono ulteriormente incrementare la velocità di inferenza mantenendo livelli di accuratezza accettabili.
-
Fusione dei layer: Il processo di ottimizzazione di TensorRT include la fusione dei layer, in cui più livelli di una rete neurale vengono combinati in un'unica operazione. Questo riduce il sovraccarico computazionale e migliora la velocità di inferenza minimizzando l'accesso alla memoria e il calcolo.
-
Gestione dinamica della memoria dei tensori: TensorRT gestisce in modo efficiente l'utilizzo della memoria dei tensori durante l'inferenza, riducendo il sovraccarico di memoria e ottimizzando l'allocazione. Ciò si traduce in un utilizzo più efficiente della memoria GPU.
-
Auto-tuning del kernel: TensorRT applica l'auto-tuning del kernel per selezionare il kernel GPU più ottimizzato per ogni layer del modello. Questo approccio adattivo assicura 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 normalmente utilizzati i modelli TensorRT.
TensorRT offre diverse opzioni di distribuzione, ognuna delle quali bilancia in modo diverso 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.
-
Runtime API TensorRT standalone: Offre un controllo granulare, ideale per applicazioni critiche per le prestazioni. È più complesso ma permette l'implementazione personalizzata di operatori non supportati.
-
NVIDIA Triton Inference Server: Un'opzione che supporta modelli da vari framework. Particolarmente adatta per l'inferenza cloud o edge, fornisce funzionalità come l'esecuzione simultanea dei modelli e l'analisi dei modelli.
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. Se riscontri difficoltà durante l'installazione dei pacchetti richiesti per YOLO26, consulta la nostra guida ai problemi comuni per soluzioni e suggerimenti.
Utilizzo
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ù adatto alle esigenze del tuo progetto.
from ultralytics import YOLO
# Load the YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to TensorRT format
model.export(format="engine") # creates 'yolo26n.engine'
# Load the exported TensorRT model
tensorrt_model = YOLO("yolo26n.engine")
# Run inference
results = tensorrt_model("https://ultralytics.com/images/bus.jpg")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. |
half | bool | False | Abilita la quantizzazione FP16 (precisione dimezzata), riducendo le dimensioni del modello e potenzialmente velocizzando 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 accuratezza, principalmente per i 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 dello spazio di lavoro in GiB per le ottimizzazioni di TensorRT, bilanciando utilizzo della memoria e 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-elaborazione del rilevamento accurato ed efficiente. |
batch | int | 1 | Specifica la dimensione dell'inferenza batch del modello di esportazione o il numero massimo di immagini che il modello esportato elaborerà simultaneamente in modalità predict. |
data | str | 'coco8.yaml' | Percorso del 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 di calibrare su un sottoinsieme dell'intero dataset, 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 verso TensorRT.
Per ulteriori dettagli sul processo di esportazione, visita la pagina della documentazione di Ultralytics sull'esportazione.
Esportazione in TensorRT con quantizzazione INT8
L'esportazione dei modelli YOLO di Ultralytics tramite TensorRT con precisione INT8 esegue la quantizzazione post-addestramento (PTQ). TensorRT utilizza la calibrazione per la 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 che è candidato alla quantizzazione ha una scala associata che viene dedotta da un processo di calibrazione.
Quando elabora reti implicitamente quantizzate, TensorRT utilizza l'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 dati di input e output, allora al layer viene assegnato un kernel con precisione INT8; altrimenti, TensorRT seleziona una precisione FP32 o FP16 per il kernel in base a quale risulta in un tempo di esecuzione più veloce per quel layer.
È fondamentale 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 durante l'utilizzo di esportazione per un modello YOLO di Ultralytics 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 più recenti). L'algoritmo di calibrazione utilizzato è "MINMAX_CALIBRATION" e puoi leggere ulteriori dettagli sulle opzioni disponibili nella Guida per gli sviluppatori di TensorRT. I test di Ultralytics hanno riscontrato che "MINMAX_CALIBRATION" era la scelta migliore e le esportazioni sono bloccate sull'utilizzo di questo algoritmo.
-
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à di 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 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. -
Il valore predefinito è
workspace=None, che consentirà a TensorRT di allocare memoria automaticamente; durante la configurazione manuale, questo valore potrebbe dover essere aumentato se la calibrazione si blocca (esce senza avviso). -
TensorRT segnalerà
UNSUPPORTED_STATEdurante l'esportazione se il valore diworkspaceè superiore alla memoria disponibile per il dispositivo, il che significa che il valore diworkspacedovrebbe essere abbassato o impostato suNone. -
Se
workspaceè impostato sul valore massimo e la calibrazione fallisce/si blocca, considera l'utilizzo diNoneper l'auto-allocazione o la riduzione dei valori diimgszebatchper ridurre i requisiti di memoria. -
Ricorda che la calibrazione per INT8 è specifica per ogni dispositivo; prendere in prestito una GPU "high-end" per la calibrazione potrebbe tradursi in prestazioni scarse 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 una scalatura imprecisa durante la calibrazione INT8. Questo perché il processo si regola in base ai dati che vede. 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 da parte di NVIDIA li ha portati a consigliare l'utilizzo di almeno 500 immagini di calibrazione rappresentative dei dati per il tuo modello, con la calibrazione di 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 int8=True per TensorRT e usa data="my_dataset.yaml", che utilizzerà le immagini dalla validazione per calibrare. Quando non viene passato alcun valore per data con l'esportazione verso TensorRT con quantizzazione INT8, l'impostazione predefinita sarà quella di utilizzare uno dei set di dati di esempio "piccoli" basati sull'attività 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; questa opzione sarà abilitata per impostazione predefinita quando si esporta con
int8=Trueanche quando non è impostata 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 set di dati COCO per la calibrazione, nello specifico le immagini utilizzate per la validazione (5.000 in totale).
Cache di calibrazione
TensorRT genererà una .cache di calibrazione che può essere riutilizzata per velocizzare l'esportazione dei pesi futuri del modello utilizzando gli stessi dati, ma ciò potrebbe portare a una calibrazione scarsa quando i dati sono molto diversi o se il valore di batch viene cambiato drasticamente. In queste circostanze, la .cache esistente dovrebbe essere rinominata e spostata in una directory diversa o eliminata completamente.
Vantaggi dell'utilizzo di YOLO con TensorRT INT8
-
Dimensioni del modello ridotte: La quantizzazione da FP32 a INT8 può ridurre le dimensioni del modello di 4 volte (su disco o in memoria), portando a tempi di download più rapidi, minori requisiti di archiviazione e ridotto ingombro di memoria quando si distribuisce un modello.
-
Consumo energetico inferiore: 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
Per le prime chiamate di inferenza con un modello esportato in TensorRT INT8, ci si può aspettare tempi di pre-elaborazione, inferenza e/o post-elaborazione più lunghi del solito. Ciò può verificarsi anche quando si modifica imgsz durante l'inferenza, specialmente quando imgsz non è lo stesso specificato durante l'esportazione (l'esportazione imgsz è impostata come profilo "ottimale" di TensorRT).
Svantaggi dell'utilizzo di YOLO con TensorRT INT8
-
Diminuzioni nelle metriche di valutazione: Utilizzare una precisione inferiore significherà che
mAP,Precision,Recallo qualsiasi altra metrica utilizzata per valutare le prestazioni del modello probabilmente peggiorerà leggermente. Vedi la sezione Risultati delle prestazioni per confrontare le differenze inmAP50emAP50-95quando si esporta con INT8 su un piccolo campione di vari dispositivi. -
Tempi di sviluppo aumentati: Trovare le impostazioni "ottimali" per la calibrazione INT8 per il set di dati e il dispositivo può richiedere una quantità significativa di test.
-
Dipendenza dall'hardware: La calibrazione e i guadagni di prestazioni potrebbero essere altamente 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
Consulta i documenti sul 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 Eval | media (ms) | min | max (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | dimensione (pixel) |
|---|---|---|---|---|---|---|---|
| FP32 | Predict | 0.52 | 0.51 | 0.56 | 8 | 640 | ||
| FP32 | COCOval | 0.52 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Predict | 0.34 | 0.34 | 0.41 | 8 | 640 | ||
| FP16 | COCOval | 0.33 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Predict | 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 ogni test utilizzando pesi pre-addestrati yolov8n.engine
| Precision | Test Eval | media (ms) | min | max (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | dimensione (pixel) |
|---|---|---|---|---|---|---|---|
| FP32 | Predict | 1.06 | 0.75 | 1.88 | 8 | 640 | ||
| FP32 | COCOval | 1.37 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Predict | 0.62 | 0.75 | 1.13 | 8 | 640 | ||
| FP16 | COCOval | 0.85 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Predict | 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 ogni test utilizzando pesi pre-addestrati yolov8n.engine
| Precision | Test Eval | media (ms) | min | max (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | dimensione (pixel) |
|---|---|---|---|---|---|---|---|
| FP32 | Predict | 6.11 | 6.10 | 6.29 | 8 | 640 | ||
| FP32 | COCOval | 6.17 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Predict | 3.18 | 3.18 | 3.20 | 8 | 640 | ||
| FP16 | COCOval | 3.19 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Predict | 2.30 | 2.29 | 2.35 | 8 | 640 | ||
| INT8 | COCOval | 2.32 | 0.46 | 0.32 | 1 | 640 |
Consulta la nostra guida rapida su NVIDIA Jetson con Ultralytics YOLO per saperne di più sulla configurazione.
Consulta la nostra guida rapida su NVIDIA DGX Spark con Ultralytics YOLO per saperne di più sulla configurazione.
Metodi di valutazione
Espandi le sezioni sottostanti per informazioni su come questi modelli sono stati esportati e testati.
Configurazioni di esportazione
Vedi modalità export per dettagli riguardanti gli 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 predizione
Vedi modalità predict 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 della validazione
Consulta 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",
)Distribuzione dei modelli YOLO26 esportati in TensorRT
Dopo aver esportato con successo i tuoi modelli Ultralytics YOLO26 nel formato TensorRT, sei pronto per distribuirli. Per istruzioni dettagliate sulla distribuzione dei tuoi modelli TensorRT in vari ambienti, dai un'occhiata alle seguenti risorse:
-
Distribuisci Ultralytics con un Triton Server: La nostra guida su come utilizzare il Triton Inference Server 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.
-
AI end-to-end per PC basati su NVIDIA: Distribuzione NVIDIA TensorRT: Questo post sul 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.
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 riguardo a ulteriori integrazioni di Ultralytics YOLO26, la nostra pagina delle guide all'integrazione offre un'ampia selezione di risorse e approfondimenti informativi.
FAQ
Come posso convertire 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 ulteriori dettagli, visita la guida all'installazione di YOLO26 e la documentazione sull'esportazione.
Quali sono i vantaggi dell'utilizzo di TensorRT per i modelli YOLO26?
L'utilizzo di TensorRT per ottimizzare i modelli YOLO26 offre diversi vantaggi:
- Velocità di inferenza più rapida: 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 dinamicamente la memoria dei tensori, riducendo l'overhead e migliorando l'utilizzo della memoria GPU.
- Fusione dei layer (Layer Fusion): Combina più layer in singole operazioni, riducendo la complessità computazionale.
- Auto-tuning del kernel: 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 da NVIDIA e la nostra panoramica approfondita su TensorRT.
Posso utilizzare la quantizzazione INT8 con TensorRT per i modelli YOLO26?
Sì, puoi esportare i modelli YOLO26 utilizzando TensorRT con quantizzazione INT8. Questo processo coinvolge 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 ulteriori dettagli, fai riferimento alla sezione sull'esportazione di TensorRT con quantizzazione INT8.
Come posso distribuire i modelli YOLO26 TensorRT su un NVIDIA Triton Inference Server?
La distribuzione dei modelli YOLO26 TensorRT su un NVIDIA Triton Inference Server può essere effettuata utilizzando le seguenti risorse:
- Distribuisci Ultralytics YOLO26 con Triton Server: Guida passo dopo passo alla configurazione e all'utilizzo di Triton Inference Server.
- Documentazione di NVIDIA Triton Inference Server: Documentazione ufficiale NVIDIA per opzioni di distribuzione e configurazioni dettagliate.
Queste guide ti aiuteranno a integrare in modo efficiente i modelli YOLO26 in vari ambienti di distribuzione.
Quali 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 di mAP con precisione INT8, ma miglioramento significativo nella 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.