Motore di inferenza
Scopri come gli inference engine alimentano l'IA fornendo previsioni in tempo reale, ottimizzando i modelli e consentendo la distribuzione multipiattaforma.
Un motore di inferenza è un componente software specializzato progettato per eseguire modelli di apprendimento automatico addestrati
modelli di apprendimento automatico e generare
predizioni da nuovi dati. A differenza dei framework di addestramento che si concentrano sull'apprendimento di modelli da insiemi di dati massicci, un motore di inferenza è ottimizzato esclusivamente per la fase operativa, nota come
motore di inferenza è ottimizzato esclusivamente per la fase operativa, conosciuta come
distribuzione dei modelli. Il suo obiettivo principale è quello di eseguire questi
modelli nel modo più efficiente possibile, minimizzando
latenza dell'inferenza e massimizzando il throughput su
hardware di destinazione, sia che si tratti di un potente server cloud o di un dispositivo di intelligenza artificiale
di risorse, sia che si tratti di un potente server cloud o di un dispositivo di intelligenza artificiale edge.
Come funziona un motore di inferenza
La transizione da un modello addestrato a un'applicazione pronta per il deployment coinvolge tipicamente un motore di inferenza che funge da ambiente di runtime.
l'ambiente di runtime. Una volta addestrato un modello in un framework come
PyTorch o
TensorFlowspesso è pesante e contiene strutture di dati utili per l'apprendimento ma
strutture di dati utili per l'apprendimento ma non necessarie per la predizione. Un motore di inferenza elimina questo sovraccarico e
e applica ottimizzazioni rigorose al grafo computazionale.
Le principali tecniche di ottimizzazione includono:
-
Fusione di livelli: Il motore combina più livelli (ad esempio, convoluzione, normalizzazione e attivazione) in un'unica operazione.
attivazione) in un'unica operazione. Questo riduce l'accesso alla memoria e velocizza l'esecuzione.
-
Riduzione della precisione: Attraverso la quantizzazione del
quantizzazione del modello, il motore converte
i pesi dal formato in virgola mobile a 32 bit ad alta precisione (FP32) a formati a bassa precisione come INT8 o FP16. Questo
riduce drasticamente le dimensioni del modello e l'utilizzo della larghezza di banda della memoria senza compromettere in modo significativo
l 'accuratezza.
-
Kernel Auto-Tuning: Motori come
NVIDIA TensorRT selezionano automaticamente gli algoritmi e i kernel hardware più
algoritmi e i kernel hardware più efficienti per le specifiche
GPU utilizzata.
-
Gestione della memoria: Strategie efficienti di riutilizzo della memoria riducono al minimo l'overhead di allocazione e deallocazione della memoria durante il runtime.
di allocazione e deallocazione della memoria durante il runtime, che è fondamentale per
inferenza in tempo reale.
Motori di inferenza comuni
I diversi motori sono adattati a specifici ecosistemi hardware e obiettivi di prestazioni:
-
NVIDIA TensorRT: ottimizzatore e runtime di inferenza di deep learning ad alte prestazioni per le GPU NVIDIA .
È ampiamente utilizzato nei data center e nelle applicazioni automobilistiche. È possibile
esportare i modelli Ultralytics in TensorRT per ottenere la massima velocità.
velocità.
-
Intel OpenVINO: il programma
Open Visual Inference and Neural Network Optimization (Ottimizzazione della rete neurale e dell'inferenza visiva aperta)
ottimizza i modelli per l'hardware Intel , comprese le CPU e le GPU integrate.
CPU e GPU integrate. Consente un approccio "write once,
distribuire ovunque" all'interno dell'ecosistema Intel .
-
RuntimeONNX : Un motore multipiattaforma sviluppato da Microsoft che supporta il sistema di
ONNX formato. Consente ai modelli
addestrati in un unico framework di funzionare in modo efficiente su diversi backend hardware.
-
TensorFlow Lite: Progettato per i dispositivi mobili e IoT,
TensorFlow Lite consente l'inferenza a bassa latenza su Android, iOS e sistemi embedded.
sistemi embedded.
Applicazioni nel mondo reale
I motori di inferenza sono la spina dorsale invisibile delle moderne applicazioni di intelligenza artificiale, che consentono loro di reagire istantaneamente al mondo.
-
Guida autonoma: Nell'industria automobilistica, i veicoli si affidano alla visione computerizzata per navigare in modo
sicurezza. Un motore di inferenza in esecuzione sul computer di bordo dell'auto elabora i flussi video per eseguire il
rilevamento di pedoni, altri veicoli e segnali stradali.
veicoli e segnali stradali. Utilizzando un modello come YOLO11,
il motore garantisce che queste previsioni avvengano in millisecondi, consentendo all'auto di frenare o sterzare autonomamente in tempo reale.
tempo reale.
-
Produzione intelligente: Le linee di produzione utilizzano motori di inferenza per il controllo automatico della qualità.
Le telecamere ad alta velocità catturano le immagini dei prodotti su un nastro trasportatore e un motore di inferenza le elabora per rilevare difetti come crepe o disallineamenti.
detect difetti come crepe o disallineamenti. Questo sistema ad alta produttività impedisce la spedizione di prodotti difettosi e riduce i costi di ispezione manuale.
e riduce i costi delle ispezioni manuali.
Motore di inferenza e struttura di formazione
È importante distinguere tra gli strumenti utilizzati per creare i modelli e quelli utilizzati per eseguirli.
-
Framework di formazione (ad esempio, PyTorch, Keras): Sono progettati per la flessibilità e la sperimentazione.
Supportano la retropropagazione, l'aggiornamento del gradiente e i grafi dinamici, che sono essenziali per l'apprendimento, ma sono computazionalmente costosi.
computazionalmente costosi.
-
Motori di inferenza (ad esempio, TensorRT, ONNX Runtime): Sono progettati per garantire velocità ed efficienza. Essi
trattano il modello come un insieme statico di operazioni da eseguire il più velocemente possibile. In genere non supportano
l'addestramento o l'apprendimento di nuovi modelli.
Esportazione per inferenza
Per utilizzare un motore di inferenza specifico, spesso è necessario
esportare il modello addestrato in un formato compatibile. Ad esempio
esempio, l'esportazione di un modello YOLO11 in formato ONNX consente di eseguirlo con ONNX Runtime o di importarlo in altri motori.
from ultralytics import YOLO
# Load a trained YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to ONNX format for use with ONNX Runtime
# This creates 'yolo11n.onnx' optimized for inference
model.export(format="onnx")
Sfruttando un motore di inferenza, gli sviluppatori possono sbloccare il pieno potenziale dei loro modelli di IA, assicurando che funzionino senza problemi in ambienti di produzione che vanno dai cluster cloud ai dispositivi edge a batteria.
senza problemi in ambienti di produzione che vanno dai cluster cloud ai dispositivi edge alimentati a batteria.