Open1

FP16・FP32のとは何なのか?FP〇〇とは?

二宮 貫(Kan Ninomiya)二宮 貫(Kan Ninomiya)

株式会社 FP16 ― 社名の由来

FP16 Inc. は「FP16 (16 bit floating‑point) の“軽さと速さ”をサービス開発にも宿す」という理念から生まれました。
「最小のリソースで最大のアウトプットを」を合言葉に、16 bit フォーマットの効率性・高速性を企業文化へインストールしています。


TL;DR

フォーマット ビット数 メモリ (バイト) 10 進で表せる有効桁 代表的な用途
FP16
(half‑precision / float16)
16 2 約 3 〜 4 桁 モバイル GPU、ゲームシェーダ、機械学習の推論
FP32
(single‑precision / float32)
32 4 約 7 桁 デスクトップ GPU、科学技術計算、機械学習の学習

1. FP16 とは?

  • 正式には IEEE 754 half‑precision。NVIDIA と Microsoft が DirectX 9 世代で GPU に導入し、現在は各社 GPU・NPU で標準装備。
  • メリット
    • FP32 の ½ のメモリで済む → キャッシュ効率アップ
    • 同一帯域で 計算スループット 2 倍 (もしくはそれ以上)
  • デメリット
    • 有効桁が少なく、桁あふれや丸め誤差が出やすい
  • 内訳 (16 ビット)
    • 符号 1 bit / 指数 5 bit / 仮数 10 bit
  • 3D ゲームではピクセルシェーダ、AI では推論フェーズの定番フォーマット。

2. FP32 とは?

  • IEEE 754 single‑precision (float32)。多くの CPU / GPU でネイティブ対応。
  • メリット
    • 約 7 桁の有効桁で、物理シミュレーションや学習時の勾配計算など 高精度を要求する処理に適する
  • デメリット
    • メモリと帯域コストは FP16 の 2 倍
  • 内訳 (32 ビット)
    • 符号 1 bit / 指数 8 bit / 仮数 23 bit

3. ビット構成の比較

項目 FP16 FP32
符号 1 bit 1 bit
指数 5 bit (バイアス 15) 8 bit (バイアス 127)
仮数 10 bit 23 bit
表せる最大値 ≈ 6.55 × 10<sup>4</sup> ≈ 3.40 × 10<sup>38</sup>
最小正規化値 ≈ 6.10 × 10<sup>‑5</sup> ≈ 1.18 × 10<sup>‑38</sup>

4. “float16” や “float8” との混同に注意

呼称 実体 解説
FP16 / float16 / half 同じもの 16 bit IEEE 754 half‑precision
float8 (PostgreSQL) FP64 (double) PostgreSQL の “8” は「8 バイト = 64 bit」を指す。IEEE 754 double と同義
FP8 (AI アクセラレータ) 8 bit 浮動小数点 (研究中) 1 bit 符号 + 4 bit 指数 + 3 bit 仮数 など。PostgreSQL の float8 とは無関係

5. いつどちらを使う?

シチュエーション 推奨フォーマット 理由
画像生成/推論サーバーでメモリを節約したい FP16 同じ VRAM で 2 倍のバッチサイズ
シミュレーション精度が最優先 FP32 数値誤差が積み上がりにくい
最新 GPU (Ada / RDNA3) で高速マトリクス演算 FP16 + TensorCore 相当 ハードウェアアクセラレーションが効く
学習中だが勾配スケーリングで誤差を抑える 混合精度 (FP16+FP32) PyTorch の torch.cuda.amp 等が代表例

まとめ

  • FP16 → メモリと速度最優先。推論・リアルタイム処理に強み。
  • FP32 → 精度最優先。学習・科学技術計算のデフォルト。
  • 呼称が似ていても float8 (PostgreSQL) は FP64、FP8 は研究段階の 8 bit 浮動小数点 ― 文脈で判別しよう!

(最終更新 : 2025‑05‑08)