小羊駝和排位賽的「幕后英雄」
【資料圖】
編者按:本文來(lái)自微信公眾號(hào) 新智元(ID:AI_era),作者:桃子 好困 ,創(chuàng)業(yè)邦經(jīng)授權(quán)發(fā)布。
過(guò)去2個(gè)月,來(lái)自UC伯克利的研究人員給大語(yǔ)言模型們安排了一個(gè)擂臺(tái)——Chatbot Arena。
GPT-4等大語(yǔ)言模型玩家打起了「排位賽」,通過(guò)隨機(jī)battle,根據(jù)Elo得分來(lái)排名。
這一過(guò)程中,每當(dāng)一個(gè)用戶(hù)訪問(wèn)并使用網(wǎng)站,就需要同時(shí)讓兩個(gè)不同的模型跑起來(lái)。
他們是如何做到的?
這不,就在今天,UC伯克利重磅開(kāi)源了世界最快LLM推理和服務(wù)系統(tǒng)vLLM。
簡(jiǎn)之,vLLM是一個(gè)開(kāi)源的LLM推理和服務(wù)引擎。它利用了全新的注意力算法「PagedAttention」,有效地管理注意力鍵和值。
配備全新算法的vLLM,重新定義了LLM服務(wù)的最新技術(shù)水平:
值得一提的是,「小羊駝」Vicuna在demo中用到的就是FastChat和vLLM的一個(gè)集成。
正如研究者所稱(chēng),vLLM最大的優(yōu)勢(shì)在于——提供易用、快速、便宜的LLM服務(wù)。
這意味著,未來(lái),即使對(duì)于像LMSYS這樣計(jì)算資源有限的小型研究團(tuán)隊(duì)也能輕松部署自己的LLM服務(wù)。
項(xiàng)目地址:https://github.com/vllm-project/vllm
現(xiàn)在,所有人可以在GitHub倉(cāng)庫(kù)中使用一個(gè)命令嘗試vLLM了。論文隨后也會(huì)發(fā)布。
性能全面碾壓SOTA今天,這個(gè)由UC伯克利創(chuàng)立的開(kāi)放研究組織LMSYS介紹道:
「一起來(lái)見(jiàn)證vLLM:Chatbot Arena背后的秘密武器。FastChat-vLLM的集成使LMSYS使用的GPU數(shù)量減少了一半,同時(shí)每天平均提供3萬(wàn)次請(qǐng)求?!?/p>
vLLM的性能具體如何?
UC伯克利團(tuán)隊(duì)將vLLM的吞吐量與最受歡迎的LLM庫(kù)HuggingFace Transformers(HF),以及HuggingFace文本生成推理(TGI),先前的最新技術(shù)水平進(jìn)行了比較。
團(tuán)隊(duì)在兩個(gè)設(shè)置中進(jìn)行評(píng)估:在NVIDIA A10G GPU上運(yùn)行LLaMA-7B模型,在NVIDIA A100 GPU(40GB)上運(yùn)行LLaMA-13B模型。
然后,研究人員從ShareGPT數(shù)據(jù)集中抽樣請(qǐng)求的輸入/輸出長(zhǎng)度。
在實(shí)驗(yàn)中,vLLM的吞吐量比HF高達(dá)24倍,并且比TGI高達(dá)3.5倍。
在每個(gè)請(qǐng)求只需要一個(gè)輸出完成時(shí)的服務(wù)吞吐量。vLLM比HF的吞吐量高出14倍-24倍,比TGI的吞吐量高出2.2倍-2.5倍
在每個(gè)請(qǐng)求需要3個(gè)并行輸出完成時(shí)的服務(wù)吞吐量。vLLM比HF的吞吐量高出8.5倍-15倍,比TGI的吞吐量高出3.3倍-3.5倍
秘密武器:PagedAttention在vLLM中,團(tuán)隊(duì)發(fā)現(xiàn)LLM服務(wù)的性能受到內(nèi)存的限制。
在自回歸解碼過(guò)程中,LLM的所有輸入token都會(huì)生成注意力鍵(key)和值(value)張量,并且這些張量被保留在GPU內(nèi)存中以生成下一個(gè)token。
這些緩存的鍵和值張量通常被稱(chēng)為KV緩存。KV緩存具有以下特點(diǎn):
1. 內(nèi)存占用大:在LLaMA-13B中,單個(gè)序列的KV緩存占用高達(dá)1.7GB的內(nèi)存。
2. 動(dòng)態(tài)化:其大小取決于序列長(zhǎng)度,而序列長(zhǎng)度高度易變,且不可預(yù)測(cè)。
因此,有效管理KV緩存是一個(gè)重大挑戰(zhàn)。對(duì)此,研究團(tuán)隊(duì)發(fā)現(xiàn)現(xiàn)有系統(tǒng)由于碎片化和過(guò)度保留而浪費(fèi)了60%至80%的內(nèi)存。
用團(tuán)隊(duì)的導(dǎo)師Joey Gonzalez的一句話來(lái)講:GPU內(nèi)存碎片化=慢。
為了解決這個(gè)問(wèn)題,團(tuán)隊(duì)引入了PagedAttention,一種受到操作系統(tǒng)中虛擬內(nèi)存和分頁(yè)經(jīng)典概念啟發(fā)的注意力算法。
與傳統(tǒng)的注意力算法不同,PagedAttention允許在非連續(xù)的內(nèi)存空間中存儲(chǔ)連續(xù)的鍵和值。
具體來(lái)說(shuō),PagedAttention將每個(gè)序列的KV緩存分為若干塊,每個(gè)塊包含固定數(shù)量token的鍵和值。在注意力計(jì)算過(guò)程中,PagedAttention內(nèi)核能夠高效地識(shí)別和提取這些塊。
PagedAttention:KV緩存被分割成塊,這些塊在內(nèi)存中不需要連續(xù)
由于這些塊在內(nèi)存中不需要連續(xù),因此也就可以像操作系統(tǒng)的虛擬內(nèi)存一樣,以更靈活的方式管理鍵和值——將塊看作頁(yè),token看作字節(jié),序列看作進(jìn)程。
序列的連續(xù)邏輯塊通過(guò)塊表映射到非連續(xù)的物理塊。隨著生成新的token,物理塊會(huì)按需進(jìn)行分配。
使用PagedAttention的請(qǐng)求生成過(guò)程示例
PagedAttention將內(nèi)存浪費(fèi)控制在了序列的最后一個(gè)塊中。
在實(shí)踐中,這帶來(lái)了接近最優(yōu)的內(nèi)存使用——僅有不到4%的浪費(fèi)。
而這種內(nèi)存效率的提升,能讓系統(tǒng)將更多的序列進(jìn)行批處理,提高GPU利用率,從而顯著提高吞吐量。
此外,PagedAttention還具有另一個(gè)關(guān)鍵優(yōu)勢(shì):高效的內(nèi)存共享。
比如在并行采樣中,就能從相同的提示生成多個(gè)輸出序列。在這種情況下,提示的計(jì)算和內(nèi)存可以在輸出序列之間共享。
并行采樣的示例
PagedAttention通過(guò)塊表自然地實(shí)現(xiàn)了內(nèi)存共享。
類(lèi)似于進(jìn)程共享物理頁(yè)的方式,PagedAttention中的不同序列可以通過(guò)將它們的邏輯塊映射到相同的物理塊來(lái)共享塊。
為了確保安全,PagedAttention會(huì)跟蹤物理塊的引用計(jì)數(shù),并實(shí)現(xiàn)了寫(xiě)時(shí)復(fù)制機(jī)制。
采樣多個(gè)輸出的請(qǐng)求示例生成過(guò)程
PagedAttention的內(nèi)存共享極大減少了復(fù)雜采樣算法(如并行采樣和束搜索)的內(nèi)存開(kāi)銷(xiāo),將它們的內(nèi)存使用量減少了高達(dá)55%。這可以將吞吐量提高多達(dá)2.2倍。
總結(jié)而言,PagedAttention是vLLM的核心技術(shù),它是LLM推斷和服務(wù)的引擎,支持各種模型,具有高性能和易于使用的界面。
GitHub上,團(tuán)隊(duì)也介紹了vLLM能夠無(wú)縫支持的HuggingFace模型,包括以下架構(gòu):
- 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伯克利學(xué)者聯(lián)手UCSD、CMU等,最先推出了一個(gè)開(kāi)源全新模型——130億參數(shù)的Vicuna,俗稱(chēng)「小羊駝」。
從那時(shí)起,Vicuna已在Chatbot Arena為數(shù)百萬(wàn)用戶(hù)提供服務(wù)。
最初,LMSYS的FastChat采用基于HF Transformers的服務(wù)后端來(lái)提供聊天demo。
但隨著demo變得越來(lái)越受歡迎,峰值流量猛增了好幾倍,而HF后端也因此成了一個(gè)重大的瓶頸。
為了解決這一挑戰(zhàn),LMSYS與vLLM團(tuán)隊(duì)緊密合作,全力開(kāi)發(fā)出了全新的FastChat-vLLM集成——通過(guò)將vLLM作為新的后端,來(lái)滿足不斷增長(zhǎng)的需求(最多增加5倍的流量)。
根據(jù)LMSYS內(nèi)部微基準(zhǔn)測(cè)試的結(jié)果,vLLM服務(wù)后端可以實(shí)現(xiàn)比初始HF后端高出30倍的吞吐量。
4月-5月期間,Chatbot Arena的后端已經(jīng)部落了FastChat-vLLM的集成。實(shí)際上,有超過(guò)一半的Chatbot Arena請(qǐng)求都使用FastChat-vLLM集成服務(wù)的
自4月中旬以來(lái),最受歡迎的語(yǔ)言模型,如Vicuna、Koala和LLaMA,都已成功使用FastChat-vLLM集成提供服務(wù)。
FastChat作為多模型聊天服務(wù)前端,vLLM作為推理后端,LMSYS能夠利用有限數(shù)量的GPU(學(xué)校贊助的),以高吞吐量和低延遲為數(shù)百萬(wàn)用戶(hù)提供Vicuna服務(wù)。
現(xiàn)在,LMSYS正在將vLLM的使用擴(kuò)展到更多的模型,包括Databricks Dolly、LAION的OpenAsssiant和Stability AI的StableLM等。
vLLM使用教程使用以下命令安裝vLLM(另可查看安裝指南了解更多信息):
vLLM可用于離線推理和在線服務(wù)。要使用vLLM進(jìn)行離線推理,你可以導(dǎo)入vLLM并在Python腳本中使用LLM類(lèi):
要使用vLLM進(jìn)行在線服務(wù),你可以通過(guò)以下方式啟動(dòng)與OpenAI API兼容的服務(wù)器:
你可以使用與OpenAI API相同的格式查詢(xún)服務(wù)器:
有關(guān)使用vLLM的更多方法,請(qǐng)查看快速入門(mén)指南:
https://vllm.readthedocs.io/en/latest/getting_started/quickstart.html
團(tuán)隊(duì)介紹Zhuohan Li
Zhuohan Li是加州大學(xué)伯克利分校計(jì)算機(jī)科學(xué)專(zhuān)業(yè)的博士生,研究興趣是機(jī)器學(xué)習(xí)和分布式系統(tǒng)的交叉領(lǐng)域。
在此之前,他在北京大學(xué)獲得了計(jì)算機(jī)科學(xué)學(xué)士學(xué)位,指導(dǎo)老師是王立威和賀笛。
Woosuk Kwon
Woosuk Kwon是加州大學(xué)伯克利分校的博士生,研究興趣是為大語(yǔ)言模型等新興應(yīng)用建立實(shí)用、靈活和高性能的軟件系統(tǒng)。
團(tuán)隊(duì)其他成員包括莊思遠(yuǎn)、盛穎、鄭憐憫、Cody Yu。團(tuán)隊(duì)導(dǎo)師包括Joey Gonzalez,Ion Stoica和張昊。
其中,團(tuán)隊(duì)的大部分成員同時(shí)也是LMSYS成員。
參考資料https://vllm.ai