Glossario

Precisione mista

Aumenta l'efficienza del deep learning con l'addestramento a precisione mista! Ottieni velocità maggiori, riduzione dell'uso della memoria e risparmio energetico senza sacrificare la precisione.

Addestra i modelli YOLO semplicemente
con Ultralytics HUB

Per saperne di più

L'addestramento a precisione mista è una tecnica utilizzata nel deep learning (DL) per accelerare l'addestramento dei modelli e ridurre il consumo di memoria senza impattare in modo significativo sull'accuratezza del modello. Questo risultato si ottiene utilizzando strategicamente una combinazione di diversi formati di precisione numerica per memorizzare e calcolare i valori all'interno di una rete neurale (NN). In genere, questo comporta l'utilizzo del formato standard a virgola mobile a 32 bit (FP32 o a singola precisione) per le parti critiche come la memorizzazione dei pesi del modello, mentre si utilizzano i formati a virgola mobile a 16 bit più veloci e meno impegnativi per la memoria (FP16 o a mezza precisione e talvolta BF16 o BFloat16) per i calcoli durante i passaggi in avanti e all'indietro(backpropagation).

Come funziona la precisione mista

L'idea alla base della precisione mista è quella di sfruttare i vantaggi in termini di velocità e memoria dei formati a bassa precisione, attenuando al contempo i potenziali problemi di stabilità numerica. Un approccio comune prevede i seguenti passaggi:

  1. Mantenere i pesi master in FP32: una copia primaria dei pesi del modello viene mantenuta nel formato standard FP32 per garantire un'elevata precisione negli aggiornamenti dei pesi.
  2. Usa FP16/BF16 per i calcoli: Durante il ciclo di formazione, i pesi FP32 vengono trasformati in FP16 o BF16 per i passaggi in avanti e indietro. I calcoli che utilizzano questi formati a bassa precisione sono significativamente più veloci sull'hardware moderno come le GPUNVIDIA dotate di Tensor Cores, che sono specificamente progettati per accelerare le moltiplicazioni matriciali a bassa precisione.
  3. Scala delle perdite: Quando si utilizza FP16, la gamma di numeri rappresentabili è molto più piccola rispetto a FP32. Questo può far sì che i piccoli valori di gradiente calcolati durante il backpropagation diventino zero (underflow), ostacolando l'apprendimento. Per evitare questo problema, il valore di perdita viene scalato prima della retropropagazione, scalando di fatto i gradienti in un intervallo rappresentabile da FP16. Prima dell'aggiornamento del peso, questi gradienti vengono ridimensionati. Il BF16, con il suo intervallo dinamico più ampio simile a quello dell'FP32 ma con una precisione inferiore, spesso evita la necessità di scalare la perdita.
  4. Aggiornamento dei pesi master: I gradienti calcolati (ridimensionati se è stato utilizzato il loss scaling) vengono utilizzati per aggiornare la copia master dei pesi, che rimangono in FP32.

Questo accurato bilanciamento permette ai modelli di allenarsi più velocemente e di utilizzare meno GPU memoria della GPU.

Vantaggi della precisione mista

  • Formazione più veloce: I calcoli a bassa precisione (FP16/BF16) vengono eseguiti molto più velocemente su hardware compatibile, riducendo significativamente il tempo necessario per ogni periodo di addestramento. Questo permette di accelerare l'iterazione e la sperimentazione.
  • Consumo di memoria ridotto: I valori FP16/BF16 richiedono la metà della memoria dei valori FP32. Questa riduzione si applica alle attivazioni memorizzate durante il passaggio in avanti e ai gradienti calcolati durante il passaggio all'indietro. Un minore utilizzo della memoria consente di addestrare modelli più grandi o di utilizzare batch di dimensioni maggiori, migliorando le prestazioni del modello e la stabilità dell'addestramento.
  • Efficienza migliorata: La combinazione di calcoli più veloci e requisiti di larghezza di banda della memoria più bassi porta a un uso più efficiente delle risorse hardware, riducendo potenzialmente i costi di formazione per il cloud computing o i cluster on-premise.

Precisione mista e concetti correlati

  • Precisione completa (FP32): La formazione tradizionale utilizza FP32 per tutti i calcoli e la memoria. In genere è più stabile dal punto di vista numerico, ma è più lento e richiede più memoria rispetto alla precisione mista.
  • Mezza precisione (FP16/BF16): Utilizzare solo FP16 o BF16 durante l'addestramento può portare a una significativa instabilità numerica (soprattutto FP16 senza tecniche come il loss scaling) e a una potenziale perdita di precisione. La precisione mista è un approccio più robusto che combina FP32 e FP16/BF16.
  • Quantizzazione del modello: In genere si riferisce alla conversione dei pesi e/o delle attivazioni del modello in formati di precisione ancora più bassa, come gli interi a 8 bit (INT8), principalmente per ottimizzare la velocità e l'efficienza dell'inferenza, soprattutto sui dispositivi edge. Anche se a volte viene utilizzata durante l'addestramento(Quantization-Aware Training), si distingue dalla tipica precisione mista FP32/FP16 utilizzata durante le fasi di addestramento standard.

Applicazioni ed esempi

La precisione mista è ampiamente adottata nell'addestramento di modelli di machine learning (ML) su larga scala.

  1. Formazione di modelli linguistici di grandi dimensioni (LLM): Modelli come GPT-3, BERT e T5 hanno miliardi di parametri. L'addestramento con il solo FP32 richiederebbe quantità proibitive di memoria e tempo GPU . La precisione mista rende fattibile l'addestramento di questi modelli fondamentali, riducendo significativamente il fabbisogno di memoria e accelerando i calcoli. Framework come PyTorch e TensorFlow offrono un supporto integrato per l'addestramento a precisione mista.
  2. Accelerazione dei modelli di computer vision: Nella computer vision (CV), la precisione mista accelera l'addestramento di modelli complessi come le reti neurali convoluzionali (CNN) e i trasformatori di visione (ViT) utilizzati per attività come il rilevamento di oggetti, la segmentazione di immagini e la classificazione di immagini. Ad esempio, i modelliYOLO Ultralytics , tra cui il più recente Ultralytics YOLO11possono sfruttare la precisione mista durante l'addestramento per una convergenza più rapida e un utilizzo efficiente delle risorse, come indicato nei nostri consigli per l'addestramento dei modelli e nei confronti dei modelli. Questo permette agli utenti di addestrare più rapidamente modelli ad alte prestazioni su dataset come COCO. I cicli di formazione più rapidi facilitano la messa a punto degli iperparametri e lo sviluppo dei modelli all'interno di piattaforme come Ultralytics HUB. La precisione mista può essere utilizzata anche durante l'inferenza per accelerare la distribuzione, in particolare quando si esportano i modelli in formati come TensorRT che ottimizzano pesantemente per precisioni inferiori.
Leggi tutto