Ultralytics YOLO27: Iscriviti alla lista d'attesa.
Licenza YOLO
Torna al glossario di Ultralytics

Inference Engine

Un motore di inferenza esegue modelli addestrati sull'hardware di destinazione usando livelli fusi, precisione ridotta e kernel ottimizzati. Come funziona e quali sono i motori più comuni.

Un motore di inferenza è un software che esegue una rete neurale addestrata per generare previsioni su nuovi dati. Prende un modello esportato da un framework di addestramento, in genere sotto forma di grafo computazionale, ad esempio un file ONNX, ottimizza il grafo per uno specifico processore e lo esegue con la minima latenza di inferenza e il minor consumo di memoria possibili. Esistono motori per ogni tipo di hardware, dalle GPU dei data center a telefoni e microcontrollori; nella distribuzione dei modelli, il motore è il componente che calcola ogni previsione.

Come i motori di inferenza velocizzano i modelli#

Un modello distribuito non aggiorna mai i suoi pesi, quindi un motore può eliminare tutto ciò che serve all'addestramento, come le attivazioni memorizzate per la retropropagazione, e riscrivere liberamente il grafo. Precalcola le parti che dipendono solo da costanti, fonde sequenze di livelli, come convoluzione, normalizzazione e attivazione, in singoli kernel, così i risultati intermedi restano nella veloce memoria on-chip, e pianifica la memoria in modo da riutilizzare i buffer. Può ridurre la precisione numerica a FP16 o INT8 tramite la quantizzazione del modello, misurando gli intervalli di attivazione su dati campione per INT8. Motori come TensorRT misurano quindi i tempi di esecuzione di diversi kernel candidati per ogni livello sul dispositivo effettivo e mantengono quello più veloce, perciò il risultato è legato a quell'hardware:

La fusione della normalizzazione batch nella convoluzione precedente è una delle riscritture più comuni. Durante l'inferenza, la normalizzazione applica soltanto una scala e uno spostamento fissi a ciascun canale, quindi questi valori possono essere incorporati nei pesi e nel bias della convoluzione. PyTorch espone la stessa trasformazione come fuse_conv_bn_eval:

import torch
from torch.nn.utils.fusion import fuse_conv_bn_eval

torch.manual_seed(0)

# A trained convolution followed by batch normalization (random statistics here)
conv = torch.nn.Conv2d(16, 32, kernel_size=3, padding=1).eval()
bn = torch.nn.BatchNorm2d(32).eval()
bn.running_mean.uniform_(-1, 1)
bn.running_var.uniform_(0.5, 2.0)

# Fold the normalization's scale and shift into the convolution's weights and bias
fused = fuse_conv_bn_eval(conv, bn)

# One layer now replaces two and produces the same output
x = torch.randn(1, 16, 64, 64)
with torch.inference_mode():
    diff = (bn(conv(x)) - fused(x)).abs().max().item()
print(f"Max difference after fusing: {diff:.1e}")

Stampa una differenza massima pari a 2.1e-06, dovuta all'arrotondamento in virgola mobile: il singolo livello fuso calcola la stessa funzione dei due livelli originali, ma con un solo passaggio in memoria anziché due.

Motori di inferenza comuni#

  • TensorRT: il motore di NVIDIA per le GPU dei suoi data center e i moduli Jetson. Crea un piano per un singolo modello di GPU e una singola versione di TensorRT, quindi i motori vanno ricreati quando cambia uno dei due.
  • OpenVINO: il toolkit di Intel per CPU, GPU integrate e discrete e NPU.
  • ONNX Runtime: il motore multipiattaforma di Microsoft per i modelli ONNX, che affida il lavoro a backend hardware chiamati provider di esecuzione, tra cui CUDA, TensorRT, OpenVINO e Core ML.
  • LiteRT: il runtime di Google, precedentemente TensorFlow Lite, per Android, Linux embedded e microcontrollori, con delegati per GPU mobili e NPU.
  • Core ML: il framework di Apple eseguito sul dispositivo, che distribuisce il lavoro tra CPU, GPU e Neural Engine.
  • vLLM: un motore open source per i modelli linguistici di grandi dimensioni, che aggiunge la pianificazione delle richieste e la memoria paginata per la cache di attenzione, così da gestire molti utenti contemporaneamente.

L'API Ultralytics YOLO sceglie il motore in base al file caricato, quindi la stessa chiamata predict esegue un checkpoint .pt in PyTorch, un file .onnx in ONNX Runtime, un file .engine in TensorRT oppure una cartella OpenVINO in OpenVINO. Esportare Ultralytics YOLO26 in OpenVINO e caricare il risultato cambia motore senza richiedere altre modifiche al codice:

from ultralytics import YOLO

# Esporta il modello PyTorch nel formato OpenVINO
model = YOLO("yolo26n.pt")
path = model.export(format="openvino")  # creates 'yolo26n_openvino_model/'

