Glossario

FLOP

Comprendi i FLOP nell'apprendimento automatico! Scopri come misura la complessità del modello, come influisce sull'efficienza e come aiuta la selezione dell'hardware.

Addestra i modelli YOLO semplicemente
con Ultralytics HUB

Per saperne di più

Le FLOP, o Floating-Point Operations, rappresentano una misura fondamentale della complessità computazionale di un modello di apprendimento automatico (ML), in particolare nel deep learning. Quantificano il numero totale di calcoli in virgola mobile (come addizioni, sottrazioni, moltiplicazioni, divisioni) necessari per un singolo passaggio del modello, in genere durante l'inferenza. La comprensione dei FLOP è fondamentale per valutare l'efficienza del modello, confrontare diverse architetture e determinare l'idoneità di un modello per varie piattaforme hardware, dai potenti server cloud ai dispositivi edge con risorse limitate.

Cosa sono i FLOP?

Un'operazione in virgola mobile è un calcolo matematico che coinvolge numeri con un punto decimale (numeri in virgola mobile). Nelle reti neurali (NN), queste operazioni si verificano ampiamente in strati come le convoluzioni e gli strati completamente connessi. I FLOP misurano il numero totale di queste operazioni necessarie per elaborare un singolo input (ad esempio, un'immagine).

Poiché i moderni modelli di deep learning prevedono miliardi di operazioni di questo tipo, i FLOP sono spesso espressi in GigaFLOP (GFLOP, miliardi di FLOP) o TeraFLOP (TFLOP, trilioni di FLOP). È importante non confondere i FLOP (operazioni totali, una misura del carico di lavoro computazionale) con i FLOPS (Floating-Point Operations Per Second, una misura della velocità di elaborazione hardware, come la capacità di una GPU). Nel contesto della valutazione della complessità del modello, "FLOPs" si riferisce quasi sempre al conteggio delle operazioni totali.

Rilevanza nell'IA e nell'apprendimento automatico

I FLOP sono una metrica vitale e indipendente dall'hardware per stimare il costo computazionale di un modello di intelligenza artificiale. Gli aspetti chiave della sua importanza includono:

  • Confronto dell'efficienza: I FLOP permettono a ricercatori e professionisti di confrontare le richieste computazionali di diverse architetture di modelli indipendentemente da specifiche ottimizzazioni hardware o software. Ad esempio, quando si confrontano modelli come Ultralytics YOLO11 vs YOLOv10, i FLOP forniscono informazioni sulla loro efficienza computazionale relativa insieme alle metriche di accuratezza.
  • Idoneità hardware: I modelli con FLOP inferiori richiedono generalmente una potenza di calcolo inferiore, rendendoli più adatti all'implementazione su dispositivi con risorse limitate, come smartphone, Raspberry Pi o piattaforme NVIDIA Jetson comuni nell'edge computing.
  • Stima della velocità di inferenza: Anche se non si tratta di una misura diretta della velocità, una minore quantità di FLOP è spesso correlata a una maggiore latenza di inferenza. Tuttavia, la velocità effettiva dipende da fattori come gli schemi di accesso alla memoria, il parallelismo hardware (CPU vs. GPU vs. TPU) e librerie software ottimizzate come TensorRT o OpenVINO.
  • Progettazione e ottimizzazione dei modelli: I FLOP sono una considerazione fondamentale durante la progettazione del modello, la ricerca dell'architettura neurale (NAS) e le tecniche di ottimizzazione come il pruning del modello, con l'obiettivo di ridurre il costo computazionale mantenendo le prestazioni.

FLOP e concetti correlati

