小羊驼和排位赛的「幕后英雄」
编者按:本文来自微信公众号 新智元(ID:AI_era),作者:桃子 好困 ,微新创想经授权发布。在激烈的「排位赛」中,大模型们背后的秘密武器终于揭晓!UC伯克利重磅开源了神级LLM推理系统——vLLM,它凭借创新的PagedAttention技术,将性能提升至HuggingFace/Transformers的24倍,同时将GPU数量减半。过去两个月,UC伯克利的研究团队在Chatbot Arena平台上,为GPT-4等顶尖大语言模型搭建了一个公平竞技的擂台。这些模型通过随机对决,依据Elo评分体系进行排名。在比赛过程中,每当有用户访问网站,系统就需要同时启动两个不同的模型进行运算。他们是如何实现这一高并发操作的?答案就在UC伯克利最新开源的vLLM系统中。
vLLM是一个开源的LLM推理和服务引擎,它通过全新的注意力算法「PagedAttention」实现了对注意力键和值的智能管理。配备这一创新算法的vLLM,重新定义了LLM服务的性能标准:与HuggingFace Transformers相比,它实现了高达24倍的吞吐量提升,且无需对模型架构进行任何调整。值得一提的是,「小羊驼」Vicuna在demo演示中,正是采用了FastChat和vLLM的集成方案。正如研究者所强调,vLLM最大的优势在于提供易用、高效且成本经济的LLM服务。这意味着,未来即使是计算资源有限的小型研究团队,也能轻松部署自己的LLM服务。项目地址:https://github.com/vllm-project/vllm,相关论文也即将发布。
vLLM的性能表现全面超越了当前最先进的SOTA技术。LMSYS开放研究组织介绍道:「让我们一起见证vLLM:Chatbot Arena背后的秘密武器。FastChat-vLLM的集成使LMSYS使用的GPU数量减少了一半,同时每天平均处理高达3万次请求。」vLLM的具体性能如何?UC伯克利团队将其吞吐量与HuggingFace Transformers(HF)和HuggingFace文本生成推理(TGI)等主流LLM库进行了对比。测试设置包括在NVIDIA A10G GPU上运行LLaMA-7B模型,以及在NVIDIA A100 GPU(40GB)上运行LLaMA-13B模型。研究人员从ShareGPT数据集中随机抽样,获取请求的输入/输出长度数据进行评估。
实验结果显示,vLLM的吞吐量比HF高出高达24倍,比TGI高出3.5倍。在服务吞吐量测试中(每个请求只需一个输出完成时),vLLM比HF高出14-24倍,比TGI高出2.2-2.5倍。而在更复杂的场景下(每个请求需要3个并行输出完成时),vLLM依然比HF高出8.5-15倍,比TGI高出3.3-3.5倍。
vLLM的秘密武器:PagedAttention
在vLLM中,团队发现LLM服务的性能瓶颈主要在于内存限制。在自回归解码过程中,LLM会为每个输入token生成注意力键(key)和值(value)张量,并将这些张量缓存于GPU内存中,用于生成下一个token。这些缓存的键和值张量被称为KV缓存,具有以下特点:
1. 内存占用大:在LLaMA-13B模型中,单个序列的KV缓存可高达1.7GB。
2. 动态化:其大小取决于序列长度,而序列长度具有高度不确定性,难以预测。
因此,有效管理KV缓存成为一大挑战。研究团队发现,现有系统因内存碎片化和过度保留,浪费了高达60%-80%的内存。正如团队导师Joey Gonzalez所言:「GPU内存碎片化=慢。」为解决这一问题,团队创新性地提出了PagedAttention算法,该算法灵感来源于操作系统中虚拟内存和分页的经典概念。
与传统的注意力算法不同,PagedAttention允许在非连续的内存空间中存储连续的键和值。具体来说,PagedAttention将每个序列的KV缓存分割为若干固定大小的块,每个块包含一定数量的token的键和值。在注意力计算过程中,PagedAttention内核能够高效地识别和提取这些块。由于这些块在内存中无需连续存储,因此可以像操作系统的虚拟内存一样,以更灵活的方式管理键和值——将块视为页,token视为字节,序列视为进程。序列的连续逻辑块通过块表映射到非连续的物理块。随着新token的生成,物理块会按需分配。
PagedAttention将内存浪费严格控制在序列的最后一个块中,实践中内存使用效率接近最优,仅有不到4%的浪费。这种内存效率的提升,使得系统能够处理更多序列,提高GPU利用率,从而显著提升吞吐量。此外,PagedAttention还具有高效的内存共享能力。例如在并行采样场景中,可以从相同提示生成多个输出序列。此时,提示的计算和内存可以在不同输出序列间共享。PagedAttention通过块表自然地实现了内存共享,类似于进程共享物理页的方式,不同序列可以通过将它们的逻辑块映射到相同的物理块来共享块。为确保安全,PagedAttention会跟踪物理块的引用计数,并实现了写时复制机制。
PagedAttention的内存共享特性极大降低了复杂采样算法(如并行采样和束搜索)的内存开销,将它们的内存使用量减少了高达55%,同时将吞吐量提高了2.2倍。
总结而言,PagedAttention是vLLM的核心技术,作为LLM推理和服务的引擎,它支持多种模型架构,具有高性能和易用性。GitHub上,团队也展示了vLLM对HuggingFace模型的兼容性,包括:
– GPT-2(gpt2、gpt2-xl等)
– GPTNeoX(EleutherAI/gpt-neox-20b、databricks/dolly-v2-12b、stabilityai/stablelm-tuned-alpha-7b等)
– LLaMA(lmsys/vicuna-13b-v1.3、young-geng/koala、openlm-research/open_llama_13b等)
– OPT(facebook/opt-66b、facebook/opt-iml-max-30b等)
小羊驼和排位赛的「幕后英雄」
4月初,UC伯克利学者联合UCSD、CMU等顶尖高校,率先开源了130亿参数的全新模型——Vicuna,俗称「小羊驼」。自推出以来,Vicuna已在Chatbot Arena为数百万用户提供服务。最初,LMSYS的FastChat采用基于HF Transformers的服务后端来展示聊天demo。但随着demo的普及,峰值流量激增数倍,HF后端逐渐成为性能瓶颈。为解决这一挑战,LMSYS与vLLM团队紧密合作,开发了全新的FastChat-vLLM集成方案——通过将vLLM作为新的后端,满足日益增长的高并发需求(流量提升达5倍)。根据LMSYS内部微基准测试,vLLM服务后端的吞吐量比初始HF后端高出30倍。4-5月期间,Chatbot Arena已全面切换至FastChat-vLLM集成。实际上,超过一半的Chatbot Arena请求都由该集成提供支持。
自4月中旬以来,Vicuna、Koala和LLaMA等热门语言模型都已成功采用FastChat-vLLM集成提供服务。FastChat作为多模型聊天服务前端,vLLM作为推理后端,LMSYS利用有限的学校赞助GPU,以高吞吐量和低延迟为数百万用户提供Vicuna服务。目前,LMSYS正将vLLM扩展到更多模型,包括Databricks Dolly、LAION的OpenAssistant和Stability AI的StableLM等。
vLLM使用教程
安装vLLM(查看完整安装指南):$ pip install vllm
vLLM支持离线推理和在线服务:
离线推理:
“`python
from vllm import LLM
prompts = [“Hello, my name is”, “The capital of France is”]
llm = LLM(model=”lmsys/vicuna-7b-v1.3″)
outputs = llm.generate(prompts)
“`
在线服务:
$ python -m vllm.entrypoints.openai.api_server –model lmsys/vicuna-7b-v1.3
查询服务器:
$ curl http://localhost:8000/v1/completions \
-H “Content-Type: application/json” \
-d ‘{“model”: “lmsys/vicuna-7b-v1.3″,”prompt”: “San Francisco is a”,”max_tokens”: 7,”temperature”: 0}’
更多使用方法,请参考快速入门指南:https://vllm.readthedocs.io/en/latest/getting_started/quickstart.html
团队介绍
Zhuohan Li:加州大学伯克利分校计算机科学博士生,研究方向为机器学习与分布式系统交叉领域。此前在北京大学计算机科学专业学习,导师为王立威和贺笛。
Woosuk Kwon:加州大学伯克利分校博士生,专注于为大型语言模型等新兴应用开发实用、灵活且高性能的软件系统。
团队其他成员包括庄思远、盛颖、郑怜悯、Cody Yu。
团队导师:Joey Gonzalez、Ion Stoica和张昊。
大部分团队成员同时也是LMSYS成员。
参考资料
https://vllm.ai
本文为专栏作者授权微新创想发表,版权归原作者所有。文章系作者个人观点,不代表微新创想立场,转载请联系原作者。如有任何疑问,请联系http://www.idea2003.com/。