Scopri come i FLOP misurano la complessità computazionale dei modelli di IA. Scopri come calcolare i FLOP per Ultralytics e ottimizzare le prestazioni per l'Edge AI.
FLOP, o Floating Point Operations (operazioni in virgola mobile), è una metrica standard utilizzata per misurare la complessità computazionale di un modello di apprendimento automatico. Conta in particolare il numero di calcoli matematici, principalmente addizioni e moltiplicazioni che coinvolgono numeri decimali, che una rete neurale deve eseguire per elaborare un singolo input, come un'immagine o una frase. Nel mondo del deep learning, i FLOP servono come metro di misura teorico per stimare quanto un modello sia "pesante" o computazionalmente oneroso. Un numero più elevato di FLOP indica generalmente che un modello è più complesso e richiederà più potenza di elaborazione ed energia per essere eseguito, mentre un numero più basso indica un'architettura leggera progettata per l'efficienza.
Quando sviluppano applicazioni di intelligenza artificiale, gli ingegneri spesso devono trovare un compromesso tra precisione e velocità. I FLOP fungono da proxy indipendente dall'hardware per la latenza di inferenza, consentendo agli sviluppatori di confrontare architetture diverse senza doverle testare su ogni possibile dispositivo. Questa metrica è essenziale per scegliere il modello giusto per specifici scenari di implementazione. Ad esempio, un ricercatore che esegue esperimenti su potenti server di cloud computing potrebbe dare la priorità alla precisione rispetto all'efficienza, utilizzando modelli con FLOP elevati. Al contrario, un ingegnere che sviluppa dispositivi AI edge deve dare la priorità a FLOP bassi per garantire che l' applicazione funzioni senza intoppi entro limiti di potenza e termici rigorosi.
Le implicazioni pratiche dei FLOP sono evidenti in vari settori in cui le risorse computazionali sono un fattore critico .
È importante distinguere tra "FLOP" (plurale di FLOP) e "FLOPS" (tutto maiuscolo). Anche se sembrano quasi identici, misurano cose diverse. FLOP (con la "s" minuscola) si riferisce alla quantità totale di operazioni richieste da un modello: è una misura statica della complessità. FLOPS (con la "S" maiuscola) sta per Floating Point Operations Per Second (operazioni in virgola mobile al secondo) e misura la velocità o la capacità prestazionale dell'hardware, come ad esempio una GPU. Si può pensare ai FLOP come alla distanza che un'auto deve percorrere (il lavoro da svolgere), mentre i FLOPS sono la velocità massima dell'auto (la capacità dell'hardware di svolgere il lavoro).
È possibile calcolare facilmente il costo computazionale di un Ultralytics utilizzando Python. Ciò è particolarmente utile durante la fase di ottimizzazione del modello per garantire che la rete neurale rientri nel budget hardware. L'esempio seguente mostra come caricare un modello YOLO26 e determinarne i FLOP.
from ultralytics import YOLO
from ultralytics.utils.torch_utils import get_flops
# Load a lightweight YOLO26 model
model = YOLO("yolo26n.pt")
# Calculate and print the model's FLOPs (Billions of operations)
# This gives you a hardware-independent complexity metric
flops = get_flops(model)
print(f"Model FLOPs: {flops:.2f} Billion")
Per rendere i modelli più implementabili, i ricercatori utilizzano diverse tecniche per ridurre i FLOP senza sacrificare in modo significativo l' accuratezza. Il pruning dei modelli comporta la rimozione delle connessioni meno importanti nella rete neurale, di fatto assottigliandola. Un'altra tecnica è la quantizzazione, che riduce la precisione dei numeri utilizzati nei calcoli (ad esempio, da 32 bit in virgola mobile a 8 bit interi). Gli strumenti disponibili sulla Ultralytics aiutano a semplificare questi processi di ottimizzazione, rendendo più facile implementare modelli efficienti su obiettivi come TensorRT o OpenVINO. Comprendendo e ottimizzando i FLOP, gli sviluppatori possono creare sistemi di IA potenti e sostenibili.