跳到主要内容
AI 丛编 量化 推理优化

量化基础:从 FP16 到 INT8

对称/非对称量化的数学形式,为什么 8-bit 推理能又快又省。

量化把浮点参数映射到低精度整数,收益有三:显存减半、带宽减半、 整数运算更快。代价是精度损失,需要仔细选择映射方式。

对称与非对称量化

flowchart LR
    A[FP16 权重] --> B{量化方案}
    B -->|对称| C["INT8: [-127, 127]"]
    B -->|非对称| D["INT8: [-128, 127]"]
    C --> E[反量化后推理]
    D --> E

对称量化假设零点为 0:

q=round ⁣(xs),s=maxx127q = \mathrm{round}\!\left(\frac{x}{s}\right),\qquad s = \frac{\max|x|}{127}

非对称量化引入零点 zz,能更好地利用不对称的数值分布:

q=round ⁣(xs)+z,s=xmaxxmin255q = \mathrm{round}\!\left(\frac{x}{s}\right) + z,\qquad s = \frac{x_{max} - x_{min}}{255}

常见精度等级

  • FP16 / BF16:训练与推理的默认选择;
  • INT8:激活和权重都量化,主流推理引擎(TensorRT、vLLM)支持;
  • INT4:显存再减半,通常配合分组量化补偿精度;
  • FP8:新一代硬件(H100 起)原生支持,训练推理两用。

实践中「全 INT8」未必最快:激活的离群值会让误差显著放大。 LLM.int8() 把离群维度保留 FP16、其余 INT8,兼顾精度与速度。

小结

量化是模型压缩的第一站:实现成本低、收益确定。后续的算子融合、 投机采样大多在量化的基础上继续叠加。

评论