Precisione mista
Ottimizza l'efficienza del deep learning con il training a precisione mista! Ottieni velocità superiori, un utilizzo ridotto della memoria e risparmi energetici senza sacrificare l'accuratezza.
La precisione mista è una potente tecnica di ottimizzazione in
apprendimento profondo che combina strategicamente
combina diversi formati numerici, in particolare 16 bit (mezza precisione) e 32 bit (singola precisione) in virgola mobile, per accelerare la
per accelerare l'addestramento del modello e ridurre l'utilizzo
l'utilizzo della memoria. Eseguendo le operazioni computazionali intensive in bassa precisione e mantenendo una copia master di
pesi del modello in alta precisione,
Questo approccio consente di ottenere notevoli accelerazioni sull'hardware moderno, senza compromettere la qualità della
precisione o la stabilità della rete
rete finale. Consente a ricercatori e ingegneri di addestrare reti più grandi
reti neurali o di aumentare il
dimensione del lotto con gli stessi vincoli hardware
vincoli.
Come funziona la precisione mista
Il meccanismo centrale della precisione mista si basa sull'architettura dei moderni acceleratori, come quelli dotati di
NVIDIA Tensor Cores, che possono eseguire moltiplicazioni di matrici in
mezza precisione (FP16) molto più velocemente
di quelle in singola precisione standard (FP32). Il processo prevede generalmente tre fasi fondamentali:
-
Casting: Operazioni come
convoluzioni e le moltiplicazioni
vengono convertite in FP16. Questo riduce la larghezza di banda della memoria necessaria e velocizza il calcolo.
-
Manutenzione dei pesi master: Una copia master dei parametri del modello è conservata in FP32. Durante
retropropagazionei gradienti sono calcolati in FP16 ma vengono applicati ai pesi master in FP32. Questo preserva i piccoli aggiornamenti del gradiente
che altrimenti andrebbero persi a causa dell'intervallo limitato di FP16, evitando problemi quali
gradienti che svaniscono.
-
Scala delle perdite: Per garantire ulteriormente la stabilità numerica, il valore del parametro
funzione di perdita viene spesso moltiplicato
per un fattore di scala. Questo sposta i valori del gradiente in un intervallo che FP16 può rappresentare in modo più efficace, evitando errori di underflow prima di essere convertiti per l'aggiornamento dei pesi.
errori di underflow prima di essere riconvertiti per l'aggiornamento del peso.
Applicazioni nel mondo reale
La precisione mista è diventata una pratica standard in vari settori dell'intelligenza artificiale, grazie alla sua capacità di massimizzare l'efficienza dell'hardware.
massimizzare l'efficienza dell'hardware.
-
Formazione di modelli di visione all'avanguardia: Sviluppare prestazioni elevate
visione computerizzata ad alte prestazioni
ad alte prestazioni, come Ultralytics YOLO11prevede l'addestramento su insiemi di dati massicci come
COCO. La precisione mista consente di completare questi addestramenti in modo significativamente più rapido, permettendo un maggior numero di iterazioni di
regolazione dell'iperparametro e cicli di distribuzione più
cicli di distribuzione più rapidi.
-
Modelli linguistici di grandi dimensioni (LLM): La creazione di
modelli di base e
Modelli linguistici di grandi dimensioni
richiede l'elaborazione di terabyte di dati di testo. La precisione mista è fondamentale in questo caso, in quanto dimezza circa la memoria necessaria per le attivazioni.
necessaria per le attivazioni, consentendo ai modelli con miliardi di parametri di adattarsi ai cluster di
GPU.
Implementazione della precisione mista con Ultralytics
Il ultralytics semplifica l'uso della libreria Automatic Mixed Precision (AMP). Per impostazione predefinita, le
verifica la compatibilità dell'hardware e abilita AMP per garantire prestazioni ottimali.
from ultralytics import YOLO
# Load the YOLO11 model for training
model = YOLO("yolo11n.pt")
# Train using Automatic Mixed Precision (AMP)
# 'amp=True' is the default setting, ensuring faster training on supported GPUs
results = model.train(data="coco8.yaml", epochs=5, imgsz=640, amp=True)
Precisione mista e termini correlati
È utile distinguere la precisione mista da altri concetti di ottimizzazione e rappresentazione dei dati:
-
Vs. Mezza precisione: La mezza precisione pura (FP16)
precisione (FP16) memorizza e calcola tutto in formato 16 bit. Se da un lato questo massimizza la velocità, dall'altro spesso comporta
instabilità numerica e scarsa convergenza durante l'addestramento. La precisione mista attenua questo problema conservando una copia master FP32
per un aggiornamento stabile dei pesi.
-
Vs. Quantizzazione del modello:
La quantizzazione riduce ulteriormente la precisione, in genere convertendo i pesi in numeri interi (INT8) per ottimizzare la precisione.
la latenza dell'inferenza e le dimensioni del modello
dimensione del modello per l'implementazione su dispositivi di intelligenza artificiale dispositivi di intelligenza artificiale.
La precisione mista è principalmente un'ottimizzazione per l'addestramento che utilizza numeri in virgola mobile, mentre la quantizzazione è spesso applicata dopo l'addestramento per l'inferenza.
quantizzazione è spesso applicata dopo l'addestramento per l'inferenza.
-
Vs. Bfloat16: Brain Floating Point
(Bfloat16) è un formato alternativo a 16 bit sviluppato da Google. A differenza dello standard
IEEE 754 FP16, Bfloat16 mantiene lo stesso intervallo di
esponente di FP32, rendendolo più robusto contro l'underflow senza una scalatura aggressiva delle perdite. È comunemente usato
nella formazione a precisione mista su
TPU e sulle GPU più recenti.
Supportato da framework come PyTorch AMPla precisione mista rimane uno dei modi più efficaci per democratizzare l'accesso al deep learning ad alte prestazioni,
consentendo agli sviluppatori di addestrare modelli complessi su hardware accessibile.