Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Migliorare 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.
Utilizzare bfloat16 in modo esplicito
Sebbene la conversione automatica dei formati nelle TPU ti consenta di evitare di pensare alla precisione numerica, puoi ottenere miglioramenti delle prestazioni eseguendo il casting esplicito dei valori su bfloat16. Esistono due motivi per eseguire il casting esplicito dei valori in bfloat16:
La memorizzazione dei valori in formato bfloat16 consente di risparmiare memoria on-chip, consentendo alle Cloud TPU di addestrare modelli più grandi o di utilizzare dimensioni batch più grandi.
Alcune operazioni sono legate alla larghezza di banda della memoria, il che significa che il tempo necessario per caricare i dati dalla memoria può rallentare il tempo complessivo impiegato per eseguire 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.
La conversione del formato da float32 a bfloat16 viene inserita automaticamente dal compilatore XLA. Su TPU, lo schema di arrotondamento nella conversione è
arrotondamento al numero pari più vicino
e overflow a inf. Inoltre, bfloat16 su Cloud TPU non supporta i valori subnormali, pertanto tutti i valori subnormali vengono azzerati 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 aggiunge 16 zeri ai bit della frazione. I valori speciali vengono 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.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-09-04 UTC."],[],[],null,["# Improve your model's performance with bfloat16\n==============================================\n\nBy default, TPUs perform\nmatrix multiplication operations with [`bfloat16`](https://en.wikipedia.org/wiki/Bfloat16_floating-point_format)\nvalues and accumulations with IEEE [`float32`](https://en.wikipedia.org/wiki/Single-precision_floating-point_format)\nvalues. Using reduced-precision floating point numbers decreases time to\nconvergence without losing accuracy.\n\nThe dynamic range of `bfloat16` and `float32` are equivalent. However, `bfloat16`\nuses half of the memory space. For more information about `bfloat16` performance,\nsee [A Study of BFLOAT16 for Deep Learning Training](https://arxiv.org/abs/1905.12322).\n\nUse bfloat16 explicitly\n-----------------------\n\nWhile automatic format conversion in TPUs lets you avoid thinking about numerical\nprecision, you can achieve performance improvements by explicitly casting values\nto `bfloat16`. There are two reasons to explicitly cast values to `bfloat16`:\n\n1. Storing values in `bfloat16` format saves on-chip memory, enabling Cloud TPUs\n to train larger models or use larger batch sizes.\n\n2. Some operations are memory-bandwidth-bound, which means the amount of time it\n takes to load data from memory can slow down the overall time spent performing\n the computation. Storing operands and outputs of those operations in `bfloat16`\n format reduces the amount of data that must be transferred, improving overall\n speed.\n\nTo get started, we recommend getting some experience with one of the\n[Cloud TPU reference models](/tpu/docs/tutorials/supported-models). After\nthat, the [profiling tools guide](/tpu/docs/profile-tpu-vm), and\n[troubleshooting guide](/tpu/docs/troubleshooting/troubleshooting) provide\nin-depth technical information to help you create and optimize machine learning\nmodels on your own.\n\n### Format conversion details\n\nThe format conversion from `float32` to `bfloat16` is automatically inserted by the\nXLA compiler. On TPU, the rounding scheme in the conversion is\n[round to nearest even](https://en.wikipedia.org/wiki/IEEE_754#Roundings_to_nearest)\nand overflow to `inf`. Also, the `bfloat16` on Cloud TPU does not support\nsubnormals, so all subnormals are flushed to zero during the conversion.\nSpecial values, such as `NaN` and `inf`, are preserved in the conversion.\n\nThe format conversion from `bfloat16` to `float32` is also automatically inserted\nby the XLA compiler. Since `float32` can represent all exact values in `bfloat16`,\nthe conversion pads 16 zeros in the mantissa bits. Special values are\npreserved in the conversion.\n\nCheckpoints obtained from a model trained on Cloud TPUs can be deployed on other\nhardware platforms (for example, inference or fine-tuning on CPUs or GPUs)\nwithout extensive manual conversions."]]