BFloat16

Brain Floating Point 16

BFloat16(Brain Floating Point 16、BF16)とは、Googleが開発した16ビットの浮動小数点数フォーマットです。FP32と同じ8ビットの指数部を持つためダイナミックレンジが広く、ディープラーニングの学習においてFP16よりも数値的に安定した混合精度演算が可能です。

BFloat16の数値フォーマット

BFloat16は符号1ビット、指数部8ビット、仮数部7ビットで構成されます。FP16は符号1ビット、指数部5ビット、仮数部10ビットです。BFloat16は仮数部がFP16より短く精度は若干低いですが、指数部がFP32と同じ8ビットのため、表現できる数値の範囲(ダイナミックレンジ)がFP32とほぼ同等です。

学習への適性

ディープラーニングの学習では、勾配の値が非常に小さくなることがあり、FP16ではアンダーフロー(値がゼロに丸められる)が発生しやすいです。BFloat16は広いダイナミックレンジにより、この問題が起きにくいため、損失スケーリングなしでも安定した学習が可能です。これが実装の簡便さにつながっています。

ハードウェアサポート

Google TPU、NVIDIA A100以降のGPU(Ampere、Hopper、Blackwell)、Intel Xeon(AMX)、AMD Instinctなど、主要なAIハードウェアがBFloat16をネイティブサポートしています。PyTorch、TensorFlow、JAXなどの深層学習フレームワークでも標準的にBFloat16がサポートされ、大規模モデルの学習で広く使用されています。