偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Cache Me If You Can:陳丹琦團(tuán)隊(duì)如何「抓住」關(guān)鍵緩存,解放LLM內(nèi)存?

人工智能 新聞
陳丹琦團(tuán)隊(duì)提出了「KV 足跡」作為一種統(tǒng)一的度量標(biāo)準(zhǔn),它是在所有時(shí)間步中,未被逐出的鍵值緩存條目所占比例的聚合值。

普林斯頓大學(xué)計(jì)算機(jī)科學(xué)系助理教授陳丹琦團(tuán)隊(duì)又有了新論文了。

image.png

近期,諸如「長思維鏈」等技術(shù)的興起,帶來了需要模型生成數(shù)萬個(gè) token 的全新工作負(fù)載。

大多數(shù)語言模型都基于 Transformer 架構(gòu),其在進(jìn)行自回歸解碼(即逐字生成文本)時(shí),需要將所有先前 token 的注意力狀態(tài)存儲(chǔ)在一個(gè)名為 KV 緩存的內(nèi)存區(qū)域中。

Transformers KV Caching Explained | by Jo?o Lages | Medium

KV 緩存是模型進(jìn)行快速推理的基石,但它的大小會(huì)隨著輸入文本的長度線性增長。例如,使用 Llama-3-70B 模型處理一個(gè)長度為 128K token 的提示(這大約相當(dāng)于 Llama 3 技術(shù)報(bào)告本身的長度),就需要分配高達(dá) 42GB 的內(nèi)存專門用于存儲(chǔ) KV 緩存。

許多先前的工作意識(shí)到了這個(gè)問題,并提出了從內(nèi)存中丟棄(驅(qū)逐)部分鍵值對(duì)的方法,以實(shí)現(xiàn)所謂的「稀疏注意力」。然而,在一個(gè)公平的環(huán)境下對(duì)它們進(jìn)行橫向比較卻異常困難。

image.png

生成過程 = 預(yù)填充(對(duì)輸入進(jìn)行前向傳播并保存鍵值對(duì))+ 后填充(一次解碼一個(gè)輸出詞元)。

有些論文旨在加速預(yù)填充階段;另一些則忽略該階段,轉(zhuǎn)而致力于最小化后填充階段的內(nèi)存開銷。同樣,有的研究側(cè)重于吞吐量,而另一些則著力于優(yōu)化內(nèi)存使用。

陳丹琦團(tuán)隊(duì)提出了「KV 足跡」作為一種統(tǒng)一的度量標(biāo)準(zhǔn),它是在所有時(shí)間步中,未被逐出的鍵值緩存條目所占比例的聚合值。這一個(gè)指標(biāo)就同時(shí)涵蓋了預(yù)填充和解碼兩個(gè)階段的全部開銷,使得在同等基礎(chǔ)上比較不同方法成為可能。

image.png

  • 論文標(biāo)題:Cache Me If You Can: How ManyKVsDoYouNeed for Effective Long-Context LMs?
  • 論文地址:https://arxiv.org/pdf/2506.17121v1
  • 代碼地址: https://github.com/princeton-pli/PruLong

為了確保比較的實(shí)用價(jià)值,團(tuán)隊(duì)定義了「關(guān)鍵 KV 足跡」:即在模型性能相對(duì)于完整的全注意力機(jī)制不低于 90% 的前提下,一個(gè)方法所能達(dá)到的最小 KV 足跡。這個(gè)「90% 性能」的硬性標(biāo)準(zhǔn),確保了我們比較的是真正有用的、未嚴(yán)重犧牲模型能力的優(yōu)化方法。

該度量標(biāo)準(zhǔn)揭示了先前 KV 驅(qū)逐方法存在的高峰值內(nèi)存問題。其中后填充驅(qū)逐由于與預(yù)填充階段的驅(qū)逐不兼容,導(dǎo)致其 KV 足跡非常高。團(tuán)隊(duì)對(duì)這類方法進(jìn)行了改進(jìn),使其能夠在預(yù)填充期間驅(qū)逐 KV,從而顯著降低了 KV 足跡。

