bfloat16
Google BrainがTPU向けに考案した16ビット浮動小数点形式。IEEE 754の32ビット形式から仮数部の下位16ビットを切り落としただけのものだ。
残るのは指数部8ビット(float32とまったく同じ範囲)と仮数部7ビットで、精度はごく粗い。間違いのように聞こえるが、ニューラルネットワークが本当に必要とするものを考えれば筋が通る。勾配は桁違いに広い範囲に分布するが、有効桁数はさほど要らない。標準のfp16は指数部が5ビットしかなく、学習中にオーバーフローやアンダーフローを起こすため、ロススケーリングが欠かせない。bfloat16ならその必要がなく、float32との変換も単なるビットの切り捨てで済む。TPU、Ampere以降のNvidia、AMD、新しめのx86がサポートしており、学習用の標準形式になった。推論ではさらにfp8やint4へと小型化が進んでいる。