在大模型(Large Language Models, LLMs)的训练与推理过程中,数值精度格式(Numerical Precision Format)是影响性能、显存、速度和模型质量的核心因素之一。随着模型规模从数十亿到数千亿参数,高效利用硬件资源变得至关重要。
以下是目前在大模型领域最常见、最实用的数值精度格式详解,涵盖其原理、优缺点及典型应用场景。
📊 一、主流数值精度格式总览
| 格式 | 全称 | 位宽 | 符号/指数/尾数 | 动态范围 | 精度 | 主要用途 |
|---|---|---|---|---|---|---|
| FP32 | IEEE 754 单精度浮点 | 32 bit | 1 / 8 / 23 | ±3.4×10³⁸ | 高 | 基准训练 |
| FP16 | IEEE 754 半精度浮点 | 16 bit | 1 / 5 / 10 | ±6.5×10⁴ | 中 | 推理、混合精度训练 |
| BF16 | Brain Floating Point | 16 bit | 1 / 8 / 7 | ≈ FP32 | 中低(但稳定) | 大模型训练首选 |
| INT8 | 8 位整数 | 8 bit | — | -128 ~ +127 | 低 | 推理量化 |
| INT4 | 4 位整数 | 4 bit | — | -8 ~ +7 | 极低 | 极致压缩(QLoRA、边缘部署) |
| NF4 | NormalFloat 4-bit | 4 bit | 量化专用 | 自适应 | 优于 INT4 | QLoRA 默认 |
💡 注:“尾数”决定精度,“指数”决定范围。BF16 牺牲尾数保指数,适合梯度计算;FP16 则相反。
🔍 二、逐项详解
1. FP32(Float32)
- 定义:标准 32 位浮点,科学计算基准。
- 特点:
- 精度高,训练稳定;
- 显存占用大(7B 模型 ≈ 28GB);
- 计算慢(无 Tensor Core 加速)。
- 用途:
- 小模型训练;
- 混合精度训练中的主权重副本(Master Weights)。
✅ 优点:可靠;❌ 缺点:资源浪费。
2. FP16(Float16)
- 定义:16 位浮点,广泛用于 GPU 加速。
- 特点:
- 显存减半,Tensor Core 加速显著;
- 易下溢(underflow):梯度接近 0 时变为 0,导致训练发散。
- 解决方案:
- AMP(Automatic Mixed Precision):
前向/反向用 FP16,权重更新用 FP32。
- AMP(Automatic Mixed Precision):
- 用途:
- 推理部署(TensorRT、ONNX Runtime);
- 消费级 GPU(如 RTX 4090)训练(需 AMP)。
⚠️ 不推荐单独用于大模型训练!
3. BF16(Bfloat16)
- 定义:Google 提出,保留 FP32 的指数位,仅压缩尾数。
- 特点:
- 动态范围 ≈ FP32 → 几乎不会下溢;
- 尾数仅 7 位 → 精度略低于 FP16,但训练更稳定;
- A100/H100/TPU 原生支持,速度接近 FP16。
- 用途:
- 大模型训练事实标准(Hugging Face、DeepSpeed 默认
bf16=True); - 高稳定性微调(如 LoRA、全量 FT)。
- 大模型训练事实标准(Hugging Face、DeepSpeed 默认
✅ 最佳平衡点:显存减半 + 训练稳定 + 硬件加速。
4. INT8(8-bit Integer)
- 定义:整数量化,将 FP32 权重映射到 -128~127。
- 技术:
- 后训练量化(PTQ):训练后校准;
- 量化感知训练(QAT):训练中模拟量化。
- 特点:
- 显存降至 1/4(7B ≈ 7GB);
- 需校准数据集避免精度崩塌;
- NVIDIA Turing+ 支持 INT8 Tensor Core。
- 用途:
- 服务器/边缘设备推理(如 Triton Inference Server);
- 对延迟敏感场景(如实时客服机器人)。
❌ 不可用于训练(梯度无法有效传播)。
5. INT4 / NF4(4-bit Quantization)
- INT4:传统 4 位整数,均匀分布,不适合神经网络权重(权重呈非均匀分布)。
- NF4(NormalFloat 4-bit):
- 专为神经网络权重设计,基于正态分布分位数分配码点;
- 在相同 bit 下比 INT4 信息损失更小;
- QLoRA 默认使用 NF4。
- 关键技术:
- 分组量化(Group-wise Quantization):每 128 个权重一组,独立 scale;
- 双重量化(Double Quantization):对 scale 再量化,省 0.5GB。
- 用途:
- QLoRA 微调(4-bit 加载 + LoRA 更新);
- 超低资源推理(手机、嵌入式设备)。
✅ QLoRA 核心:存储用 NF4,计算转 BF16 → 显存极低 + 质量不降。
🧪 三、不同任务下的精度选择建议
| 任务类型 | 推荐精度 | 说明 |
|---|---|---|
| 从头训练(Pretraining) | BF16 | A100/H100 必选;消费卡用 FP16+AMP |
| 全量微调(Full FT) | BF16 | 保证收敛性 |
| LoRA 微调 | BF16 或 FP16 | LoRA 本身轻量,精度影响小 |
| QLoRA 微调 | NF4(存储) + BF16(计算) | 单卡 24GB 可跑 70B |
| 高精度推理 | FP16 | 平衡速度与质量 |
| 低延迟推理 | INT8 / INT4 | 需校准,适用于固定 prompt 场景 |
| 边缘设备部署 | INT4(AWQ/GPTQ) | 结合 AWQ 等算法提升精度 |
🖥️ 四、硬件支持情况(2025)
| 硬件 | FP16 | BF16 | INT8 | INT4 |
|---|---|---|---|---|
| NVIDIA A100 | ✅ | ✅ | ✅ | ⚠️(软件模拟) |
| NVIDIA H100 | ✅ | ✅ | ✅ | ✅(FP4 Tensor Core) |
| RTX 4090 | ✅ | ⚠️(无原生,可模拟) | ✅ | ⚠️(bitsandbytes 软件量化) |
| Google TPU v4/v5 | ✅ | ✅ | ✅ | ✅ |
| 华为 Ascend 910B | ✅ | ✅ | ✅ | ✅(自研量化) |
💡 RTX 4090 虽不原生支持 BF16,但 PyTorch 可用 FP16 模拟,QLoRA 仍可运行。
✅ 五、总结:精度选择口诀
训练看稳定,BF16 是首选;
推理想速度,FP16 够均衡;
显存不够用,QLoRA 上 NF4;
边缘要部署,INT4 加校准。
🔮 未来趋势
- FP8(8-bit 浮点):NVIDIA H100 已支持,兼顾范围与精度;
- 动态量化:根据层重要性自动分配 bit(如重要层用 INT8,其余用 INT4);
- 训练即量化(Train-time Quantization):端到端低精度训练成为可能。
如需我提供:
- FP16 vs BF16 训练 loss 对比图
- QLoRA 中 NF4 量化代码实现细节
- 如何在 RTX 4090 上启用 BF16 模拟



