Glossario

TensorRT

Ottimizza i modelli di deep learning con TensorRT per un'inferenza più veloce ed efficiente sulle GPU NVIDIA . Ottieni prestazioni in tempo reale con YOLO e le applicazioni di AI.

Addestra i modelli YOLO semplicemente
con Ultralytics HUB

Per saperne di più

TensorRT è un kit di sviluppo software (SDK) per l'inferenza di deep learning ad alte prestazioni. Sviluppato da NVIDIA, facilita l'ottimizzazione delle reti neurali addestrate per l'implementazione in ambienti di produzione, in particolare sulle GPU di NVIDIA . È stato progettato per prendere i modelli addestrati da framework come PyTorch o TensorFlow e ottimizzarli per un'inferenza più veloce ed efficiente, fondamentale per le applicazioni in tempo reale.

Che cos'è TensorRT?

TensorRT è essenzialmente un ottimizzatore di inferenza e un motore di runtime. Prende un modello di deep learning addestrato e applica varie ottimizzazioni per migliorarne le prestazioni durante la fase di inferenza. Questo processo coinvolge tecniche come l'ottimizzazione dei grafi, la fusione dei livelli, la quantizzazione e l'autotuning del kernel. Ottimizzando il modello, TensorRT riduce la latenza e aumenta il throughput, rendendo possibile l'implementazione di modelli di intelligenza artificiale complessi in applicazioni che richiedono tempi di risposta rapidi.

TensorRT non è un framework di addestramento; piuttosto, viene utilizzato dopo che un modello è stato addestrato usando framework come PyTorch o TensorFlow. Si concentra in particolare sulla fase di implementazione, assicurando che i modelli vengano eseguiti nel modo più rapido ed efficiente possibile sull'hardware di destinazione, principalmente le GPU di NVIDIA . Questo è particolarmente utile per le applicazioni che girano su dispositivi edge o nei data center, dove la velocità di inferenza e l'utilizzo delle risorse sono fondamentali.

Come funziona TensorRT

Il processo di ottimizzazione in TensorRT prevede diversi passaggi chiave per migliorare le prestazioni dell'inferenza:

  • Ottimizzazione del grafico: TensorRT analizza il grafico della rete neurale e lo ristruttura per eliminare le operazioni ridondanti e snellire il flusso di esecuzione. Ciò può includere la rimozione dei livelli non necessari o delle operazioni che non contribuiscono in modo significativo all'output finale.
  • Fusione dei livelli: Più livelli compatibili vengono combinati in un unico livello per ridurre l'overhead e migliorare l'efficienza computazionale. Ad esempio, i livelli di convoluzione, bias e ReLU consecutivi possono spesso essere fusi in un'unica operazione.
  • Quantizzazione: TensorRT può ridurre la precisione dei pesi e delle attivazioni del modello da un formato a virgola mobile (FP32 o FP16) a un formato intero (INT8 o anche inferiore). Questo riduce i requisiti di larghezza di banda della memoria e accelera il calcolo, soprattutto su hardware ottimizzato per l'aritmetica intera. Sebbene la quantizzazione possa ridurre leggermente l'accuratezza, TensorRT mira a minimizzare questo impatto migliorando significativamente la velocità.
  • Kernel Auto-tuning: TensorRT seleziona l'implementazione (kernel) più efficiente per ogni operazione di livello in base all'architettura di destinazione GPU . Questo processo di autotuning garantisce che il modello sfrutti appieno le capacità dell'hardware sottostante.

Queste ottimizzazioni portano complessivamente a miglioramenti sostanziali nella velocità e nell'efficienza dell'inferenza rispetto all'esecuzione del modello originale non ottimizzato.

Applicazioni di TensorRT

TensorRT è ampiamente utilizzato in varie applicazioni in cui è essenziale l'inferenza in tempo reale o quasi. Due esempi concreti sono:

  • Veicoli autonomi: Nelle auto a guida autonoma, il rilevamento rapido degli oggetti e la comprensione della scena sono fondamentali per la sicurezza e la reattività. Ultralytics YOLO I modelli, se ottimizzati con TensorRT, possono raggiungere la velocità di inferenza necessaria sulle piattaforme NVIDIA DRIVE per elaborare i dati dei sensori in tempo reale, consentendo di prendere decisioni rapide per la navigazione e l'evitamento degli ostacoli.
  • Analisi video in tempo reale: Per applicazioni come la sorveglianza della sicurezza o il monitoraggio del traffico, TensorRT consente l'elaborazione di flussi video ad alta risoluzione per il rilevamento, il tracciamento e l'analisi degli oggetti con una latenza minima. In questo modo è possibile ricevere avvisi e azioni immediate in base agli eventi rilevati, come ad esempio il rilevamento di intrusioni nei sistemi di allarme o l'analisi dei flussi di traffico nelle città intelligenti.

TensorRT è utile anche in altri settori come l'analisi delle immagini mediche, la robotica e i servizi di inferenza basati sul cloud, dove la bassa latenza e l'elevato throughput sono fondamentali.

TensorRT e Ultralytics YOLO

Ultralytics YOLO possono essere esportati e ottimizzati utilizzando TensorRT per essere distribuiti sui dispositivi NVIDIA . La documentazione sull'esportazione di Ultralytics YOLO fornisce istruzioni dettagliate su come convertire i modelli YOLO nel formato TensorRT . Questo permette agli utenti di sfruttare le capacità di ottimizzazione di TensorRT per accelerare in modo significativo la velocità di inferenza dei loro modelli YOLO .

Per gli utenti che utilizzano YOLOv8 sui dispositivi NVIDIA Jetson Edge, l'ottimizzazione di TensorRT è spesso un passo fondamentale per ottenere prestazioni in tempo reale. Inoltre, DeepStream su NVIDIA Jetson sfrutta TensorRT per applicazioni di analisi video ad alte prestazioni.

Vantaggi dell'utilizzo di TensorRT

L'utilizzo di TensorRT offre diversi vantaggi chiave per l'implementazione di modelli di deep learning:

  • Maggiore velocità di inferenza: Le ottimizzazioni riducono significativamente la latenza di inferenza e aumentano il throughput, consentendo prestazioni in tempo reale.
  • Latenza ridotta: La riduzione della latenza è fondamentale per le applicazioni che richiedono risposte immediate, come i sistemi autonomi e le analisi in tempo reale.
  • Utilizzo ottimizzato delle risorse: La quantizzazione e l'ottimizzazione dei grafi riducono l'ingombro di memoria e le richieste di calcolo, rendendo i modelli più efficienti da eseguire su dispositivi con risorse limitate.
  • Accelerazione hardware: TensorRT è progettato per massimizzare l'utilizzo delle GPU di NVIDIA , garantendo prestazioni ottimali sull'hardware di NVIDIA .
  • Prontezza di distribuzione: Fornisce un ambiente di runtime pronto per la produzione, semplificando il processo di distribuzione dal modello formato all'applicazione.

In sintesi, TensorRT è uno strumento fondamentale per gli sviluppatori che vogliono implementare applicazioni di inferenza di deep learning ad alte prestazioni, soprattutto quando si utilizzano le GPU NVIDIA . Ottimizzando i modelli per la velocità e l'efficienza, TensorRT aiuta a colmare il divario tra la ricerca e l'implementazione nel mondo reale, rendendo l'IA avanzata accessibile e pratica in diversi settori.

Leggi tutto