大模型权重精度全解
FP32 vs FP16 vs BF16 vs FP8 vs INT4
从“用纳米尺去量卡车长度的算力浪费”,到“用最少比特锁住最高智慧 —— 为什么训练必选 BF16、推理狂飙 FP8/INT4,甚至演化出 1-bit 极限?”
每个数字占用 32 位(4 字节)。小数点后有 7 位有效数字,精度极高,但对大模型来说相当于“杀鸡用牛刀”,光存一个 70B 模型就要吃掉 280 GB 显存,显卡带宽不堪重负!
大模型具有极强的“抗噪鲁棒性”!BF16 保持了与 FP32 相同的动态范围却省下一半显存;FP8/INT4 让每个参数只需 1 字节甚至半字节,吞吐速度直接翻 4~8 倍!
大模型精度的三大硬核秘密
二进制底层结构、动态范围与量化魔法
1. 浮点数的解剖结构 (S + E + M)
任何浮点数都由三部分构成:
$$\text{Value} = (-1)^{\text{Sign}} \times 2^{\text{Exp} - \text{Bias}} \times (1 + \text{Mantissa})$$
• 指数位 (Exponent) 决定数字能有多大/多小(动态范围);
• 尾数位 (Mantissa) 决定数字有多精准(分辨率)。
2. 为什么大模型训练独爱 BF16?
大模型训练时梯度变化剧烈,FP16 只有 5 位指数位,极易发生下溢(Underflow 变0)或上溢(NaN 爆炸)。BF16 拥有与 FP32 完全一致的 8 位指数位,彻底消灭了训练过程中的梯度溢出崩溃!
3. 推理为什么要量化到 FP8 / INT4?
大模型推理是显存带宽受限(Memory Bound)任务。将权重从 16 位压缩到 4 位(INT4),GPU 搬运数据的速度瞬间翻 4 倍,显存砍掉 75%,千亿大模型才能在单台服务器上高并发响应。
📊 主流大模型精度全景技术规格表
| 精度格式 | 位宽 (Bits / 字节) | 结构 (符号+指数+尾数) | 70B 模型裸显存 | 核心应用场景 |
|---|---|---|---|---|
| FP32 (Single) | 32 bits (4 Bytes) | 1 + 8 + 23 | ~ 280 GB | 传统科学计算、模型优化器 Master Weights 累计 |
| FP16 (Half) | 16 bits (2 Bytes) | 1 + 5 + 10 | ~ 140 GB | 旧款 GPU (V100/T4) 推理与微调,需配合 Loss Scaling |
| BF16 (Bfloat16) | 16 bits (2 Bytes) | 1 + 8 + 7 | ~ 140 GB | 现代大模型预训练与微调的绝对工业标准 (A100/H100) |
| FP8 (E4M3 / E5M2) | 8 bits (1 Byte) | 1 + 4 + 3 或 1 + 5 + 2 | ~ 70 GB | DeepSeek-V3 / H100 原生训练与高速生产级推理 |
| INT4 / Q4 | 4 bits (0.5 Byte) | 整数量化 + Scale | ~ 35-38 GB | 端侧与个人电脑离线运行 70B 模型主流首选 |
| 1-bit (BitNet) | 1.58 bits ({-1, 0, 1}) | 三值量化 (Ternary) | < 15 GB | 下一代纯加法计算无乘法(Add-only)极速绿色 AI |
🎮 交互模拟器:不同精度对浮点数值的表示与显存损耗
选择不同格式,观察系统如何对同一个权重数值 $W = 0.123456789$ 进行底层二进制编码与硬件调度: