FP8
FP8(えふぴーえいと)とは、ARMとIntelとNVIDIAの3社が共同で仕様を策定した「8ビットの浮動小数点数」です。ホワイトペーパーでは「reduced precision floating-point」となっているので日本語訳は「低精度浮動小数点数」でいいと思う。
主にNVIDIAのHopperアーキテクチャ以降(H100など)でサポートされ、従来のFP16/BF16と比較して約2倍の処理速度を実現し、大規模言語モデル(LLM)や生成AIの学習・推論を高速化します。
形式[編集 | ソースを編集]
FP8には指数Eと仮数Mのビット数が異なる2種類の形式がある。
E5M2[編集 | ソースを編集]
- 符号ビット: 1ビット
- 指数部の幅: 5ビット
- 仮数部の幅: 2ビット
E5M2は「指数5ビット」「仮数2ビット」の形式である。IEEE 754の16ビット形式である「FP16」の仮数部を10ビットから2ビットにしたものとなっている。「FP32とbfloat16」の関係と同じく「FP16とFP8は互換性がある」ということらしい。FP16で書かれたソースコードを単純に文字列置換するだけで使えるのが利点らしい。E5M2は「勾配テンソル」に最適らしいぞ。
E4M3[編集 | ソースを編集]
- 符号ビット: 1ビット
- 指数部の幅: 4ビット
- 仮数部の幅: 3ビット
E4M3はE5M2よりダイナミックレンジが広い。E4M3は「重みテンソル」および「活性化テンソル」に最適らしいぞ。
主な対応ハードウェア[編集 | ソースを編集]
NVIDIA[編集 | ソースを編集]
- 第4世代Tensorコア
- NVIDIA H100, H200
- NVIDIA L4
- RTX 6000, 4500, 4000
- GeForce RTX 40シリーズ
Intel[編集 | ソースを編集]
- Intel Gaudi 3
- Intel Xeon の Intel AMX
ARM[編集 | ソースを編集]
- Armv9.2-A のSME (Scalable Matrix Extension)
AMD[編集 | ソースを編集]
- RDNA 4
- Radeon RX 9000シリーズ