- 发布日期
是什么
vLLM 是一个开源的大语言模型(large language model)服务系统。「服务」指的是它站在训练好的模型和许多同时使用的用户之间:接收请求,把它们凑成批次送进模型,再把生成的文字交回给各自的使用者。它建立在一个名为 PagedAttention 的注意力(attention)算法之上[2]。代码放在 GitHub 的 vllm-project/vllm 仓库里,仓库创建于 2023 年 2 月 9 日,采用 Apache-2.0 许可,约有 96,000 颗星[1]。
要解决的问题
语言模型一次只生成一个词元(token)。生成新词元时,它不必把此前所有词元重算一遍,而是复用当时算出的中间结果,也就是键和值,通常称为 KV 缓存(KV cache)。重算太浪费,所以每个服务系统都会把这些中间结果留着。
麻烦在于这份缓存又大又会变。每多生成一个词元,它就长一点;请求结束时,它被释放;不同请求长度不同,缓存大小也就不同。如果用笨办法管理,比如按可能的最长输出预留一整块连续内存,内存就会因碎片(fragmentation)和重复复制(redundant duplication)被白白浪费掉,而浪费掉的内存又反过来限制了批大小(batch size)[2]。批大小决定吞吐:一次读入模型权重时,批里装的请求越多,做完的有用功就越多。
PagedAttention 的做法
PagedAttention 的思路借自操作系统的虚拟内存(virtual memory)与分页(paging)技术[2]。操作系统不会给程序一整段连续的物理内存,而是给程序一个地址空间,再把它一页一页地映射到物理内存里空闲的位置上。页与页之间不必相邻,也可以被共享。
PagedAttention 把同样的安排搬到 KV 缓存上:缓存被切成固定大小的块,块与块之间不必连续,靠一张表来定位。作者报告的效果是 KV 缓存内存近乎零浪费,并且可以在一个请求内部、也可以在不同请求之间灵活共享缓存,从而降低内存占用[2]。省下来的内存可以拿去装更多并发请求的缓存,批也就能开得更大。
结果
论文把 vLLM 与当时最好的服务系统作比较,点名 FasterTransformer 和 Orca,报告在时延相同的情况下,常见大模型的吞吐提升到 2-4 倍[2]。序列越长、模型越大、解码(decoding)算法越复杂,提升越明显[2]。
由来
这套系统和算法写在一篇论文里,论文于 2023 年 9 月 12 日首次发布到 arXiv,作者是 Woosuk Kwon、Zhuohan Li、Siyuan Zhuang、Ying Sheng、Lianmin Zheng、Cody Hao Yu、Joseph E. Gonzalez、Hao Zhang 和 Ion Stoica[2]。
在发展中的位置
从时间上看,代码走在论文前面:仓库建于 2023 年 2 月,论文到同年 9 月才公开[1][2]。仓库采用 Apache-2.0 许可,这是一种宽松的开源许可,允许他人修改和再分发代码[1]。这个项目的核心动作,是把 KV 缓存的内存管理认定为限制服务吞吐的那一环,再用操作系统里用惯了的「分页」办法去解决它[2]。对想自己部署模型的人来说,vLLM 提供的正是这样一层东西:不必改模型本身,只要换一种管理缓存的方式,就能在同样的时延下服务更多请求。仓库上的星数,是它被广泛使用的迹象之一[1]。
注释与来源
- vllm-project/vllm repository metadatahttps://api.github.com/repos/vllm-project/vllm
- Efficient Memory Management for Large Language Model Serving with PagedAttentionhttps://arxiv.org/abs/2309.06180
引用本页: vLLM. TellWorld, https://www.tellworld.net/zh/products/vllm. 更新于 2026-11-08