大语言模型量化技术速览

📌 一句话理解

量化 = 对模型做有损压缩:降低权重数值的存储精度(如 16-bit → 4-bit),换取更小的体积和更快的推理,代价是输出质量轻微下降。


一、量化即压缩

类比图片压缩:

图片世界 LLM 世界
原始 BMP/PNG(无损) FP16/BF16 权重(原始精度)
JPEG 质量 80% Q8 量化(几乎无感损失)
JPEG 质量 50% Q4 量化(轻微失真)
JPEG 质量 30% Q2 量化(明显失真)

为什么能量化:模型权重数值分布集中,大量精度位是"冗余"的,降低精度后对最终输出影响有限。


二、三层概念:别混为一谈

2.1 第 1 层:数据类型(一个数怎么存)

名称 类型 结构 出处
FP32 32-bit 浮点 1符号 + 8指数 + 23尾数 经典
FP16 16-bit 浮点 1 + 5 + 10 经典
BF16 16-bit 浮点 1 + 8 + 7(指数位多) Google Brain,训练主流
FP8 8-bit 浮点 E4M3 或 E5M2 NVIDIA H100+
NVFP4 4-bit 浮点 E2M1 + 块缩放 NVIDIA Blackwell(B200)

BF16 的 "B" = Brain(Google Brain 团队)。与 FP16 同为 16-bit,但指数位更多 → 数值范围大 → 训练不易溢出,大模型训练基本都用 BF16。BF16 通常不是量化,而是量化前的原始精度。

2.2 第 2 层:位宽档位(q4/q6/q8 泛指)

q4、q8 这类写法泛指"量化到几 bit",不指定具体方案。常见于 HuggingFace 模型名(如 Qwen2.5-7B-Instruct-GPTQ-Int4)。

2.3 第 3 层:量化方案(算法 + 缩放策略)

完整方案 = 数据类型 + 缩放策略 + 量化算法。同样是 q4,不同方案质量差异很大:

  1. Q4_K_M / Q8_0(llama.cpp):
    分块整数 + 混合精度,关键层用更高精度
  2. GPTQ(GPU):
    基于 Hessian 逐层求解最优量化
  3. AWQ(GPU):
    激活感知,保护对输出影响大的权重
  4. NVFP4(NVIDIA Blackwell):
    4-bit 浮点 + FP8 块缩放
  5. W8A8(NPU):
    权重 + 激活全部 8-bit 整数

三、三大硬件生态

量化方案与硬件强绑定,三大生态各走一条路线:

生态 数据类型 代表方案 典型场景
CPU/通用 GPU(llama.cpp) 整数系(INT4/INT8) Q4_K_M、Q6_K、Q8_0 GGUF 文件、本地推理
GPU 服务端(vLLM/NVIDIA) 浮点系(FP8/NVFP4) GPTQ、AWQ、FP8、NVFP4 H100/B200、高并发服务
NPU(瑞芯微 RKLLM) 整数系 W8A8、W4A16 .rkllm 文件、边缘设备

3.1 RKLLM 命名规则

格式:W{权重位宽}A{激活位宽}

方案 权重 激活 特点
W8A8 8-bit 8-bit NPU 整数算力强,甜点方案
W4A16 4-bit 16-bit 省内存,激活仍保 fp16
W8A16 8-bit 16-bit 折中方案

与 llama.cpp 的关键区别:llama.cpp 通常只量化权重(激活保 fp16),RKLLM 把权重和激活都量化 —— 因为 NPU 整数算子强,激活压到 8-bit 收益大。

3.2 为什么 GPU 生态走浮点量化

整数量化(INT4/INT8) 浮点量化(FP8/FP4)
动态范围 窄,需精细缩放 宽(有指数位),更稳
硬件支持 CPU/NPU 整数算力强 新 GPU 浮点算力暴涨
代表 llama.cpp、RKLLM vLLM + H100/B200

NVIDIA 路线:新 GPU 的 FP8/FP4 张量核心算力极高(B200 的 FP4 算力是 FP16 的数倍),量化朝浮点走;CPU/NPU 整数算力便宜,走整数路线。


四、方案选择速查

需求 推荐方案
本地 CPU 跑,质量/体积平衡 GGUF Q4_K_M(主流推荐)
本地 CPU 跑,追求质量 GGUF Q8_0(几乎无损)
内存极度紧张 GGUF Q3_K_M / Q2_K(质量下降)
NVIDIA 新卡高并发服务 FP8 / NVFP4(vLLM)
RK3588 NPU 边缘部署 W8A8(.rkllm)

体积估算:7B 模型 FP16 约 13 GB,Q8 约 7 GB,Q4 约 4.5 GB,Q2 约 2.5 GB。模型量化后体积 ≤ 内存容量即可跑起来。


📖 相关笔记: - 端侧NPU大模型部署方案全景 — 各厂商 NPU 部署工具链对比(算能/爱芯元智/高通/华为等) - 瑞芯微RKLLM Server:NPU上的大语言模型推理服务 — W8A8 在 RK3588 上的实际部署 - 瑞芯微AI模型文件格式(.rkllm与.rknn) — 瑞芯微量化模型文件格式

📖 资料来源: - llama.cpp 官方 GitHub 仓库 - NVIDIA FP8 格式说明

相关笔记