FLOPS, Floating Point Operations Per Second
FLOPS = Floating Point Operations Per Second
GPU 每秒可以做多少次浮點數運算(加減乘除)
1 FLOP = 一次浮點數計算(例如:3.14 × 2.71)
FLOPS = 每秒能做幾個這樣的計算
深度學習的核心是大量矩陣乘法 → 全部是浮點數運算
→ FLOPS 就是衡量 GPU 算力的主要指標
常見單位
| 單位 | 全名 | 量級 |
|---|---|---|
| GFLOPS | GigaFLOPS | 每秒 10⁹ 次 |
| TFLOPS | TeraFLOPS | 每秒 10¹² 次(現代 AI GPU 的標準單位) |
| PFLOPS | PetaFLOPS | 每秒 10¹⁵ 次 |
訓練 GPT-3(1750億參數)需要數百 PFLOPS 的計算量
參考:FLOPS Performance of NVIDIA H100 GPU — Jarvis Labs
為什麼要看 FLOPS?
FLOPS 提供了一個跟硬體無關的方式來衡量模型的計算需求:
模型大小 × 訓練 token 數
↓
所需 FLOPs(複數,代表總運算量)
↓
換算成需要多少 GPU × 多少時間
注意區分:
- FLOP(單數)= 一次運算,或訓練一個模型的總運算量
- FLOPS(複數)= 每秒運算次數,硬體的吞吐量
注意事項一:Dense vs Sparse FLOPS
看規格表時,同一顆 GPU 可能會列出兩種數字:
| 類型 | 意思 |
|---|---|
| Dense FLOPS | 所有數值都參與計算(真實情境) |
| Sparse FLOPS | 有些值是 0 可以跳過,理論上快 2× |
NVIDIA Ampere 架構(A100)引入 2:4 Structured Sparsity:
每 4 個值中有 2 個為 0 → Sparse Tensor Core 跳過這些計算
→ 理論吞吐量翻倍,但需要模型事先做 sparsity 訓練才有效
廣告數字常用 Sparse FLOPS,實際訓練通常跑 Dense
參考:Accelerating Inference with Sparsity — NVIDIA Developer Blog
注意事項二:精度(Precision)越低,FLOPS 越高
浮點數格式越小 → 每個數值佔的 bit 越少 → 同樣硬體一次能處理更多
| 精度 | 位元數 | 特性 |
|---|---|---|
| FP32 | 32 bit | 訓練基準,精度最高 |
| BF16 | 16 bit | 指數範圍同 FP32,訓練友好 |
| FP16 | 16 bit | 精度高但數值範圍較小 |
| FP8 | 8 bit | 推論加速,吞吐量最高 |
H100 實際算力數字:
- FP8:989 TFLOPS(Dense)
- FP16/BF16:495 TFLOPS(Dense)
- FP32:約 67 TFLOPS
→ FP8 大約是 BF16 的 2 倍吞吐量
參考:FP16, BF16, FP8 Mixed Precision Guide — RunPod
比較 GPU 時的原則
一定要在相同 precision 下比較:
✅ H100 FP16 vs A100 FP16
✅ H100 BF16 vs A100 BF16
❌ H100 FP8 vs A100 FP16 ← 不公平,精度不同
❌ Sparse vs Dense ← 不公平,計算方式不同
A100 沒有 FP8 Tensor Core,H100 才有
→ 兩者比 FP8 根本是比不同東西
實際案例:H100 vs A100
| 規格 | A100 80GB | H100 80GB |
|---|---|---|
| FP16 Dense | 312 TFLOPS | 495 TFLOPS |
| BF16 Dense | 312 TFLOPS | 495 TFLOPS |
| FP8 Dense | ❌ 不支援 | 989 TFLOPS |
| FP16 Sparse | 624 TFLOPS | 989 TFLOPS |
| 記憶體頻寬 | 2 TB/s | 3.35 TB/s |
H100 的 FP16 Dense 約是 A100 的 1.6×
FLOPS = GPU 每秒浮點運算次數
↓
看規格時要注意:
1. Dense 還是 Sparse?(廣告常用 Sparse)
2. 哪種精度?(FP8 > FP16 ≈ BF16 >> FP32)
↓
比較 GPU 算力
→ 同 precision、同 Dense/Sparse 才公平