详细解释
量化(Quantization) 一句话:用更少的位数来存和算权重/激活,把一张卡能跑的模型大小翻 2 至 4 倍。 原始 70B Llama 用 BF16 存要 140G,得两张 A100-80G 才能放下(还是差 20G 需要 CPU 卸载)。但做了 4bit AWQ 量化 后只需要 35G 显存 —— 一张 4090 24G + 一部分 offload 到 CPU swap 就能跑,或者两张 3090 24G 跑舒服,单次推理成本砍到原来的 1/3 到 1/5,对中小企业是决定性技术。
量化不是”把所有数字统统砍掉后几位”那么暴力,它分为两大流派、2023-2024 五年出现了五代代表算法。
两大流派:权重量化 vs 权重量化+激活量化
- Weight-only 量化(只量化权重,不量化激活):
- 代表算法:GPTQ、AWQ、GGUF(llama.cpp)、GPTQ-INT4
- 实际落地占比 2025 年约 80%。因为只量化权重,推理时每次从 HBM 拉 4bit 权重上来 → 反量化回 BF16 再和 BF16 激活做矩阵乘。精度几乎无损(< 0.5% 下降),实现最简单,兼容性最好。
- Weight + Activation 双量化(W8A8 / W4A8):
- 代表:NVIDIA FP8、SmoothQuant、GPTQ-INT8、QLoRA 的 INT4 weight + FP8 act
- 能把矩阵乘整体搬到 INT8 / FP8 Tensor Core 上跑,不仅省显存还能加速(吞吐量 ×1.5 到 ×2)。但实现难、精度掉得更猛、不是所有算子都支持。2025 NVIDIA Blackwell GPU + FP8 原生之后才开始放量。
五代主流量化算法发展史
| 算法 | 提出年份 | 位宽 | 精度下降 | 速度 | 生态 & 部署建议 |
|---|---|---|---|---|---|
| INT8 朴素 Post-Training (HuggingFace bitsandbytes Linear8bitLt) | 2022 | W8A8(混合) | -2%(小模型) | 慢(反量化成本高) | 不推荐了,历史产物 |
| GPTQ(Generative PTQ) | 2023 IST 论文 | 权重量化(INT4/3) | -0.3%(4bit) | 快(推理时加载格式友好) | 如果是 2023 年的老模型就用 GPTQ,AutoGPTQ 生态庞大;新模型直接 AWQ |
| AWQ(Activation-aware Weight Quantization) | 2023 MIT / 2023 NeurIPS | 权重量化(INT4) | -0.1%(接近无损!) | 快 + 显存占用最低 | 2025 新模型 4bit 首选,vLLM / SGLang / llama.cpp 原生支持 |
| GGUF (llama.cpp q4_k_m / q5_k_m) | 2023 community(ggerganov) | 4/5/6/8 bit 多种 K-quants | -0.2%(q4_K_M) | CPU 推理最快、GPU 也能 offload | Mac / CPU / 边缘设备首选,消费级玩家生态 |
| FP8(E4M3 / E5M2)H100/H200/GB200 原生硬件支持 | 2022 H100 硬件首发 | FP8 per-tensor / per-channel | -0.1% 几乎无损 | 吞吐量 ×1.8(TensorCore 直接算) | 高端生产集群首选:H100 全上 FP8,不用 INT4,省钱又快 |
我的模型该选哪种量化?一张决策表
把 2025 年最常见的 4 个部署场景 + 推荐量化直接给你:
| 部署场景 | GPU 环境 | 推荐模型规模 | 推荐量化 | 为什么 |
|---|---|---|---|---|
| 在线生产 API 集群(SLA ≥ 99.9%) | H100 80G × N / Blackwell GB200 | 70B / 110B | FP8 原生(或 Mixtral 专家 FP8) | 精度 -0.1%,吞吐翻倍,SLA 最高 |
| 中小企业在线 API / 私有云 | A100-80G 或 L40S × 2-8 | 32B ~ 72B | AWQ 4bit + vLLM | 显存缩 3.5 倍;吞吐只降 5%;单 A100 能跑 72B 4bit |
| 单卡玩家本地推理 / 离线批处理 | RTX 4090 24G / 3090Ti | 7B ~ 34B | AWQ 4bit 或 GGUF q5_K_M | AWQ vLLM 快;GGUF 灵活;两个都能跑 34B 4bit 在 24G 上 |
| MacBook / 无显卡本地小模型 | Apple Silicon M2/M3 Pro | 3B ~ 14B | GGUF q4_K_M (Metal) | llama.cpp 对 M 系列 NEON + Metal 优化神了;3B 能跑 30 tok/s 用户体验流畅 |
| QLoRA 微调(消费卡训 70B) | RTX 4090 24G × 2 | 70B(Qwen/Llama) | QLoRA INT4 (bitsandbytes NF4) + 梯度检查点 | 这是 QLoRA 的本职,不是推理;推理导出后再选 AWQ/GGUF |
| 移动端 / 边缘盒子(Raspberry Pi / RK3588) | ARM NPU 10W 功耗 | 1B ~ 3B | GGUF q4_K_M(ARM NEON) / 或厂商 NCNN INT4 | 选尽可能小的模型(TinyLlama 1.1B / Qwen 1.8B);q4_K_M 能跑 5 tok/s 能当离线小助手 |
关于 AWQ 版本升级:2024 Q4 出了 AWQ v2 + AutoAWQ 0.3.x,修复了老 AWQ 对 MoE、对 Qwen2 架构的校准 bug,精度比老版再高 0.2 到 0.4 个百分点。如果 HuggingFace 上下载别人的 AWQ 权重,一定要看 README 是用的哪个 AutoAWQ 版本量化的,避免踩老 bug。
量化精度下降主要发生在哪?如何规避
量化后最容易掉分的不是”一般任务选择题”(MMLU 能维持),而是长推理链、长生成、小数敏感的数学、长 Context 检索。三条规避经验:
- 别为了省显存强上 3bit:4bit 是 精度/速度/显存 甜点;3bit(GPTQ-3bit / GGUF q3)精度掉 2-3 个百分点,MoE 模型甚至能掉 10 分,不值得。
- RAG 长上下文量化时,Context 长度别超校准集的 2 倍:AWQ/GPTQ 量化时都有一个 calibration set(通常是 128 条维基百科 / c4 2048 token 长度);如果线上你给它塞 16k Token,最后那 14k 位置激活数值分布和校准集差很多,量化误差会爆炸。应对:做
calibration set 也用同长上下文的 c4/enron/books 数据 + 2048 至 8192 段混采校准。 - 用 LoRA 做量化适配微调:对”量化后某个具体业务(比如你们的客服 SFT)掉分 3 分”这类情况,拿 500-2000 条你们自己的 SFT 数据,在量化权重上再做 1 epoch 小 LR QLoRA,叫 “Quantization-Aware Adapter”——通常能把丢失的 3 分里捞回 2.5 分,成本只需要花 1 小时。
唯元智创 的推理集群默认 70B 系列都用 FP8 + 4bit AWQ 双层 fallback:冷流量(< 100 req/min)跑 AWQ 省成本;热高峰(>2000 req/min)自动切 FP8 集群吃吞吐,客户控制台看的是同一个模型 ID,不用自己管路由。