接著,團(tuán)隊(duì)轉(zhuǎn)向「新近度驅(qū)逐」方法,并在此基礎(chǔ)上提出了 PruLong,這是一種端到端的優(yōu)化方法,用于學(xué)習(xí)哪些注意力頭需要保留完整的 KV 緩存,而哪些則不需要。PruLong 在節(jié)省內(nèi)存的同時(shí)保持了長上下文性能,其 KV 足跡比先前的方法小 12%,并且在具有挑戰(zhàn)性的召回任務(wù)中保持了原有的性能。

KV 緩存驅(qū)逐的統(tǒng)一框架

測量關(guān)鍵的 KV 占用空間

給定一個(gè)包含圖片個(gè) token 的提示語圖片,基于 Transformer 的語言模型通常分兩個(gè)階段來生成一個(gè)響應(yīng)圖片

  • 預(yù)填充

整個(gè)輸入序列圖片在一次前向傳播過程中被處理。每個(gè)注意力頭 h 的鍵值狀態(tài)

圖片被存儲(chǔ)在 KV 緩存中。這里 圖片,其中 d 是該注意力頭的維度。

  • 解碼

逐個(gè)解碼生成 圖片這些 token,每次生成時(shí)都會(huì)讀取并更新 KV 緩存。

KV 緩存的存儲(chǔ)消耗會(huì)隨著提示長度和生成長度的增加而線性增長,研究人員提出了許多方法來解決這一開銷問題??傮w而言,這些方法通過稀疏化注意力模式,從而允許某些 KV 條目被驅(qū)逐。

然而,這些方法針對(duì)推理流程的不同階段進(jìn)行了定制:有些方法在預(yù)填充階段之后丟棄 KV 條目,而另一些方法則在預(yù)填充階段也對(duì) KV 緩存進(jìn)行修剪。這使得對(duì)不同方法進(jìn)行公平且全面的比較變得困難。首先探討為何常用的 KV 緩存大小指標(biāo)無法衡量模型在實(shí)際應(yīng)用中的實(shí)用性。

在實(shí)際應(yīng)用中,對(duì)長上下文進(jìn)行單次前向傳播的預(yù)填充操作成本高昂。對(duì)于長輸入序列,將輸入序列分割成多個(gè)塊,并在多次前向傳播中處理這些塊的分塊預(yù)填充方法正日益成為標(biāo)準(zhǔn)實(shí)踐。這種方法通常能夠減少與長輸入相關(guān)的峰值 GPU 內(nèi)存占用,并使得較短提示的解碼過程能夠與較長提示的額外塊同時(shí)進(jìn)行。

此外,像多輪對(duì)話或交錯(cuò)工具調(diào)用等場景,還需要多個(gè)解碼和預(yù)填充階段,這就需要一種全面的方法來衡量 KV 占用空間。而推測性解碼進(jìn)一步模糊了預(yù)填充階段和解碼階段之間的界限,因?yàn)榻獯a過程變得更加依賴計(jì)算資源。

在考慮預(yù)填充和解碼過程中都進(jìn)行多次前向傳播的推理情況時(shí),「KV 占用空間」應(yīng)考慮隨時(shí)間變化的內(nèi)存使用情況。例如,它應(yīng)反映出在分塊預(yù)填充過程中,是否在預(yù)填充完成之前就已經(jīng)驅(qū)逐了 KV 條目。

具體的推理過程由輸入長度、輸出長度以及因方法而異的實(shí)現(xiàn)細(xì)節(jié)來表征。由于缺乏能夠捕捉所有這些細(xì)微差別的指標(biāo),本研究提出了一種理想化的指標(biāo),該指標(biāo)能夠:(1)跟蹤整個(gè)預(yù)填充和解碼過程中的 KV 緩存內(nèi)存使用情況;(2)考慮每個(gè) KV 條目的生命周期,從而實(shí)現(xiàn)對(duì)不同方法的公平且全面的比較。

