TalentMe
Login / Register
开源项目 Project

vLLM 架构剖析:基于 PagedAttention 的高吞吐量推理引擎

2026-06-16

解决了什么痛点?

在大型语言模型推理中,Key-Value (KV) Cache 会占用大量的 GPU 显存。由于生成的长度未知,传统框架会预先分配最大长度的连续内存块,导致严重的内存碎片化(内部碎片和外部碎片),显存利用率通常只有 20%-40%。

核心创新:PagedAttention

vLLM 受到操作系统虚拟内存的启发,提出了 PagedAttention

  1. 将连续的逻辑 KV Cache 划分为固定大小的 Block(如每个 Block 存储 16 个 token)。
  2. 这些 Block 在物理显存中不需要连续。
  3. 通过一个 Block Table 维护逻辑块到物理块的映射。

在计算 Attention 时:

# 伪代码:基于块的 Attention 计算
def paged_attention(query, key_cache, value_cache, block_table):
    out = []
    for logical_block_idx in range(num_blocks):
        physical_block_idx = block_table[logical_block_idx]
        k_block = key_cache[physical_block_idx]
        v_block = value_cache[physical_block_idx]
        # 计算块内 attention
        out.append(compute_attention(query, k_block, v_block))
    return aggregate(out)

总结

这种方法使得内存碎片降低到接近 0(只有最后一个 Block 可能没填满),同时通过写时复制 (Copy-on-Write) 支持了 Beam Search 等解码算法的高效内存共享,吞吐量比 HuggingFace Transformers 提升了最高 24 倍。

👁️0 Views

Comments (0)

You must be logged in to post a comment.
No comments yet. Be the first to share your thoughts!