知识库 / 大模型量化

大模型量化问题地图

大模型量化的核心问题是如何在降精度省显存的同时控制量化噪声,以及何时用校准式 PTQ、何时回到 QAT 或 QLoRA 训练。

Overview

大模型量化不是单一算法,而是一组互相耦合的选择:把哪些张量降到多少比特、用什么映射与粒度、误差在校准阶段还是训练阶段消化、以及最终服务场景是 GPU 推理、端侧部署、低显存微调,还是大规模预训练里的 FP8 混合精度。

本 topic 先回答六类问题:数值如何映射、PTQ 与 QAT 的流程边界、LLM 上主流 INT4 权重量化、后训练里的 QLoRA、训练期 FP8 recipe,以及推理侧 MXFP4 / microscaling FP4。

问题地图

精度怎么降下去

量化把浮点范围映射到更少的离散档位,引入 scale / zero-point,并在 per-tensor、per-channel、per-group 等粒度上折中精度与元数据开销。INT4 还常依赖 packing;FP8 则依赖新硬件;推理 MXFP4 则用 E2M1 + block-32 scale。详见 线性量化基础

误差在什么时候消化

PTQ 在训完后用校准数据估参数或做层内补偿;QAT 在训练前向插入伪量化,用 STE 让模型适应量化噪声。生产推理多走 PTQ;低比特或精度敏感时才回到 QAT。详见 PTQ 与 QAT

LLM INT4 为什么不只是四舍五入

朴素 RTN 在 INT4 上常崩。GPTQ 用 Hessian 做误差补偿;AWQ 保护高激活幅度通道。常见配方是 W4A16,并常跳过 lm_head。详见 GPTQ 与 AWQ

后训练怎么和量化一起用

真正的 QAT 是 prepare → finetune → convert。更常见的低显存微调是 QLoRA:NF4 冻结基座 + 高精 LoRA adapter,不是经典 QAT。详见 LLM 上的 QATQLoRA

大规模训练里的 FP8 怎么做

预训练 FP8 是 TE/MCore recipe:加速 linear 的三个 GEMM,并处理 Hopper/Blackwell layout、primary weights 与 TP/EP 通信。它与推理 FP8 PTQ 不是同一条流水线。详见 FP8 训练 Recipe

推理侧 MXFP4 解决什么

当权重以 MXFP4(E2M1 + 每 32 元一块 scale)交付时,首要问题是单卡显存能否装下,以及 GEMM 是否有感知 block scale 的 kernel;它与校准式 INT4 PTQ、训练期 FP8/MXFP8 都不是同一条线。详见 MXFP4 推理量化

共同主张

  • 量化的主收益首先是显存与带宽,不一定等于算力加速;weight-only 场景尤其如此。
  • 对多数 7B+ 服务端 INT4 推理,校准式 PTQ(尤其 AWQ / GPTQ)已够用。
  • QAT 在更低比特或端侧 8da4w 等设定上能显著回收精度,但训练成本更高。
  • QLoRA 解决的是「训练时塞得下基座」,与「导出可部署量化权重」不是同一条流水线。
  • FP8 训练的显存/通信收益取决于 recipe 与是否启用 FP8 primary weights,不能默认减半。
  • MXFP4 的落地取决于专用 kernel 与运行环境;不满足时可能 fallback 到约 4× 显存的 BF16 路径。

See Also