本研究檢查這些方法的注意力模式(圖 1),并將每個(gè)鍵值(KV)條目分類為:活躍的(在當(dāng)前步驟中使用)、非活躍的(在當(dāng)前步驟中存儲(chǔ)但未使用)或被驅(qū)逐的(在任何未來的步驟中都未使用,并從內(nèi)存中移除)。本研究將 KV 占用空間定義為所有時(shí)間步中未被驅(qū)逐的注意力條目的數(shù)量。該數(shù)值被歸一化為完全因果注意力。

51fe3d4557a6e2589f5d56adb187280.png

例如,在圖 1 中,KV 占用空間為 26/36=72.2%。一種理想的方法會(huì)盡早驅(qū)逐 KV,以盡量減少占用空間。本研究考慮了另一種指標(biāo),該指標(biāo)跟蹤注意力矩陣中的峰值 KV 占用率。在實(shí)驗(yàn)中,這兩種指標(biāo)得出的結(jié)論相似。

本研究還討論了方法與實(shí)際性能指標(biāo)(如總令牌吞吐量和 GPU 內(nèi)存利用率)之間的關(guān)系。研究發(fā)現(xiàn),在許多情況下,KV 占用空間與吞吐量密切相關(guān),但具體的排名取決于 KV 驅(qū)逐之外的實(shí)現(xiàn)細(xì)節(jié)——不同方法在不同實(shí)現(xiàn)框架下的實(shí)際效率差異很大。

關(guān)鍵 KV 占用空間:以往的研究通常在固定的稀疏度水平下報(bào)告任務(wù)性能,但本研究認(rèn)為,一個(gè)更有意義的指標(biāo)是在保留大部分原始性能的情況下所能達(dá)到的稀疏度。本研究將關(guān)鍵 KV 占用空間定義為一種方法在長上下文任務(wù)中保留完整注意力性能的一部分(本文中圖片)時(shí)所需的最小占用空間。低于此閾值,性能下降可能會(huì)過于嚴(yán)重,導(dǎo)致該方法無法繼續(xù)使用。

高效長上下文推理的現(xiàn)有方法

本研究調(diào)研了高效的長上下文方法,并討論了它們?nèi)绾纹鹾媳狙芯康?KV 占用空間框架。表 1 概述了主要方法,展示了這些方法如何進(jìn)行不同的權(quán)衡以及使用不同的稀疏性概念。

68458eb0a8d569746ffe8872de3b2a7.png

動(dòng)態(tài)和預(yù)填充稀疏性方面:Native Sparse Attention、MoBA、QUEST 和 TokenButler 將 KV 緩存視為兩級(jí)層次結(jié)構(gòu),僅將相關(guān)的注意力塊從高帶寬內(nèi)存(HBM)加載到片上 SRAM 進(jìn)行處理。像 MInference 和 FTP 這類技術(shù),在預(yù)填充階段使用動(dòng)態(tài)稀疏注意力來近似全注意力。動(dòng)態(tài)稀疏性方法會(huì)產(chǎn)生更多非活躍的 KV,能夠提升吞吐量,但它們并未減少 KV 內(nèi)存,因此這些方法與本研究的關(guān)注點(diǎn)正交。

近期性驅(qū)逐:先前的研究確定了流式注意力頭,這些注意力頭僅關(guān)注局部滑動(dòng)窗口和一組初始的「匯聚令牌」。驅(qū)逐遠(yuǎn)距離的鍵值(KV)條目會(huì)大幅減少 KV 占用空間(圖 2),因?yàn)樵谏舷挛拈L度增加時(shí),KV 緩存的大小保持固定,并且這種方法可在預(yù)填充和解碼過程中應(yīng)用。然而,近期性驅(qū)逐可能會(huì)「遺忘」相關(guān)的遠(yuǎn)距離上下文,這促使 DuoAttention 和 MoA 僅將一部分注意力頭轉(zhuǎn)換為流式頭。作為 KV 緩存壓縮的有前景的候選方法,后續(xù)將更詳細(xì)地討論這些方法。

