Migliora le prestazioni del modello con bfloat16

Per impostazione predefinita, le TPU eseguono operazioni di moltiplicazione di matrici con valori bfloat16 e accumulazioni con valori IEEE float32. L'utilizzo di numeri in virgola mobile con precisione ridotta riduce il tempo di convergenza senza perdere precisione.

L'intervallo dinamico di bfloat16 e float32 è equivalente. Tuttavia, bfloat16 utilizza metà dello spazio di memoria. Per ulteriori informazioni sul rendimento di bfloat16, consulta Uno studio su BFLOAT16 per l'addestramento del deep learning.

Usa bfloat16 in modo esplicito

Mentre la conversione automatica del formato nelle TPU consente di evitare di pensare a precisione, puoi ottenere miglioramenti delle prestazioni trasmettendo esplicitamente i valori a bfloat16. Ci sono due motivi per trasmettere esplicitamente i valori a bfloat16:

  1. L'archiviazione dei valori in formato bfloat16 consente di risparmiare memoria on-chip, abilitando le Cloud TPU per addestrare modelli più grandi o utilizzare dimensioni dei batch più grandi.

  2. Alcune operazioni sono legate alla larghezza di banda della memoria, il che significa la quantità di tempo per caricare i dati dalla memoria può rallentare il tempo complessivo impiegato per l'esecuzione per il calcolo. L'archiviazione degli operandi e delle uscite di queste operazioni in formato bfloat16 riduce la quantità di dati da trasferire, migliorando la velocità complessiva.

Per iniziare, ti consigliamo di acquisire un po' di esperienza con una delle Modelli di riferimento di Cloud TPU. Dopo il giorno che la guida agli strumenti di profilazione guida alla risoluzione dei problemi fornisce informazioni tecniche approfondite per aiutarti a creare e ottimizzare il machine learning modelli personalizzati.

Dettagli sulla conversione del formato

La conversione del formato da float32 a bfloat16 viene inserita automaticamente dal compilatore XLA. Su TPU, lo schema di arrotondamento nella conversione è intorno al punto pari più vicino e overflow in inf. Inoltre, bfloat16 su Cloud TPU non supporta tutte le subnormali, in modo che tutte le subnormali vengano azzerate durante la conversione. I valori speciali, come NaN e inf, vengono conservati nella conversione.

Anche la conversione del formato da bfloat16 a float32 viene inserita automaticamente dal compilatore XLA. Poiché float32 può rappresentare tutti i valori esatti in bfloat16, la conversione inserisce 16 zeri nei bit di mantissa. I valori speciali sono conservati nella conversione.

I checkpoint ottenuti da un modello addestrato su Cloud TPU possono essere implementati su altre piattaforme hardware (ad esempio, inferenza o ottimizzazione fine su CPU o GPU) senza conversioni manuali estese.