模型量化与推理优化
大模型的高效部署需要同时解决显存占用和推理速度两大挑战。
模型量化基础
什么是量化
- 定义:将 FP16/BF16 权重映射到低位宽(INT8/INT4)整数表示
- 核心目标:减少模型大小,加速推理,降低显存占用
- 量化粒度:per-tensor、per-channel、per-group(group size 通常为 128 或 32)
- 量化位宽与精度权衡:
- FP16 → INT8:模型大小减半,精度损失通常可忽略
- FP16 → INT4:模型大小减少 75%,部分任务出现可感知的精度下降
- 更低位宽(INT2/INT3)仍在研究阶段,实用性有限
量化类型
- 权重量化(Weight-only Quantization):仅量化权重矩阵,不量化激活值。推理时需反量化回 FP16 进行计算,主要节省存储带宽
- 权重-激活量化(Weight-Activation Quantization):权重和激活都量化为 INT8,可使用 INT8 矩阵乘法加速,需要校准数据统计激活值分布
- 训练后量化(Post-Training Quantization, PTQ):模型训练完成后直接量化,无需重新训练。速度快、成本低,是实际部署的主流方案
- 量化感知训练(Quantization-Aware Training, QAT):在训练过程中模拟量化误差(fake quantization),让模型权重自适应低位宽表示。精度更高但需要重新训练
主流量化方法
GPTQ(2023)
GPTQ 基于 Optimal Brain Quantization(OBQ)改进而来,是目前最流行的 1-shot 权重量化方法。
- 原理:基于二阶 Hessian 矩阵信息,逐层进行权重量化,最小化量化误差
- 核心创新:
- 使用 Hessian 矩阵捕捉权重之间的相关性
- 每量化一个权重后,更新剩余权重的值以补偿误差
- 引入 Cholesky 分解加速计算
- 支持位宽:INT4 和 INT3
- 性能:对 175B 模型可在 4 小时内完成量化
- 局限:校准数据需求较大,量化过程相对耗时
AWQ(Activation-aware Weight Quantization)
AWQ 通过观察激活值分布来指导量化策略。
- 关键观察:模型中仅约 1% 的权重对应着显著更大的激活值,这些"重要"权重对精度影响更大
- 方法:
- 保留 1% 的重要性权重为 FP16,其余量化为 INT4
- 通过 scaling 变换而非直接保留来规避硬件不友好的混合精度问题
- 优势:
- 比 GPTQ 需要更少的校准数据(仅需 128 个样本)
- 推理速度比 GPTQ 更快
- 精度与 GPTQ 相当甚至更优
GGUF / GGML
GGUF 是 llama.cpp 生态的量化格式,专注 CPU 和边缘设备推理。
- GGUF 与 GGML:GGUF 是 GGML 的继任者,解决了 GGML 的可扩展性和兼容性问题
- 量化等级:
- Q2_K 到 Q8_0 多种量化等级
- Q4_K_M 是质量与大小的最佳平衡点
- K-quant(如 Q4_K_S、Q4_K_M)基于重要性混合位宽
- 特点:
- CPU 友好,可在笔记本甚至手机上运行
- 支持 GPU offloading(部分层卸载到 GPU)
- 社区模型生态丰富(Hugging Face 上大量 GGUF 格式模型)
推理优化技术
KV-Cache
Transformer 自回归生成时,每个 token 的生成需要关注之前所有 token 的 Key 和 Value。
- 原理:缓存每个注意力层的 K 和 V 矩阵,避免每个 token 重新计算历史上下文
- 显存占用:随序列长度和 batch size 线性增长
- 对于 L 层、h 个注意力头、d 维度的模型,每个 token 需要存储 O(L × h × d) 的 KV 缓存
- 优化方向:
- MQA(Multi-Query Attention):所有查询头共享一组 Key/Value,大幅减少缓存
- GQA(Grouped Query Attention):折中方案,将查询头分组,每组共享 Key/Value(如 Llama 2 70B 使用 8 组)
- KV-Cache 量化:将缓存量化为 INT8 进一步减少显存占用
FlashAttention
FlashAttention 通过分析 GPU 显存层次结构,设计 IO 感知的注意力计算算法。
FlashAttention 1(2022):
- 核心思想:利用 GPU SRAM(共享内存)远快于 HBM(高带宽内存)的特性
- tiling 技术:将 Q、K、V 分块加载到 SRAM 中计算,减少 HBM 读写
- 效果:将注意力计算从 O(N²) 的 HBM 访问降低到 O(N² / M)(M 为 SRAM 大小)
- 非精确 softmax:使用分块 online softmax 保持计算精度
FlashAttention 2(2023):
- 减少 non-causal 注意力中的冗余计算
- 优化并行策略:在序列长度维度并行
- 更好的 warp 调度,减少同步开销
- 加速比:相比标准注意力实现,FlashAttention 2 可达 2-4 倍加速
FlashAttention 3(2024):
- 针对 Hopper GPU(H100)架构优化
- 利用 Tensor Core 的 WGMMA 指令
- 支持 FP8 注意力计算
- 最大限度利用 H100 带宽
PagedAttention(vLLM)
PagedAttention 是 vLLM 推理引擎的核心技术,解决了 KV-Cache 的显存碎片问题。
- 核心问题:传统 KV-Cache 预先分配连续显存,造成大量内部和外部碎片
- 解决方案:类比操作系统虚拟内存管理
- 将 KV-Cache 划分为固定大小的 page(块)
- 逻辑上连续的 KV 块在物理显存中可以非连续存储
- 按需分配 page,消除预分配浪费
- Copy-on-Write:多个生成请求共享相同 Prompt 时,共享 page,仅在需要修改时复制
- 效果:显存利用率提升至近 100%,支持更大的 batch size 和更长的序列
Speculative Decoding(推测解码)
推测解码通过"小模型草稿 + 大模型验证"的方式加速推理。
- 流程:
- 轻量级草稿模型快速生成 K 个候选 token
- 目标大模型并行验证候选序列
- 接受通过验证的 token,拒绝失败的 token
- 无损:采样分布与直接使用大模型完全相同,没有精度损失
- 加速比:通常为 1.5x - 3x,取决于草稿模型质量
- 变体:
- Self-Speculative:使用大模型自身的早停层作为草稿
- Staged Speculative:多级草稿模型级联
Continuous Batching
传统的静态 batching 需要等 batch 内所有序列生成完成才能释放资源。
- 动态调度:序列粒度调度,允许随时加入新请求和移除已完成请求
- 实现方式:在注意力计算层面,不同序列的 token 拼接为同一个序列,通过 attention mask 隔离
- 效果:
- GPU 利用率显著提升
- 请求排队延迟降低
- 吞吐量提升 2-4 倍
- 支持框架:vLLM、TensorRT-LLM、LightLLM
部署框架对比
| 框架 | 核心优化 | 量化支持 | 硬件 | 特点 |
|---|---|---|---|---|
| vLLM | PagedAttention、Continuous Batching | GPTQ、AWQ | NVIDIA GPU | 吞吐量高,社区活跃,易用性好 |
| TensorRT-LLM | 图优化、内核融合、Inflight Batching | INT4/INT8/FP8、GPTQ、AWQ、SmoothQuant | NVIDIA GPU(含 H100) | 极致性能,NVIDIA 官方支持,集成度高 |
| llama.cpp | 纯 CPU 推理优化、GPU Offloading | GGUF(Q2~Q8) | CPU/GPU/Apple Silicon | 边缘部署首选,资源占用极低 |
| TGI(Hugging Face) | 模型并行、Continuous Batching | GPTQ、AWQ、FP8 | NVIDIA GPU | Hugging Face 生态集成,部署简便 |
| Ollama | API 封装、模型管理 | GGUF 格式 | CPU/GPU | 开发者友好,一键部署,适合本地开发 |
端到端部署流程
- 模型选择 → 根据任务需求、显存预算和延迟要求选择基础模型(如 Llama、Qwen、Mistral)
- 量化(GPTQ / AWQ / GGUF) → 选择合适的量化方法和位宽,在精度和效率之间平衡
- 部署框架选择 → 根据硬件环境和性能需求选择推理框架(vLLM / TensorRT-LLM / llama.cpp)
- 推理优化(FlashAttention / KV-Cache) → 启用框架提供的优化技术,如 FlashAttention、PagedAttention、Continuous Batching
- Serving(API 封装) → 封装 OpenAI 兼容 API、配置并发参数、部署监控
总结
模型量化与推理优化是大型语言模型从研究走向实际应用的桥梁。量化技术(GPTQ、AWQ、GGUF)在保持模型精度的前提下大幅降低显存需求,而推理优化技术(FlashAttention、PagedAttention、Speculative Decoding)从算法和系统层面突破推理效率瓶颈。vLLM、TensorRT-LLM 等框架将这些技术整合为开箱即用的部署方案,让大模型能够在多种硬件环境中高效运行。随着硬件架构演进和算法创新,模型推理的效率和成本将持续优化。