AIで扱う浮動小数点データ(メモ)
AIで扱う浮動小数点データに関するメモです。
趣味でローカル環境でのAIの利用として、LM StudioやComfyUIを使って遊んでいます。
限られたリソース(GPUの性能、VRAM、RAM、モデルを保存するSSD)で、LLMを使う際、
モデルのパラメータの量子化関連で、浮動小数点の種類を明確に認識する必要があります。
浮動小数点ついて、現時点でAIで使われる種類についてまとめててみました。
あくまでも、パソコンでLLMを扱う場合のデータに限定しています。
符号部(S:1ビット)と指数部(E)と仮数部(F)で構成される。規格としてIEEE方式(IEEE 754 形式)がある。
| 種類 | 名称(精度) | 補足説明 | 特記事項 |
| fp32 | 単精度浮動小数点(E8M23) | 表現できる数値の範囲が非常に広い | |
| fp16 | 半精度浮動小数点(E5M10) | 表現できる数値の範囲(最大値と最小値の幅)が狭いのが弱点 | |
| bf16 | bfloat16(E8M7) | fp32と指数部が同等で表現できる数値の範囲が広く、学習時の勾配爆発や消失を防ぎやすい。AIの学習に好んで使われる | |
| fp8 | 8ビット浮動小数点(E5M2) | 表現できる数値範囲が非常に狭い | NVIDIAの一部GPUのみ |
| fp4 | 4ビット浮動小数点 NVFP4 (E2M1) | 表せる数値は16通りしかない。RTX 50xx | NVIDIAの一部GPUのみ |
機械学習でfp32とfp16は精度としては、ほとんど差がないそうです。
ビット数が少ないほど高速演算とメモリ消費が抑えられるができる反面、精度が悪化します。その悪化を抑える工夫は色々とあるようです。

最近のコメント