引言:推理为何如此昂贵
训练一次GPT-5需要数千万美元,但推理才是真正的"金钱黑洞"。一个百万DAU的应用,每天的推理成本可能超过10万元。如何让推理快10倍、便宜10倍?这不是单点优化,而是一整套系统工程。
1. 量化技术:从FP16到INT4
核心思想
权重和激活值不一定需要FP16精度。通过量化到INT8甚至INT4,可以将显存占用降低2-4倍,推理速度提升1.5-3倍。
主流量化方案对比
| 方法 | 精度 | 压缩率 | 性能损失 | 适用场景 |
|---|---|---|---|---|
| GPTQ | INT4 | 4x | <1% | 权重量化 |
| AWQ | INT4 | 4x | <0.5% | 激活感知 |
| SmoothQuant | INT8 | 2x | <1% | W8A8 |
| FP8 | FP8 | 2x | ~0% | H100/H200 |
实战代码
from transformers import AutoModelForCausalLM
from awq import AutoAWQForCausalLM
# AWQ 量化
model = AutoAWQForCausalLM.from_pretrained("Llama-3-70B")
model.quantize(
quant_config={
"zero_point": True,
"q_group_size": 128,
"w_bit": 4,
"version": "GEMM"
}
)
model.save_quantized("Llama-3-70B-AWQ")
2. FlashAttention:注意力计算的革命
传统Attention计算需要存储完整的n×n注意力矩阵,对于长序列来说显存爆炸。FlashAttention通过IO感知的算法重新设计:
- Tiling(分块):把Q、K、V分成小块,在SRAM中计算
- Recomputation:反向传播时重新计算,避免存储中间结果
- Online Softmax:增量计算softmax,无需完整矩阵
结果:训练速度2-3倍,推理速度1.5-2倍,长序列效果尤为显著。
3. PagedAttention:vLLM的杀手锏
大模型推理的另一个瓶颈是KV-Cache的显存浪费。传统方案为每个请求预留最大长度的连续显存,浪费率高达60-80%。
PagedAttention借鉴操作系统的虚拟内存设计:
- 将KV-Cache分成固定大小的Block
- 按需分配,不再预留
- 支持Block共享(如同一Prompt的多个采样)
vLLM的实测结果:吞吐量提升2-4倍,显存利用率从25%提升至90%+。
# vLLM部署示例
from vllm import LLM, SamplingParams
llm = LLM(
model="meta-llama/Llama-3-70B",
tensor_parallel_size=4,
gpu_memory_utilization=0.9,
max_num_batched_tokens=8192,
)
sampling_params = SamplingParams(
temperature=0.7,
max_tokens=2048,
)
outputs = llm.generate(prompts, sampling_params)
4. 投机采样(Speculative Decoding)
核心思想:用一个小模型快速生成草稿,大模型批量验证。
1. Draft Model 生成 k 个token候选
2. Target Model 一次性验证这 k 个token
3. 接受能匹配的前缀,从拒绝点重新采样
这种方法的妙处在于:在保证输出质量完全等同的前提下,速度提升2-3倍。
5. Medusa:并行解码新范式
Medusa通过在主模型上添加多个"预测头",让模型一次性预测多个未来token:
- 训练成本低(只训练几个新Head)
- 推理加速2-3倍
- 无需Draft Model
6. 综合优化效果
以Llama-3-70B在H100上的实测为例:
| 方案 | 吞吐量(tok/s) | 延迟(ms) | 显存占用 |
|---|---|---|---|
| 原始FP16 | 45 | 22 | 140GB |
| + AWQ INT4 | 120 | 8 | 40GB |
| + FlashAttention | 180 | 5.5 | 38GB |
| + vLLM | 420 | 2.4 | 38GB |
| + 投机采样 | 950 | 1.1 | 40GB |
综合优化后,吞吐量提升21倍,延迟降低20倍,显存占用降低3.5倍。这就是工程的力量。
7. 选型建议
- 初期验证:直接用vLLM + AWQ量化
- 追求极致延迟:加上投机采样或Medusa
- 多卡部署:Tensor Parallel + Pipeline Parallel
- 边缘部署:考虑llama.cpp + GGUF量化
结语
大模型推理优化是一门综合艺术,涉及算法、系统、硬件多个层面。但只要遵循"测量 → 瓶颈分析 → 针对性优化"的方法论,就能在性能和成本之间找到最佳平衡点。