
譯者 | 核子可樂
審校 | 重樓
大語言模型正在改變我們的工作與交互方式,為編程助手、通用聊天機(jī)器人等各類應(yīng)用提供支持。可問題在于:運(yùn)行這些功能強(qiáng)大的模型(特別是托管形式)的成本極高,往往達(dá)到傳統(tǒng)關(guān)鍵字搜索的10倍。而其中很大一部分,源自大模型低效的內(nèi)存管理機(jī)制。
隱藏的內(nèi)存消耗:KV緩存
大模型的核心在于Transformer模型,它每次生成一個(gè)單詞(token)。為了高效輸出,模型需要記住來自之前單詞的“上下文”,并將其存儲(chǔ)在KV(鍵值)緩存當(dāng)中,借此實(shí)現(xiàn)對(duì)話的短期記憶。
問題在于,這套KV緩存極其龐大,且每條請(qǐng)求的大小都會(huì)動(dòng)態(tài)變化?,F(xiàn)有系統(tǒng)多將KV緩存存儲(chǔ)在連續(xù)的單一內(nèi)存塊中,因此往往帶來兩個(gè)主要問題:
1. 內(nèi)存碎片
內(nèi)部碎片
系統(tǒng)會(huì)為每條請(qǐng)求預(yù)先分配一大塊內(nèi)存,并假設(shè)最大的可能輸出長(zhǎng)度(如2048個(gè)token)。但如果一條請(qǐng)求只生成一條短輸出,則大部分預(yù)留內(nèi)存都會(huì)閑置,因此造成嚴(yán)重浪費(fèi)。
外部碎片
由于不同請(qǐng)求會(huì)預(yù)留大小不一的內(nèi)存塊,GPU內(nèi)存中會(huì)分散大量無法使用的小塊。因此即使總可用內(nèi)存充足,也難以容納新請(qǐng)求。從觀察數(shù)據(jù)來看,現(xiàn)有系統(tǒng)中只有20.4%至38.2%的KV緩存內(nèi)存被實(shí)際用于存放token狀態(tài),其余部分被白白浪費(fèi)。
2. 無法共享內(nèi)存
并行采樣或波束搜索等高級(jí)解碼技術(shù)常會(huì)依據(jù)單條提示詞生成多條輸出,因此可以共享部分KV緩存。但現(xiàn)有系統(tǒng)無法輕松共享這部分內(nèi)存,因?yàn)楦餍蛄械?/span>KV緩存位于各自獨(dú)立的連續(xù)塊當(dāng)中。
這種低效現(xiàn)狀嚴(yán)重限制了系統(tǒng)能夠同時(shí)處理的請(qǐng)求數(shù)量,直接影響到系統(tǒng)吞吐量(每秒token/請(qǐng)求處理量)。
頓悟時(shí)刻:受操作系統(tǒng)啟發(fā)的PagedAttention
為了解決這些難題,研究人員開發(fā)出PagedAttention,其靈感來自操作系統(tǒng)中的一項(xiàng)經(jīng)典技術(shù):虛擬內(nèi)存與分頁。
其中:
- KV塊類似頁。PagedAttention不使用連續(xù)內(nèi)存,而是將每個(gè)序列的KV緩存劃分成固定體量且較小的鍵值塊,每個(gè)塊保存一定數(shù)量的tokne鍵和值。
- Token類似于字節(jié),KV緩存中的單一token對(duì)應(yīng)頁中的字節(jié)。
- 請(qǐng)求類似于進(jìn)程。每條大模型請(qǐng)求都像進(jìn)程一樣接受管理,其“邏輯”KV塊映射至GPU內(nèi)存中的“物理”KV塊。
PagedAttention如何化解內(nèi)存難題?
幾乎消除碎片問題
由于KV塊在物理內(nèi)存中不再連續(xù),PagedAttention可以按需動(dòng)態(tài)分配各塊。由于只需在必要時(shí)分配內(nèi)存,因此消除了內(nèi)部碎片問題;另外所有塊均大小相同,因此消除了外部碎片問題。
靈活的內(nèi)存共享效果
PagedAttention支持在不同序列間共享KV塊,甚至跨不同請(qǐng)求進(jìn)行共享。例如,在并行采樣或波束搜索中,多條輸出可以共享初始提示詞的KV緩存,從而節(jié)省大量?jī)?nèi)存。它甚至可以對(duì)需要由不同序列進(jìn)行修改的塊執(zhí)行寫時(shí)復(fù)制機(jī)制(同樣屬于操作系統(tǒng)概念),確保高效共享并避免不必要的復(fù)制。
vLLM:高吞吐量引擎
構(gòu)建于PagedAttention之上的vLLM是一款專為高吞吐量目標(biāo)設(shè)計(jì)的大模型服務(wù)系統(tǒng)。它采用塊級(jí)內(nèi)存管理,并配合與PagedAttention協(xié)同的復(fù)雜調(diào)度程序。
vLLM的關(guān)鍵優(yōu)勢(shì)包括:
- KV緩存內(nèi)存幾乎零浪費(fèi)。
- 可在請(qǐng)求內(nèi)部及跨請(qǐng)求間靈活共享KV緩存。
與FasterTransformer和Orca等最先進(jìn)的系統(tǒng)相比,vLLM將主流大模型的吞吐量提高了2至4倍,且不會(huì)增加延遲。對(duì)于較長(zhǎng)序列、更大的模型和更復(fù)雜的解碼算法,這種提升會(huì)更加顯著。例如,在支持一套包含13B參數(shù)的大模型時(shí),vLLM的并發(fā)處理請(qǐng)求數(shù)甚至比Orca的“預(yù)言機(jī)”版本(假設(shè)完全了解輸出長(zhǎng)度)高出2.2倍,比Orca(Max)高出4.3倍。它的內(nèi)存節(jié)約效果在并行采樣(6.1%-9.8%)和波束搜索(37.6%-55.2%)中同樣明顯。
大模型支撐的新未來
憑借對(duì)操作系統(tǒng)設(shè)計(jì)經(jīng)驗(yàn)的巧妙借鑒,PagedAttention顯著提高了大模型服務(wù)效率,在輕松降低云服務(wù)成本的同時(shí),為用戶提供更快、響應(yīng)更加靈敏的大模型應(yīng)用。它改變了游戲規(guī)則,以破除瓶頸的方式更好地支撐起下一代大模型服務(wù)。
原文標(biāo)題:Unlocking LLM superpowers: How PagedAttention helps the memory maze,作者:Raul Leite





























