test
gantt
title Quantization Timeline
dateFormat YYYY-MM-DD
tickInterval 12month
axisFormat %Y
section OCP / NVIDIA
FP16 : 2012-01-01, 2026-05-24
BF16 : 2018-08-01, 2026-05-24
FP8 : 2022-09-01, 2026-05-24
FP8_scaled : 2022-09-01, 2026-05-24
MXFP8 : 2023-10-01, 2026-05-24
NVFP4 : 2025-06-24, 2026-05-24
section llama.cpp
GGML : 2023-03-01, 2026-05-24
GGML (K_quants) : 2023-06-06, 2026-05-24
GGUF : 2023-08-21, 2026-05-24
- FP16(半精度):FP32(単精度)の半分の容量で高速、それなりの精度
- BF16:FP16 より仮数部が少ない代わりに指数部が広く、ダイナミックレンジが大きいため学習が安定
- FP8:FP16 の半分の容量でさらに高速化、精度が低下
- FP8_scaled:テンソル毎に絶対最大値でスケーリングすることで精度の低下を抑える
- MXFP8:テンソルを32個のデータずつのブロックに分けてスケーリング、FP8_scaled より精度が良い
- NVFP4:FP8 の半分の容量、高速だが精度はさらに低下。16要素ブロック×FP8スケール+FP32グローバルスケールの2段階スケーリングで精度低下を抑える
- GGML(Q8_0):テンソルを32要素ずつのブロックに分け、ブロックごとに FP32 スケール値を保持して int8 に量子化
- GGML(k_quants):256要素のスーパーブロックを32要素のサブブロック8個に分割。Q4_K 等の type-1 は min+scale の非対称量子化、特に低ビット(Q4_K_M・Q5_K_M)での精度が向上
- GGUF:GGML を改良した後継フォーマット
| 符号 | 指数部 | 仮数部 | 有効桁数 | 精度 | |
|---|---|---|---|---|---|
| FP32 | 1bit | 8bit | 23bit | 6~7桁 | ◎ |
| FP16 | 1bit | 5bit | 10bit | 3~4桁 | 〇 |
| BF16 | 1bit | 8bit | 7bit | 3桁 | 〇 |
| FP8(e4m3) | 1bit | 4bit | 3bit | 1~2桁 | △ |
| FP8(e5m2) | 1bit | 5bit | 2bit | 1~2桁 | △ |
| FP4 | 1bit | 2bit | 1bit | 1桁未満 | × |
| FP32 | FP16 | BF16 | FP8 | MXFP8 | FP4 | |
|---|---|---|---|---|---|---|
| NVIDIA RTX5000シリーズ(2025~) | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 |
| NVIDIA RTX4000シリーズ(2022~) | 〇 | 〇 | 〇 | 〇 | × | × |
| NVIDIA RTX3000シリーズ(2020~) | 〇 | 〇 | 〇 | × | × | × |
| NVIDIA RTX2000シリーズ(2018~) | 〇 | 〇 | × | × | × | × |
| NVIDIA GTX1000シリーズ(2016~) | 〇 | △ | × | × | × | × |
| AMD Radeon | 〇 | △〜〇 | ×〜〇 | × | × | × |
| Intel Arc | 〇 | 〇 | 〇 | × | × | × |