vLLM:采用PagedAttention改变LLM服务方式的革命
Published on
大家好!今天,我们将深入研究在人工智能社区中引起轰动的一项技术 - vLLM。如果你对人工智能和大型语言模型(LLMs)感兴趣,那么你一定要听听这个。vLLM不仅仅是另一个工具,它是一款改变我们使用和利用LLMs的游戏改变者,使其更快、更高效,并且能够适应更广泛的项目和团队。准备好了吗?因为我们即将探讨vLLM的独特之处,以及它为何可能是我们一直在期待的突破。
在人工智能领域,大型语言模型(LLMs)的潜力是革命性的。这些模型有可能改变行业,提供与技术互动和处理信息的新方式。然而,提供这些模型的现实情况却充满了挑战。它们需要大量的计算资源,尽管强大的硬件已经可用,但提供LLMs的速度却令人惊讶地慢且昂贵。这就是 vLLM 出现的背景,它是人工智能技术中常常波涛汹涌中的一片创新光芒。
vLLM:通过PagedAttention实现简单、快速和廉价的LLM服务
由加利福尼亚大学伯克利分校的一个团队于2023年6月20日推出,vLLM向我们证明了协作创新的力量。vLLM由Woosuk Kwon、Zhuohan Li、Siyuan Zhuang、Ying Sheng、Lianmin Zheng、Cody Yu、Joey Gonzalez、Hao Zhang和Ion Stoica开发。vLLM直面LLM服务的核心问题,通过使用一种名为PagedAttention的新颖注意力算法,显著优于现有解决方案,提供更高的吞吐量和效率。
主要亮点:
- GitHub | 文档 | 论文:vLLM (opens in a new tab)是一个开源宝库,供那些想要深入研究技术细节或者从自己的LLM服务需求 (opens in a new tab)入手的人使用。
- 无与伦比的性能:在基准测试中,vLLM的吞吐量比HuggingFace Transformers等流行库高出多达24倍,而且无需对模型架构进行任何更改。
其成功的秘密:PagedAttention
- PagedAttention从根本上解决了LLM服务中的内存瓶颈问题。通过更有效地管理注意力键和值,它实现了高吞吐量和高效的内存使用。
- 灵活性和效率:受操作系统中虚拟内存系统的启发,PagedAttention将键和值存储在非连续的内存块中,实现了动态且高效的内存管理。
- 优化的内存使用:这种方法大大减少了内存浪费,提高了GPU利用率,从而实现更好的性能。
实际应用和影响
- 实际部署:vLLM已经在Chatbot Arena和Vicuna Demo等平台上得到了应用,证明了它在为数百万用户提供服务方面的有效性。
- 成本效益:通过提高吞吐量和减少GPU需求,vLLM使小团队能够以合理的价格提供LLM服务,使广大人群能够接触到尖端的人工智能技术。
开始使用vLLM
对于那些急于动手的人来说,开始使用vLLM非常简单,只需从GitHub上运行一个命令进行安装即可。无论您是想进行离线推理还是设置在线服务系统,vLLM都提供了灵活性和易用性。
- 安装:简单且用户友好,只需要运行一个命令即可快速开始使用。
- 使用场景:支持多种用例,从对数据集的批处理推理到构建与OpenAI API兼容的在线服务的服务器端。
vLLM实战:步骤指南
为了让您了解使用vLLM的工作过程,这里有一个快速介绍:
- 离线批处理推理:学习如何使用vLLM从一系列提示中进行高吞吐量文本生成。
- 构建API服务器:逐步了解设置用于LLM服务的API服务器的过程,兼容OpenAI API。
- 高级功能:探索vLLM的能力,包括并行采样和波束搜索,了解它如何轻松处理复杂的采样算法。
vLLM为LLM服务铺平了道路,使其更加易用、高效和可扩展。无论您是研究人员、开发人员还是一个对人工智能感兴趣的人,vLLM都为突破大型语言模型所能做到的极限提供了机会。现在,让我们深入了解技术细节,看看vLLM的实际效果。
更深入地了解vLLM
vLLM不仅因其出色的性能而脱颖而出,还因其易用性而备受关注。它与现有工具和工作流程无缝集成,成为各种LLM服务需求的多功能选择。
vLLM的核心功能
vLLM提供了一系列功能,解决了与LLM服务相关的许多挑战:
- 最先进的服务吞吐量:通过优化的CUDA核心和创新的PagedAttention算法,vLLM实现了无与伦比的服务速度。
- 高效的内存管理:通过PagedAttention,vLLM有效地管理注意力键和值的内存,大大减少了LLM推理的内存占用。
- 持续批处理:vLLM可以持续批处理传入的请求,最大限度地提高了硬件利用率和吞吐量。
- 优化的CUDA核心: 使用自定义的CUDA核心可以进一步提高性能,确保vLLM尽可能高效地运行。
使用vLLM和LangChain入门
由于vLLM与流行的Python包兼容,将vLLM集成到项目中非常简单。以下是快速入门指南:
-
安装: 确保已安装vllm Python包,可以使用pip进行安装:
%pip install --upgrade --quiet vllm -q
-
基本用法: 首先从langchain_community.llms包中导入VLLM,并使用所需的模型进行初始化。以下是一个示例:
from langchain_community.llms import VLLM llm = VLLM( model="mosaicml/mpt-7b", trust_remote_code=True, # hf models的必备参数 max_new_tokens=128, top_k=10, top_p=0.95, temperature=0.8, ) print(llm.invoke("法国的首都是什么?"))
这个简单的脚本演示了如何进行推断,返回“巴黎”作为法国的首都。
使用LLMChain增强推断
对于更复杂的推断任务,可以将vLLM集成到LLMChain中,以实现复杂的提示工程和处理:
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
template = """问题: {question}
答案: 让我们一步一步地来思考。"""
prompt = PromptTemplate.from_template(template)
llm_chain = LLMChain(prompt=prompt, llm=llm)
question = "第一款宝可梦游戏发布的年份,美国总统是谁?"
print(llm_chain.invoke(question))
这种方法能够进行逐步推理,提供复杂问题的详细答案。
分布式推测和量化
vLLM支持高级功能,如分布式推测和量化,适用于高需求的环境:
- 分布式推测:要利用多个GPU,只需在初始化VLLM时设置
tensor_parallel_size
参数。 - 量化:vLLM还支持AWQ量化,可以显著减少模型的内存占用,而不降低性能。
兼容OpenAI的服务器
vLLM最强大的功能之一是能够模仿OpenAI API协议,成为当前使用OpenAI API的应用程序的即插即用替代品。这种能力为部署高效、可扩展的LLM解决方案打开了无限可能。
结论:vLLM为LLM服务的未来
vLLM代表了LLM服务技术的重大飞跃。凭借其高吞吐量、高效的内存管理和易用性的结合,vLLM定位成为人工智能领域的关键参与者。无论是增强现有应用程序还是探索LLM的新可能性,vLLM都提供了工具和性能,使您的项目取得成功。随着社区不断探索和拓展vLLM的功能,我们可以期待更多创新应用和改进的出现。