后填充驅(qū)逐:我們使用「后填充驅(qū)逐」這一術(shù)語來指代在預(yù)填充階段結(jié)束后從鍵值(KV)緩存中刪除令牌的方法。這些方法依賴于通?;谧⒁饬Ψ?jǐn)?shù)的啟發(fā)式規(guī)則來識(shí)別上下文中最重要鍵值對(duì)。這些方法可以在預(yù)填充后大量修剪鍵值對(duì),并在解碼過程中減少 KV 內(nèi)存。然而,在具有長提示和短生成的推理場景中,由于所有 KV 條目在預(yù)填充期間都保存在內(nèi)存中,這也會(huì)在驅(qū)逐前導(dǎo)致相當(dāng)大的峰值內(nèi)存,后填充驅(qū)逐只能實(shí)現(xiàn)有限的 KV 占用空間減少。

正交技術(shù):量化通過降低 KV 緩存的精度而非基數(shù)來節(jié)省內(nèi)存,并且可以與本文考慮的任何方法結(jié)合使用。另一個(gè)方向是在預(yù)訓(xùn)練新語言模型之前設(shè)計(jì)內(nèi)存高效的架構(gòu)。這可能涉及在查詢或?qū)又g重用 KV 狀態(tài),降低鍵值維度,或者交錯(cuò)全局和局部注意力層。其他方法是用循環(huán)層、線性注意力或狀態(tài)空間層替換 softmax 注意力。這些方法與 KV 驅(qū)逐正交。

PruLong:一種用于注意力頭專業(yè)化的端到端方法

本研究探討過:驅(qū)逐「陳舊」鍵值對(duì)(KVs)雖能顯著降低內(nèi)存占用,但可能導(dǎo)致重要?dú)v史信息的丟失。這一發(fā)現(xiàn)推動(dòng)了后續(xù)研究工作,旨在識(shí)別哪些注意力頭關(guān)注全局上下文、哪些聚焦局部上下文,從而僅對(duì)局部注意力頭中的 KVs 執(zhí)行驅(qū)逐操作。

DuoAttention 將注意力頭分為兩類:檢索頭,從整個(gè)上下文中召回相關(guān)信息;流式頭,僅關(guān)注最近的 token 和輸入序列開頭的少量「匯聚」token。DuoAttention 通過將注意力機(jī)制表示為流式注意力和全注意力的疊加,并通過參數(shù)化來學(xué)習(xí)注意力頭的類型。

f8b0eaa686c8b0592ce844a76d30ca1.png

其中,圖片圖片分別遍歷 Transformer 的圖片層和圖片個(gè)注意力頭。掩碼圖片通過原始模型和插值模型的最終隱藏狀態(tài)之間的圖片重建損失進(jìn)行訓(xùn)練,并且通過圖片正則化鼓勵(lì)掩碼圖片稀疏化。DuoAttention 使用長上下文訓(xùn)練數(shù)據(jù),該數(shù)據(jù)由合成的大海撈針任務(wù)組成。在收斂時(shí),通過將圖片的底部圖片設(shè)置為 0,其余設(shè)置為 1,獲得圖片的注意力頭稀疏度。

MoA 是另一種使用自然文本的方法,但當(dāng)序列長度超過 8K 個(gè) token 時(shí),由于需要顯式存儲(chǔ)完整的注意力矩陣,難以擴(kuò)展。