# Il caricamento della cartella esportata esegue le previsioni tramite il motore OpenVINO
ov_model = YOLO(path)
results = ov_model("https://ultralytics.com/images/bus.jpg")
results[0].save(filename="bus_openvino.jpg")
  • PyTorch e altri framework di addestramento: mantengono il grafo flessibile e registrano le operazioni per i gradienti, così da poter progettare e addestrare i modelli. Eseguono anche l'inferenza, ma con un sovraccarico maggiore rispetto a un motore creato per un singolo dispositivo.
  • ONNX: un formato di file che descrive il grafo e i pesi di un modello. ONNX Runtime e TensorRT sono motori in grado di leggerlo.
  • Distribuzione dei modelli: racchiude uno o più motori in un servizio di rete con API, raggruppamento delle richieste e gestione delle versioni, come fa NVIDIA Dynamo-Triton, in precedenza Triton Inference Server, per i modelli TensorRT, ONNX Runtime e PyTorch.
  • Motore di inferenza dei sistemi esperti: il significato più datato del termine, derivato dall'IA basata su regole, in cui il motore di inferenza applica regole «se-allora» a una base di conoscenza mediante concatenazione in avanti o all'indietro.

Esplora le soluzioni

La visione artificiale nello sport

La visione artificiale nello sport

Scopri come Ultralytics YOLO alimenta la computer vision nello sport con il tracciamento di giocatori e palloni, l'analisi delle prestazioni, gli approfondimenti per gli allenatori e la riabilitazione degli atleti.
Scopri di più
Computer vision per immagini aeree

Computer vision per immagini aeree

Trasforma immagini aeree e riprese da drone in informazioni utili in tempo reale per agricoltura, acquacoltura, conservazione e analisi geospaziale con Ultralytics YOLO.
Scopri di più
Computer vision nel settore aerospaziale

Computer vision nel settore aerospaziale

Applica la visione artificiale nel settore aerospaziale con Ultralytics YOLO per l'ispezione degli aeromobili, il rilevamento di FOD sulle piste, le operazioni di terra aeroportuali e il rilevamento di difetti nei materiali compositi.
Scopri di più
Visione artificiale nella sicurezza

Visione artificiale nella sicurezza

Proteggi ogni sito con i modelli Ultralytics YOLO. L'IA visiva alimenta il monitoraggio perimetrale, il rilevamento delle minacce, il riconoscimento delle targhe e la sicurezza sul lavoro.
Scopri di più
Visione artificiale nella robotica

Visione artificiale nella robotica

Dai più potenza alle macchine intelligenti con i modelli Ultralytics YOLO. Nell'ambito della robotica, l'IA visiva alimenta la navigazione autonoma, la percezione, il tracciamento degli oggetti e il controllo in tempo reale.
Scopri di più
Visione artificiale nella logistica

Visione artificiale nella logistica

Semplifica la logistica con i modelli Ultralytics YOLO. L'IA per la visione consente l'ispezione dei pacchi, la selezione, il tracciamento dei veicoli e il monitoraggio della sicurezza nei magazzini in tempo reale.
Scopri di più
Visione artificiale nel commercio al dettaglio

Visione artificiale nel commercio al dettaglio

Ripensa il commercio al dettaglio con i modelli Ultralytics YOLO. L'IA per la visione consente di tracciare le scorte, monitorare gli scaffali, gestire le code e ottenere informazioni più approfondite sui clienti.
Scopri di più
Visione artificiale in ambito sanitario

Visione artificiale in ambito sanitario

Crea soluzioni sanitarie con i modelli Ultralytics YOLO. In ambito sanitario, l'IA per la visione consente di elaborare più rapidamente le immagini mediche, migliorare la diagnostica e monitorare i pazienti.
Scopri di più
Computer vision nella produzione

Computer vision nella produzione

Ottimizza la produzione con i modelli Ultralytics YOLO. La visione basata sull'IA migliora il controllo qualità, il rilevamento dei difetti, la conformità ai requisiti sui DPI e l'automazione delle linee di assemblaggio.
Scopri di più
Computer vision nel settore automobilistico

Computer vision nel settore automobilistico

Applica la computer vision al settore automobilistico con i modelli Ultralytics YOLO. La visione basata sull'IA migliora la sicurezza stradale, i sistemi di assistenza alla guida e l'automazione dei veicoli, per strade più intelligenti.
Scopri di più
Visione artificiale in agricoltura

Visione artificiale in agricoltura

Porta l'IA visiva nell'agricoltura intelligente con i modelli Ultralytics YOLO. Gestisci il monitoraggio delle colture, il tracciamento del bestiame e l'agricoltura di precisione per ottenere raccolti più abbondanti e intelligenti.
Scopri di più

Costruiamo insieme il futuro dell'IA!

Inizia il tuo percorso verso il futuro del machine learning