TensorRT
TensorRT è l’SDK di NVIDIA che compila reti neurali addestrate in motori ottimizzati per un’inferenza rapida su una singola GPU. Scopri come ottimizza i modelli, con codice.
TensorRT è l’SDK di NVIDIA per l’inferenza ad alte prestazioni di apprendimento profondo sulle GPU NVIDIA. Prende una rete addestrata, di solito sotto forma di file ONNX, e durante la fase di build la compila in un engine, detto anche plan file: un programma specifico per la GPU che fonde i layer, opera a precisione ridotta e usa i kernel più veloci misurati sulla GPU di destinazione. Nella fase di runtime, un’applicazione carica l’engine e lo esegue, in genere con una latenza di inferenza inferiore e un throughput superiore rispetto al framework originale. TensorRT viene distribuito sotto forma di librerie C++ e Python, oltre allo strumento da riga di comando trtexec, e la sua versione principale attuale è TensorRT 11, con la release 11.4 a ottobre 2026.
Come TensorRT ottimizza un modello#
Il builder applica diverse ottimizzazioni al grafo della rete:
- Fusione di livelli e tensori: una convoluzione, il relativo bias e la funzione di attivazione diventano un unico kernel, mentre i livelli le cui uscite non vengono mai usate vengono eliminati; in questo modo i risultati intermedi restano sul chip anziché passare avanti e indietro dalla memoria della GPU.
- Precisione ridotta: FP16 e BF16 dimezzano il traffico in memoria rispetto a FP32; INT8 e FP8 lo dimezzano ulteriormente, mentre INT4 (solo per i pesi) e FP4 spingono ancora oltre sulle GPU recenti: una forma di quantizzazione del modello. TensorRT 11 ha rimosso i flag del builder FP16 e INT8 e la calibrazione INT8 implicita di TensorRT 10; richiede invece reti fortemente tipizzate, nelle quali nodi cast e coppie quantize-dequantize dichiarano la precisione di ciascun livello. Il Model Optimizer di NVIDIA può inserire questi nodi in un file ONNX.
- Ottimizzazione automatica dei kernel: per ogni livello, il builder misura sul GPU effettivo le implementazioni candidate, dette tactics, e mantiene la più veloce.
- Pianificazione della memoria: i buffer delle attivazioni vengono riutilizzati tra livelli con tempi di vita non sovrapposti, riducendo l’occupazione di memoria dell’engine.
- Forme dinamiche: i profili di ottimizzazione con forme minime, ottimali e massime consentono a un singolo engine di accettare dimensioni di batch o risoluzioni delle immagini variabili, ottimizzandolo per la forma ottimale.
La build di un engine può richiedere minuti e il risultato dipende dall’hardware. Per impostazione predefinita, un engine funziona solo sul tipo di GPU su cui è stato creato e con la stessa versione di TensorRT; gli engine compatibili con hardware e versioni diverse rinunciano a una parte della velocità in cambio della portabilità. Per questo motivo, nelle distribuzioni si conserva il file ONNX e si creano gli engine sui sistemi in cui verranno eseguiti:
Esportare un modello in TensorRT#
I modelli Ultralytics YOLO26 vengono esportati in TensorRT con model.export(format="engine"), che prima scrive un file ONNX e poi crea l’engine sulla GPU locale, in FP16 con quantize=16 oppure in INT8 con quantize=8, con calibrazione basata sulle immagini del dataset data. Con TensorRT 11, l’esportazione applica queste precisioni tramite Model Optimizer, come richiesto dall’API a tipizzazione forte:
from ultralytics import YOLO
# Crea un engine TensorRT FP16 sulla GPU NVIDIA locale (scrive yolo26n.engine)
model = YOLO("yolo26n.pt")
model.export(format="engine", quantize=16)
# Carica l’engine ed esegui l’inferenza tramite la stessa API
trt_model = YOLO("yolo26n.engine")
results = trt_model("https://ultralytics.com/images/bus.jpg")
results[0].save(filename="bus_tensorrt.jpg")L’immagine salvata mostra le rilevazioni prodotte dall’engine FP16 sulla foto dell’autobus, tramite la stessa interfaccia YOLO del modello PyTorch.
TensorRT a confronto con strumenti correlati#
- ONNX: il formato portatile dei modelli che TensorRT usa più spesso come input. Un singolo file ONNX può essere compilato in engine separati per una GPU da data center e un modulo integrato.
- ONNX Runtime con il provider di esecuzione TensorRT: esegue come engine TensorRT i sottografi supportati da TensorRT e usa kernel CUDA o CPU per il resto, mantenendo l’API ONNX Runtime.
- PyTorch: il framework in cui viene addestrata la maggior parte dei modelli. Torch-TensorRT compila direttamente i modelli PyTorch con TensorRT, senza un passaggio ONNX separato.
- Altri engine di inferenza: OpenVINO per l’hardware Intel, Core ML per i dispositivi Apple e LiteRT per Android e i dispositivi integrati svolgono lo stesso ruolo su altri chip.
- TensorRT-LLM: la libreria open source di NVIDIA per l’inferenza dei modelli linguistici di grandi dimensioni, ora basata su PyTorch e dotata di kernel di attenzione ottimizzati, quantizzazione, decodifica speculativa e parallelismo multi-GPU.
Applicazioni nel mondo reale#
- Analisi video: il DeepStream SDK di NVIDIA esegue engine TensorRT in pipeline multicamera per l’analisi nel commercio al dettaglio, del traffico e della sicurezza, dove molti flussi condividono una sola GPU.
- Ispezione industriale: le telecamere sulle linee di produzione ad alta velocità devono eseguire inferenza in tempo reale entro il tempo in cui ogni pezzo resta nel loro campo visivo; gli engine a precisione ridotta lo rendono possibile su GPU compatte.
- Veicoli autonomi: le reti di percezione per i veicoli autonomi vengono eseguite come engine TensorRT sulle piattaforme NVIDIA DRIVE, come DRIVE AGX Orin e Thor.
- Robotica e dispositivi edge: i moduli NVIDIA Jetson includono TensorRT con JetPack.










