技术深度解析
自回归瓶颈
每一次LLM推理都是一次串行、逐步推进的过程。给定输入提示词后,模型首先将文本分词为子词单元(token)。随后,在一个循环中,它将整个序列——提示词加上所有已生成的token——送入Transformer层,以预测下一个token。这种自回归解码意味着生成一个100 token的响应需要100次独立的前向传播,每次的计算成本与序列长度成正比。延迟随输出长度线性增长,使得实时交互成为挑战。
KV缓存:内存与延迟的权衡
缓解这一成本的关键创新是键值(KV)缓存。在生成过程中,每个Transformer层会为每个token计算注意力键和值。KV缓存并非在每一步重新计算整个序列的这些值,而是将之前生成的token的键和值存储起来。这将每步的计算复杂度从O(n²)降低到O(n),其中n是当前序列长度。然而,缓存本身非常消耗内存。对于一个拥有4096 token上下文的70B参数模型,KV缓存可能消耗超过1 GB的GPU内存。随着上下文窗口扩展到128K或1M token,缓存成为主要的内存瓶颈。
表:不同模型大小与上下文长度下的KV缓存内存占用
| 模型大小 | 参数量 | 每token KV缓存(FP16) | 4K上下文内存 | 128K上下文内存 |
|---|---|---|---|---|
| 7B | 7B | ~1.5 MB | ~6 GB | ~192 GB |
| 13B | 13B | ~2.8 MB | ~11 GB | ~358 GB |
| 70B | 70B | ~14 MB | ~56 GB | ~1.79 TB |
*数据要点:KV缓存内存需求随上下文长度和模型大小线性增长。对于长上下文的70B模型,仅缓存就可能超过单张A100(80 GB)的内存,迫使采用多GPU部署或激进压缩策略。*
投机解码:用计算换延迟
投机解码解决了自回归生成的串行特性。其思路是使用一个快速的小型“草稿”模型并行生成多个候选token,然后让大型“目标”模型在一次前向传播中验证它们。如果草稿模型足够准确,目标模型可以在每次验证步骤中接受多个token,从而减少串行传播的次数。例如,一个7B参数的草稿模型可能生成4个token,而70B的目标模型一次性验证全部4个。如果其中3个被接受,有效延迟就降低了3倍。Google的Medusa和Meta的Lookahead Decoding是值得注意的实现。开源仓库`github.com/FasterDecoding/Medusa`(超过2000星)提供了一个实用实现,在标准基准测试中实现了2-3倍的加速,且不牺牲输出质量。
量化与剪枝:缩小模型
训练后量化将模型权重的精度从FP16降低到INT8或INT4,将内存带宽需求减少2到4倍。这直接提升了推理吞吐量,因为受内存限制的解码阶段往往受限于从内存加载权重的速度。GPTQ(可在`github.com/IST-DASLab/gptq`获取,5000+星)和AWQ(`github.com/mit-han-lab/llm-awq`,3000+星)是领先的技术,它们实现了4比特权重的近乎无损量化。另一方面,剪枝则移除冗余参数。SparseGPT(`github.com/IST-DASLab/sparsegpt`,2000+星)可以在单次前向传播中剪除50%的权重,同时保持准确率,使模型能够在低端硬件上运行。
关键参与者与案例研究
硬件:从FLOPS到每秒Token数
NVIDIA凭借H100和B200 GPU主导了训练市场,但推理市场则更为分散。NVIDIA的TensorRT-LLM在其硬件上优化推理,相比朴素的PyTorch实现实现了高达8倍的吞吐量提升。然而,像Groq(采用其LPU架构)和Cerebras(晶圆级处理器)这样的初创公司正通过设计专门针对推理的内存受限、低延迟需求的芯片来挑战现状。例如,Groq的LPU在处理Llama 2 70B等模型时实现了亚毫秒级的每token延迟,而A100上约为30毫秒。
表:Llama 2 70B推理延迟对比
| 硬件 | 每token延迟 | 吞吐量(token/秒) | 功耗(W) |
|---|---|---|---|
| NVIDIA A100 (TensorRT-LLM) | ~30 ms | ~33 | 400 |
| NVIDIA H100 (TensorRT-LLM) | ~15 ms | ~67 | 700 |
| Groq LPU | ~0.8 ms | ~1250 | 185 |
| Cerebras CS-3 | ~1.2 ms | ~833 | 15,000(系统) |
*数据要点:像Groq LPU这样的专用推理硬件相比通用GPU提供了20-40倍更低的每token延迟,但代价是有限的软件生态系统和更高的前期投入。权衡是明确的:对于延迟敏感的应用(语音助手、实时编程),专用硬件正在胜出。*
软件:优化竞赛
在软件方面,vLLM(`github.com/vllm-`