雖然 DuoAttention 在實(shí)證中表現(xiàn)出色,但團(tuán)隊(duì)發(fā)現(xiàn)了幾種進(jìn)一步降低其關(guān)鍵 KV 占用空間的方法。團(tuán)隊(duì)結(jié)合這些見解,設(shè)計(jì)出 PruLong(長程精簡注意力機(jī)制),一種用于 KV 驅(qū)逐的端到端方法。PruLong 像 DuoAttention 一樣將注意力頭分為兩類,但在訓(xùn)練目標(biāo)、參數(shù)化和訓(xùn)練數(shù)據(jù)方面進(jìn)行了創(chuàng)新。接下來將依次介紹這些內(nèi)容。

  • 下一個(gè) token 預(yù)測損失

PruLong(長程精簡注意力機(jī)制)直接最小化混合注意力模型的下一個(gè) token 預(yù)測損失,而非最后一個(gè)隱藏狀態(tài)的重建誤差,這與這些模型在文本生成中的使用方式更為契合。

  • 針對(duì)注意力類型優(yōu)化離散掩碼

DuoAttention 學(xué)習(xí)一個(gè)連續(xù)的門控變量圖片,該變量易于優(yōu)化,但沒有反映出在推理過程中 圖片會(huì)被四舍五入為 0 或 1,因此引入了訓(xùn)練-測試差距。PruLong(長程精簡注意力機(jī)制)將圖片視為從由圖片參數(shù)化的伯努利分布中抽取的二進(jìn)制掩碼,并通過來自剪枝文獻(xiàn)的既定方法——將伯努利分布重新參數(shù)化為硬實(shí)體隨機(jī)變量,實(shí)現(xiàn)端到端優(yōu)化。最終目標(biāo)如下

a149830c0a8a6c95650f0840762b208.png

其中,圖片(正則化損失)通過約束掩碼整體稀疏度圖片(稀疏度函數(shù))逼近目標(biāo)值圖片(目標(biāo)稀疏度),該過程通過 min-max 優(yōu)化實(shí)現(xiàn)——圖片圖片作為可訓(xùn)練的拉格朗日乘子,通過梯度上升法進(jìn)行優(yōu)化。

  • 利用自然長上下文數(shù)據(jù)


PruLong 利用自然長上下文數(shù)據(jù)。DuoAttention 的合成訓(xùn)練數(shù)據(jù)僅需要簡單的長程回憶能力,而實(shí)際應(yīng)用場景可能需要更復(fù)雜的能力。PruLong 由高天宇等人在自然長上下文預(yù)訓(xùn)練數(shù)據(jù)上進(jìn)行訓(xùn)練,這些數(shù)據(jù)包含代碼倉庫和書籍等,具有多樣的長程依賴關(guān)系。

PruLong 論文地址:https://arxiv.org/abs/2410.02660

責(zé)任編輯:張燕妮 來源: 機(jī)器之心
相關(guān)推薦

2022-07-26 09:56:48

模型AI

2023-10-12 12:13:16

AI訓(xùn)練

2025-01-08 13:05:56

2024-07-18 12:58:03

2025-02-13 12:23:28

2024-05-27 08:40:00

2024-02-29 12:49:37

2025-01-07 12:55:00

訓(xùn)練數(shù)據(jù)模型

2022-02-17 14:52:10

模型AI谷歌

2024-10-08 14:48:24

2025-01-16 09:00:00

2021-05-20 17:04:23

AI

2022-02-21 17:22:35

模型

2018-05-28 08:54:45

SparkRDD Cache緩存

2023-10-25 09:19:00

AI訓(xùn)練

2023-05-05 18:38:33

多級(jí)緩存Caffeine開發(fā)

2024-03-12 13:14:58

模型訓(xùn)練

2014-06-12 08:53:01

團(tuán)隊(duì)團(tuán)隊(duì)效率

2022-05-13 09:02:34

LinuxBufferCache

2012-03-21 10:29:22

云計(jì)算云服務(wù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)