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

株式会社 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)