Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Meningkatkan performa model dengan bfloat16
Secara default, TPU melakukan
operasi perkalian matriks dengan nilai bfloat16
dan akumulasi dengan nilai float32
IEEE. Menggunakan bilangan floating point presisi rendah akan mengurangi waktu untuk
konvergensi tanpa kehilangan akurasi.
Rentang dinamis bfloat16 dan float32 setara. Namun, bfloat16
menggunakan setengah ruang memori. Untuk mengetahui informasi selengkapnya tentang performa bfloat16,
lihat Studi BFLOAT16 untuk Pelatihan Deep Learning.
Menggunakan bfloat16 secara eksplisit
Meskipun konversi format otomatis di TPU memungkinkan Anda tidak perlu memikirkan presisi
numerik, Anda dapat mencapai peningkatan performa dengan secara eksplisit mentransmisikan nilai
ke bfloat16. Ada dua alasan untuk secara eksplisit mentransmisikan nilai ke bfloat16:
Menyimpan nilai dalam format bfloat16 akan menghemat memori di chip, sehingga Cloud TPU dapat melatih model yang lebih besar atau menggunakan ukuran batch yang lebih besar.
Beberapa operasi dibatasi bandwidth memori, yang berarti jumlah waktu
yang diperlukan untuk memuat data dari memori dapat memperlambat keseluruhan waktu yang dihabiskan untuk melakukan
komputasi. Menyimpan operand dan output operasi tersebut dalam format bfloat16
akan mengurangi jumlah data yang harus ditransfer, sehingga meningkatkan kecepatan
keseluruhan.
Konversi format dari float32 ke bfloat16 disisipkan secara otomatis oleh
compiler XLA. Di TPU, skema pembulatan dalam konversi adalah
bulatkan ke bilangan genap terdekat
dan overflow ke inf. Selain itu, bfloat16 di Cloud TPU tidak mendukung
subnormal, sehingga semua subnormal dihapus ke nol selama konversi.
Nilai khusus, seperti NaN dan inf, dipertahankan dalam konversi.
Konversi format dari bfloat16 ke float32 juga otomatis disisipkan
oleh compiler XLA. Karena float32 dapat mewakili semua nilai persis dalam bfloat16,
konversi akan menambahkan 16 angka nol di bit mantisa. Nilai khusus
akan dipertahankan dalam konversi.
Titik pemeriksaan yang diperoleh dari model yang dilatih di Cloud TPU dapat di-deploy di platform hardware lainnya (misalnya, inferensi atau penyesuaian di CPU atau GPU) tanpa konversi manual yang ekstensif.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-08-18 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."]]