FLOPs
Scopri come i FLOP misurano la complessità computazionale dei modelli AI. Scopri come calcolare i FLOP per Ultralytics YOLO26 e ottimizzare le prestazioni per l'Edge AI.
I FLOPs, o Floating Point Operations, sono una metrica standard utilizzata per misurare la complessità computazionale di un modello di machine learning. In particolare, contano il numero di calcoli matematici, principalmente addizioni e moltiplicazioni che coinvolgono numeri decimali, che una neural network deve eseguire per elaborare un singolo input, come un'immagine o una frase. Nel mondo del deep learning, i FLOPs fungono da parametro teorico per stimare quanto un modello sia "pesante" o computazionalmente costoso. Un numero di FLOPs più elevato suggerisce generalmente che un modello sia più complesso e richieda maggiore potenza di elaborazione ed energia per essere eseguito, mentre un conteggio inferiore indica un'architettura leggera progettata per l'efficienza.
Il ruolo dei FLOPs nella selezione del modello#
Quando sviluppano applicazioni di artificial intelligence, gli ingegneri affrontano spesso un compromesso tra precisione e velocità. I FLOPs agiscono come un proxy indipendente dall'hardware per la inference latency, consentendo agli sviluppatori di confrontare diverse architetture senza doverle sottoporre a benchmark su ogni possibile dispositivo. Questa metrica è essenziale per scegliere il modello giusto per specifici scenari di distribuzione. 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 FLOPs elevati. Al contrario, un ingegnere che realizza prodotti per dispositivi edge AI deve dare la priorità a FLOPs bassi per garantire che l'applicazione funzioni senza intoppi entro rigidi limiti di alimentazione e termici.
Applicazioni nel mondo reale#
Le implicazioni pratiche dei FLOPs sono evidenti in vari settori in cui le risorse computazionali rappresentano un fattore critico.
- Droni autonomi: In settori come la agricultural robotics, i droni dotati di telecamere analizzano la salute delle colture in tempo reale. Poiché le batterie dei droni sono limitate, ogni singolo consumo di energia è importante. Gli ingegneri scelgono specificamente modelli con FLOPs bassi, come le varianti Nano di YOLO26, per ridurre al minimo il consumo sul processore di bordo, massimizzando così il tempo di volo e il raggio operativo.
- Realtà aumentata mobile: Le applicazioni per smartphone che utilizzano il facial recognition per la sicurezza o applicano filtri AR fanno grande affidamento su un'elaborazione efficiente. Queste app devono funzionare senza causare il surriscaldamento o il rallentamento del dispositivo. Gli sviluppatori utilizzano le stime dei FLOPs per selezionare modelli leggeri che rientrino comodamente nelle capacità dei chipset mobili come la serie Snapdragon o i A-series chips di Apple.
FLOPs vs. FLOPS (Floating Point Operations Per Second)#
È importante distinguere tra "FLOPs" (plurale di FLOP) e "FLOPS" (tutto maiuscolo). Sebbene sembrino quasi identici, misurano cose diverse. FLOPs (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 e misura la velocità o la capacità di prestazione dell'hardware, come ad esempio una GPU. Puoi pensare ai FLOPs 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).
Misurare i FLOPs con Python#
Puoi calcolare facilmente il costo computazionale di un modello Ultralytics usando Python. Questo è particolarmente utile durante la fase di model optimization per assicurarti che la tua rete neurale rientri nel tuo budget hardware. Il seguente esempio mostra come caricare un modello YOLO26 e determinarne i FLOPs.
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")Ridurre i FLOPs per l'efficienza#
Per rendere i modelli più distribuibili, i ricercatori utilizzano diverse tecniche per ridurre i FLOPs senza sacrificare in modo significativo la precisione. Il Model pruning comporta la rimozione di connessioni meno importanti nella rete neurale, assottigliandola efficacemente. Un'altra tecnica è la quantization, che riduce la precisione dei numeri utilizzati nei calcoli (ad esempio, da virgola mobile a 32 bit a interi a 8 bit). Gli strumenti disponibili sulla Ultralytics Platform aiutano a semplificare questi processi di ottimizzazione, rendendo più facile distribuire modelli efficienti su target come TensorRT o OpenVINO. Comprendendo e ottimizzando i FLOPs, gli sviluppatori possono costruire sistemi di IA che sono sia potenti che sostenibili.






