大模型推理的成本核心在于计算量和内存带宽。无论是云端部署还是边缘运行,量化(Quantization)都是降低推理成本最直接有效的手段。但量化不是简单地把权重从FP16压缩到INT4,它涉及模型结构、硬件特性、推理框架和精度需求的协同设计。2026年,量化技术已经从"能跑就行"走向"按需定制"。

一、量化的本质:用更少的位表示数值量化的核心思想是用低精度整数近似高精度浮点数。例如:textFP16 权重: 0.00342, -0.128, 0.991INT4 量化: 将 [-1.0, 1.0] 映射到 [-8, 7] 的整数量化带来两个收益:1. 模型体积减小:INT4比FP16体积小4倍。2. 推理速度提升:低精度矩阵运算在支持硬件上更快。代价是精度损失,尤其是在激活值分布复杂或异常值较多的层。## 二、主流量化方法### 1. Post-Training Quantization(PTQ)训练后量化,无需重新训练,速度快但精度损失较大。bash# llama.cpp 量化示例./quantize model-f16.gguf model-q4_0.gguf Q4_0./quantize model-f16.gguf model-q4_k_m.gguf Q4_K_M### 2. Quantization-Aware Training(QAT)在训练过程中模拟量化误差,精度更高但需要训练资源。pythonimport torch.quantization as quantmodel.qconfig = quant.get_default_qat_qconfig('fbgemm')quant.prepare_qat(model, inplace=True)# 继续训练...quant.convert(model, inplace=True)### 3. GPTQ / AWQ / GGUF- GPTQ:逐层量化,适合GPU推理。- AWQ:保护重要权重通道,精度更高。- GGUF:llama.cpp专用格式,支持多种CPU/GPU量化方案。pythonfrom awq import AutoAWQForCausalLMmodel = AutoAWQForCausalLM.from_quantized( "TheBloke/Llama-2-7B-AWQ", fuse_layers=True, trust_remote_code=True)## 三、硬件协同设计不同硬件对量化的支持差异很大:| 硬件 | 最佳精度 | 推荐格式 | 备注 ||-----|---------|---------|------|| NVIDIA RTX 4090 | INT4/INT8 | AWQ、GPTQ、FP8 | Tensor Core 支持 FP8/INT8 || NVIDIA A100/H100 | FP8/INT8 | TensorRT-LLM FP8 | Hopper 架构 FP8 优秀 || Apple Silicon | INT4/FP16 | MLX GGUF | 统一内存优势 || 手机 NPU | INT8/INT4 | TFLite INT8 | 功耗敏感 || CPU | INT4 | llama.cpp Q4_K_M | 内存带宽受限 |硬件选择直接影响量化策略。例如:- GPU 上 INT4 适合推理吞吐,但 INT8 更适合精度敏感场景。- Apple Silicon 上 MLX 框架对 FP16 和量化模型优化极佳。- 边缘 NPU 通常要求 INT8 对称量化。## 四、KV Cache 量化除了权重量化,KV Cache 量化也越来越重要。长上下文场景下,KV Cache 可能占用比权重更大的显存。python# KV Cache INT8 量化示例k_cache_int8 = (k_cache_fp16 / scale_k).round().clamp(-128, 127).to(torch.int8)v_cache_int8 = (v_cache_fp16 / scale_v).round().clamp(-128, 127).to(torch.int8)# 反量化用于注意力计算k_dequant = k_cache_int8.to(torch.float16) * scale_kKV Cache 量化对精度影响较大,通常需要结合 SmoothQuant 或逐 token 缩放技术。## 五、推理框架的量化支持主流推理框架对量化的支持:- vLLM:支持 AWQ、GPTQ、FP8,适合高吞吐服务。- SGLang:支持多种量化后端,侧重推理效率。- TensorRT-LLM:NVIDIA 官方,FP8/INT8 性能最佳。- llama.cpp:CPU/GPU 通用,GGUF 格式丰富。- MLX:Apple Silicon 最优选择。python# vLLM 加载量化模型from vllm import LLMllm = LLM( model="TheBloke/Llama-2-7B-AWQ", quantization="awq", dtype="float16", gpu_memory_utilization=0.9)## 六、量化选型决策树text是否需要最高精度? → 是:FP16 / BF16,或使用 QAT → 否:继续部署目标是 GPU 还是 CPU/边缘? → GPU:AWQ/GPTQ/FP8 → CPU:GGUF Q4_K_M/Q5_K_M → 边缘 NPU:INT8 TFLite/ONNX上下文是否很长? → 是:启用 KV Cache 量化 → 否:仅权重量化是否支持重训练? → 是:考虑 QAT → 否:PTQ## 七、总结量化是大模型工程化的必修课。但好的量化不是追求最低的位数,而是根据硬件能力、精度要求和场景特点做出平衡。2026年,量化技术正在与硬件架构深度融合,FP8、INT4、KV Cache 量化、混合精度等技术的组合使用,正在让大模型跑得更快、更便宜、更普及。

更多推荐