引言
随着大语言模型(LLM)从研究走向生产部署,推理效率已成为决定产品成败的核心瓶颈。一个7B参数的FP16模型推理时仅KV Cache就需数GB显存,而生成式自回归解码的串行特性使得GPU利用率极低。本文深入剖析LLM推理优化的四大核心方向——KV Cache优化、Continuous Batching、Speculative Decoding和量化部署,从原理到实战全面覆盖工业界最前沿的工程实践。
一、推理瓶颈的本质分析
LLM推理分为两个截然不同的阶段:
- Prefill阶段:并行处理全部输入Token,相当于一次前向传播,属于计算密集(Compute-bound)。
- Decode阶段:逐Token自回归生成,每次只计算一个新Token,属于访存带宽密集(Memory-bandwidth-bound)。
在实际Prefill-Decode交错的场景下,两个阶段的混合使得资源调度变得异常复杂。
1.1 显存墙问题
以Llama-2-7B为例,模型权重约14GB(FP16),而每个Token的KV Cache约需80KB。当序列长度达到8K时,仅KV Cache就消耗约500MB/请求;128K上下文时更是达到7.8GB/请求。显存不足直接限制了批处理能力与服务吞吐。
1.2 计算利用率问题
Decode阶段的算术强度(Arithmetic Intensity)极低——每个Token的矩阵-向量乘只产生少量计算但需要读取全部权重。当Batch Size=8时,A100 GPU的算力利用率通常不到15%,大量GPU计算单元处于空闲等待状态。
二、KV Cache优化——核心显存瓶颈的破解
KV Cache是解码过程中注意力机制的关键缓存,存储每个Token对应的Key和Value向量。优化KV Cache是提升吞吐的首要任务。
2.1 PagedAttention:虚拟内存管理KV Cache
vLLM引入的PagedAttention将KV Cache组织为非连续的物理块(类似操作系统虚拟内存分页),逻辑块号到物理块号的映射表维护在每个序列上。
核心优势:
- 零碎片:物理块按需动态分配,消除传统连续分配导致的内外碎片。
- 共享复用:Beam Search和System Prompt的KV Cache可在多个序列间共享,节省50-86%显存。
- 按需分配:无需为最大序列长度预留空间,支持超长上下文。
vLLM实测结果显示,PagedAttention使吞吐量提升2-4倍,同时几乎消除内存浪费。
2.2 GQA/MQA对KV Cache的压缩
分组查询注意力(GQA)和多查询注意力(MQA)通过减少注意力头数量来压缩KV Cache:
- MHA→MQA:KV Cache缩小8倍(8个头共享1组KV),但可能影响生成质量。
- MHA→GQA:折中方案,Llama-2-70B采用GQA=8,Cache缩小4倍同时保持质量。
2.3 跨层KV Cache共享(Cross-Layer Sharing)
Google DeepMind提出的Cross-Layer Attention让相邻层共享同一组KV Cache,可将总KV Cache占用减少2-3倍。实验表明在短序列上质量损失极小,长序列需权衡。
三、Continuous Batching——吞吐量的革命性飞跃
传统静态批处理(Static Batching)要求同一批次中所有序列同步关闭,长序列等待短序列完成时GPU空转严重。Continuous Batching(也称迭代级调度)解决了这一根本问题。
3.1 迭代级调度机制
Orلأول提出的Continuous Batching在每个Decode迭代结束时动态调整批次组成:
- 完成的请求立即移出批次,释放GPU显存。
- 等待队列中的请求立即插入空缺位置,在下一迭代立即参与计算。
- 批大小在整个推理过程中持续变化,GPU始终处于接近满载状态。
实测显示,在vLLM上Continuous Batching相比静态批处理可提升23倍吞吐。
3.2 与PagedAttention的协同
Continuous Batching需要高效管理不断进出批次的序列,PagedAttention的非连续物理块管理恰好提供了这一能力。两者结合实现了:动态批管理(Continuous Batching) 零碎片内存管理(PagedAttention)的完整解决方案。
3.3 Chunked Prefill优化
最新进展将Prefill和Decode在时间片上交错执行:长Prefill被切分为Chunk,与Decode迭代交错进行,避免GPU被长Prefill独占导致Decode延迟抖动。这确保了服务水平目标(SLO)的Tail Latency可控。
四、Speculative Decoding——用小模型加速大模型
Speculative Decoding(投机解码)是唯一能在算法层面突破串行解码瓶颈的技术,由Leviathan等人于2022年在Google提出。
4.1 核心思想
利用小型Draft Model快速生成Γ个候选Token(耗时τ),然后用大型Target Model一次性并行验证(耗时与验证单个Token相当)。这Γ 1个Token仅需约1个Token时间的计算量,实现Γ倍的加速上界。
关键在于验证阶段使用特殊的拒绝采样策略:当Draft Token的置信度不满足标准时,从纠正后的分布中重新采样一个Token。这保证了输出分布与原模型一致——这是Speculative Decoding区别于其他近似方法的核心保证。
4.2 接受率分析
接受率 α = 1 − KL( p ∥ q ),其中p是真实分布,q是Draft分布。当Draft Model与Target Model高度相关时,α可达0.8-0.9。实际加速比为:
Speedup = Γ × α / (1 τ × Γ)
当τ

发表评论 取消回复