È utile distinguere i FLOP da altre metriche comuni:

  • FLOPs vs. Parametri: Il numero di parametri (o pesi del modello) indica la dimensione del modello in termini di memoria. I FLOP misurano il costo computazionale per eseguire il modello. Un modello può avere molti parametri ma bassi FLOP (ad esempio, se i pesi sono poco utilizzati) o pochi parametri ma alti FLOP (ad esempio, se comporta molte operazioni per parametro). Entrambe le metriche sono importanti per valutare l'efficienza. Ad esempio, YOLOv9 ha introdotto delle tecniche per ottenere un'elevata precisione con un numero relativamente inferiore di parametri e FLOP rispetto ad alcuni predecessori.
  • FLOPs vs. velocità di inferenza: I FLOP rappresentano il lavoro di calcolo teorico, mentre la velocità di inferenza (spesso misurata in Frames Per Second (FPS) o millisecondi per inferenza) è la prestazione effettiva misurata su un hardware specifico. Fattori come la larghezza di banda della memoria, lo stack software (PyTorch, TensorFlow), la quantizzazione e la dimensione del batch hanno un impatto significativo sulla velocità reale. L 'ottimizzazione della latenza rispetto al throughput mostra come le prestazioni pratiche possano essere regolate al di là dei soli FLOP.
  • FLOPs vs. MACs/MACC: Le operazioni di moltiplicazione-accumulazione (MAC o MACC) contano il numero di operazioni di moltiplicazione e addizione fuse, comuni nelle reti neurali convoluzionali (CNN). Dal momento che un MAC comporta in genere una moltiplicazione e un'addizione, viene spesso approssimato come 2 FLOP. Alcuni documenti di ricerca o schede modello riportano i MAC invece dei FLOP. È fondamentale verificare quale sia la metrica utilizzata, poiché differiscono di circa un fattore due. Capire questa differenza è fondamentale per confrontare i modelli in base ai costi di calcolo riportati.

Applicazioni ed esempi

Le FLOP sono ampiamente utilizzate in vari contesti di AI e ML:

  1. Selezione del modello per l'implementazione su dispositivi edge: Un'azienda che sta sviluppando una telecamera di sicurezza intelligente ha bisogno di un modello di rilevamento degli oggetti che possa funzionare in modo efficiente su un dispositivo edge con una potenza di elaborazione limitata. L'azienda confronta diversi modelli, tra cui diverse dimensioni di Ultralytics YOLO (ad esempio, YOLO11n vs. YOLO11s). Esaminando i FLOP riportati per ogni modello (come quelli presenti nella documentazione diUltralytics YOLO11 ), possono selezionare il modello più grande che soddisfa i loro requisiti di latenza in base al budget di calcolo del dispositivo (misurato in FLOPS hardware). I modelli con FLOPs inferiori, come YOLO11n, sono i candidati principali.
  2. Benchmarking di nuove architetture: I ricercatori che sviluppano una nuova architettura di computer vision devono dimostrarne l'efficienza. Confrontano l'accuratezza del loro modello (ad esempio, mAP) con i suoi GFLOP su set di dati di riferimento standard come COCO. Il loro modello viene posizionato su un grafico accuratezza-vs-FLOPs insieme ai modelli all'avanguardia esistenti (come EfficientNet o le varie versioni di YOLO ) per mostrare i compromessi migliori. Molte pagine di confronto tra modelli, come YOLOv9 vs YOLOX, utilizzano i FLOP come punto di confronto chiave.

Calcolo e stima dei FLOP

I FLOP sono in genere calcolati analizzando l'architettura del modello strato per strato e sommando le operazioni necessarie per ogni strato in base alle dimensioni di ingresso/uscita e al tipo di strato(convoluzione, completamente connesso, ecc.). Vari strumenti e librerie, come fvcore o i profiler integrati nei framework di deep learning, possono aiutare ad automatizzare questo calcolo o fornire delle stime. La risoluzione di ingresso influisce in modo significativo sul conteggio dei FLOP per molti modelli di visione.

Limitazioni

Pur essendo utili, i FLOP hanno dei limiti:

  • Non tengono conto dei costi di accesso alla memoria (MAC), che possono rappresentare un collo di bottiglia significativo.
  • Non colgono il grado di parallelismo possibile nelle operazioni.
  • Le prestazioni effettive dipendono fortemente dalle ottimizzazioni specifiche dell'hardware e dall'efficienza delle librerie software sottostanti(cuDNN, Intel MKL).
  • Alcune operazioni (ad esempio le funzioni di attivazione come ReLU) hanno un basso numero di FLOP ma possono comunque avere un impatto sulla latenza.

Pertanto, i FLOP devono essere considerati insieme ad altre metriche di performance, parametri e benchmark del mondo reale per avere un quadro completo dell'efficienza del modello. Strumenti come Ultralytics HUB possono aiutare a gestire i modelli e a monitorare i vari aspetti delle prestazioni durante lo sviluppo e la distribuzione.

Leggi tutto