前言
大语言模型(LLM)落地部署过程中,推理吞吐低、GPU 显存浪费、请求调度卡顿是行业普遍痛点。传统 Transformers、Text Generation Inference(TGI)框架在高并发场景下,往往无法充分利用 GPU 算力,难以满足线上服务的性能需求。
而VLLM作为目前工业界最主流的高速大模型推理框架,凭借两大核心黑科技——PageAttention 分页 KV Cache 机制和连续批处理(Continuous Batching),彻底解决了传统推理框架的显存浪费和算力闲置问题,实现了推理吞吐数倍提升。本文将从零拆解 VLLM 核心原理,适配工程落地认知,适合开发者、算法工程师入门学习与技术复盘。
一、核心前置知识:什么是 KV Cache?
想要读懂 VLLM 的核心原理,必须先搞懂 KV Cache 的作用,这是大模型增量推理的基础。
大模型的文本生成是自回归逐 Token 生成模式,即每一次只生成一个 Token,然后将该 Token 拼接至输入,迭代生成下一个 Token。在标准多头注意力计算过程中,模型会对每一个输入 Token 计算对应的 Key(键)和 Value(值)向量。
在传统无缓存推理模式下,每生成一个新 Token,模型都会对所有历史 Token重新计算一遍 Key、Value,大量的重复计算导致推理速度极慢,注意力机制的时间复杂度为 (n 为序列长度)。
为了优化该问题,业界引入了KV Cache 缓存机制:
模型在首次 Prompt 全量解码时,计算并缓存所有输入 Token 对应的 K、V 向量;后续每迭代生成一个新 Token 时,无需重复计算历史 Token 的 KV,仅需计算新 Token 的 KV 并追加至缓存中,直接复用历史缓存数据进行注意力加权计算。
通过 KV Cache 优化,注意力机制的计算复杂度从原始的 降至 ,极大降低了增量推理的计算开销,是所有高速推理框架的基础优化手段。
但 KV Cache 也存在致命短板:显存占用极高且碎片化严重。大模型推理的显存开销中,KV Cache 占比可达 70% 以上,传统框架对 KV Cache 粗放的内存管理方式,成为限制推理吞吐的核心瓶颈,而 VLLM 的 PageAttention 机制正是为解决该问题而生。
二、VLLM 核心核心:PageAttention 分页 KV Cache 机制
2.1 设计灵感:操作系统虚拟内存分页
PageAttention 是 VLLM 首创的分块式 KV Cache 内存管理机制,核心设计灵感源自操作系统的虚拟内存分页机制。操作系统通过将物理内存分割为固定大小的页,实现内存的灵活分配、复用与回收,极大提升了内存利用率。VLLM 将这一经典思想迁移至大模型 KV Cache 管理中,颠覆了传统框架的连续内存分配模式。
2.2 PageAttention 核心工作原理
传统推理框架会为每个推理请求分配一整块连续的显存空间用于存储 KV Cache。不同请求的序列长度参差不齐,请求结束后会产生大量显存碎片,且短请求占用整块连续内存,会造成严重的显存浪费,GPU 显存利用率极低。
而 PageAttention 彻底摒弃了连续内存分配逻辑,核心流程分为三步:
KV 分页切割:将所有请求的 KV Cache 数据,统一分割为固定大小的页(Page),每个页包含固定数量的 Token 对应的 KV 向量,页的大小可根据模型参数、硬件配置灵活配置。
全局页池管理:在 GPU 显存中开辟一个统一的全局页池,所有推理请求的 KV 页全部存储在该页池中,不再为单个请求独占连续显存,实现显存资源的全局共享。
页表映射寻址:为每个推理请求维护一张独立的页表(Page Table),页表会记录该请求每一个 Token 对应的 KV 数据所在的显存页地址。推理时,通过页表快速映射、读取对应 KV 数据,无需连续内存寻址。
2.3 PageAttention 核心优势
彻底解决显存碎片化:KV 数据以页为最小单位分配、回收、复用,请求结束后空闲页会直接归还全局页池,供其他请求复用,杜绝显存碎片。
大幅提升显存利用率:打破单请求独占连续显存的限制,长短请求的 KV 页可交错存储,同等显存下可承载更多并发请求。
支持超长序列推理:通过分页动态分配,无需提前预分配超大连续显存,可高效支持更长文本序列的推理场景。
三、VLLM 性能倍增关键:连续批处理(Continuous Batching)
3.1 传统静态批处理的致命缺陷
在讲解连续批处理前,需要先了解传统推理框架的静态批处理机制。传统框架会收集一批推理请求,统一送入模型解码,且整批请求必须等待最长序列的请求完全解码完成后,才会清空批次、接入下一批新请求。
这种机制存在极大的资源浪费:一批请求中,短序列请求会快速完成推理,但必须闲置等待长序列请求结束;整个批次的 GPU 算力被长请求拖累,大量算力处于空闲状态,有效批处理大小极低,整体吞吐能力极差,这也是传统框架高并发场景性能拉胯的核心原因之一。
3.2 连续批处理核心原理
VLLM 提出的连续批处理(Continuous Batching,也叫动态批处理),彻底打破了静态批处理的批次锁定限制,核心优化思路是拆分解码阶段、动态调度请求。
VLLM 将大模型推理的解码过程拆分为两个核心阶段:
全量解码阶段(Prefill):针对请求的输入 Prompt 文本,一次性完成所有 Token 的 KV 计算与缓存生成,是推理的初始化阶段。
单步增量解码阶段(Decode):基于 Prefill 阶段生成的 KV Cache,逐 Token 迭代生成输出文本,是推理的核心迭代阶段。
连续批处理不会锁定整批请求,而是以单步解码为最小调度单位:每一次迭代解码时,动态筛选当前处于可解码状态的请求(新请求 Prefill、旧请求增量解码),组成动态批次送入 GPU 计算。
简单来说:短请求完成后立即退出批次,新请求可随时接入批次,长请求持续迭代解码,无需等待整批请求全部完成。
3.3 连续批处理的工程价值
最大化有效批处理大小:全程保持批次处于满载状态,避免短请求等待长请求的资源闲置问题,大幅提升 GPU 计算强度。
显著提升推理吞吐:GPU 算力利用率从传统框架的 30%-40% 提升至 80% 以上,高并发场景下整体推理吞吐可提升 2-4 倍。
降低推理延迟抖动:动态调度机制减少了批次阻塞带来的延迟峰值,让线上服务响应更平稳,适配生产环境高可用需求。
四、总结:VLLM 高性能的核心本质
VLLM 之所以成为当前工业界首选的大模型推理框架,本质是通过两项创新解决了传统推理的两大核心瓶颈:
1、PageAttention 分页 KV Cache:借鉴操作系统内存管理思想,解决 KV Cache 显存碎片化、利用率低的问题,从内存层面突破推理并发上限;
2、连续批处理机制:拆分推理阶段、动态调度批次,解决静态批处理的算力闲置问题,从计算层面最大化 GPU 算力利用率。
二者相辅相成,让 VLLM 在显存利用率、推理吞吐、响应延迟三大核心指标上全面碾压传统推理框架,完美适配大模型线上部署、高并发问答、流式推理等各类工程场景。
五、后续学习方向
后续分享 VLLM 工程化部署实战源码、分页参数调优、批处理调度策略、量化推理适配、分布式推理部署等内容,掌握从原理到落地的全流程工程能力。
六、写在最后
平台内已上线《大模型入门精品课》,纯干货一个月学完(没有冗余的理论,项目都是大型企业项目,非demo):覆盖 RAG、智能体、Lora微调实战项目、模型压缩(剪枝、量化、蒸馏),附带项目简历撰写和面试指导。感兴趣的小伙伴可以前往主页了解!课程地址:https://edu.csdn.net/course/detail/41422