自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

將26個(gè)token壓縮成1個(gè),新方法極致節(jié)省ChatGPT輸入框空間

人工智能 新聞
降低 ChatGPT 等大語(yǔ)言模型的 prompt 成本,斯坦福大學(xué)的這篇論文提供了全新的思路。

進(jìn)入正文之前,先考慮一下像 ChatGPT 這樣的 Transformer 語(yǔ)言模型(LM)的 prompt:

圖片

隨著每天產(chǎn)生數(shù)百萬(wàn)用戶和查詢,ChatGPT 使用自注意力機(jī)制對(duì) prompt 進(jìn)行反復(fù)編碼,其時(shí)間和內(nèi)存復(fù)雜度隨輸入長(zhǎng)度呈二次方增長(zhǎng)。緩存 prompt 的 transformer 激活可以防止部分重新計(jì)算,但隨著緩存 prompt 數(shù)量的增加,這種策略仍然會(huì)產(chǎn)生很大的內(nèi)存和存儲(chǔ)成本。在大規(guī)模情況下,即使 prompt 長(zhǎng)度稍微減少一點(diǎn),也可能會(huì)帶來計(jì)算、內(nèi)存和存儲(chǔ)空間的節(jié)省,同時(shí)還可以讓用戶將更多內(nèi)容放入 LM 有限的上下文窗口中。

那么。應(yīng)該如何降低 prompt 的成本呢?典型的方法是微調(diào)或蒸餾模型,使其在沒有 prompt 的情況下表現(xiàn)得與原始模型相似,或許還可以使用參數(shù)高效的自適應(yīng)方法。然而,這種方法的一個(gè)基本缺點(diǎn)是每次需要為新的 prompt 重新訓(xùn)練模型(下圖 1 中間所示)。

圖片

本文中,斯坦福大學(xué)的研究者提出了 gisting 模型(上圖 1 底部),它將任意 prompt 壓縮成一組更小的虛擬「Gist」 token,類似于前綴微調(diào) 。然而,前綴微調(diào)需要通過梯度下降為每個(gè)任務(wù)學(xué)習(xí) prefix,而 Gisting 采用元學(xué)習(xí)方法,僅僅通過 prompt 預(yù)測(cè) Gist prefix,而不需要為每個(gè)任務(wù)進(jìn)行 prefix 學(xué)習(xí)。這樣可以攤銷每個(gè)任務(wù) prefix 學(xué)習(xí)的成本,使得在沒有額外訓(xùn)練的情況下泛化到未知的指令。

此外,由于「Gist」token 比完整 prompt 要短得多,因此 Gisting 允許 prompt 被壓縮、緩存和重復(fù)使用,以提高計(jì)算效率。

圖片

論文地址:https://arxiv.org/pdf/2304.08467v1.pdf

研究者提出了一種非常簡(jiǎn)單的方法來學(xué)習(xí)指令遵循的 gist 模型:簡(jiǎn)單地進(jìn)行指令微調(diào),在 prompt 后插入 gish token,修改后的注意力掩膜阻止 gist token 后的 token 參考 gist token 前的 token。這使得模型同時(shí)學(xué)習(xí) prompt 壓縮和指令遵循,而無(wú)需額外的訓(xùn)練成本。

在 decodr-only(LLaMA-7B)和 encoder-decoder(FLAN-T5-XXL)LM 上,gisting 可實(shí)現(xiàn)高達(dá) 26 倍的即時(shí)壓縮率,同時(shí)保持與原始模型相似的輸出質(zhì)量。這使得推理過程中 FLOPs 減少了 40%,延遲加速了 4.2%,與傳統(tǒng)的 prompt 緩存方法相比,存儲(chǔ)成本大大降低。

Gisting

研究者首先在指令微調(diào)的背景下描述 gisting。對(duì)于指令遵循數(shù)據(jù)集

圖片

,t 表示用自然語(yǔ)言 prompt 編碼的任務(wù) (例如將此翻譯成法語(yǔ)),x 表示任務(wù)的(可選)輸入 (例如 The cat),y 表示期望的輸出(例如 Le chat)。指令微調(diào)的目的是通過連接 t 和 x,然后讓通常預(yù)先訓(xùn)練的語(yǔ)言模型自回歸地預(yù)測(cè) y,從而學(xué)習(xí)分布 pLM(y | t,x)。推理時(shí)可以使用新的任務(wù) t 和輸入 x 進(jìn)行 prompt,從模型中解碼以獲得預(yù)測(cè)結(jié)果。

然而,連接 t 和 x 的這種模式具有缺點(diǎn):基于 Transformer 的 LM 具有有限的上下文窗口,其受架構(gòu)或計(jì)算能力所限。后者特別難解決,因?yàn)樽宰⒁饬﹄S輸入長(zhǎng)度呈二次方擴(kuò)展。因此很長(zhǎng)的 prompt,尤其那些被反復(fù)重用的 prompt,計(jì)算效率低下。有哪些選項(xiàng)可以用來降低 prompt 的成本呢?

一種簡(jiǎn)單的方法是針對(duì)特定任務(wù) t 進(jìn)行 LM 微調(diào),即給定包含僅在任務(wù) t 下的輸入 / 輸出示例的數(shù)據(jù)集

圖片

,可以學(xué)習(xí)一個(gè)專門的

圖片

,它更快,因?yàn)椴恍枰紤] t。

更好的是,prefix/prompt 微調(diào)或 adapter 等參數(shù)高效微調(diào)方法能夠以比全面微調(diào)低得多的成本實(shí)現(xiàn)相同的目的。然而仍然存在問題:必須至少存儲(chǔ)每個(gè)任務(wù)的一部分模型權(quán)重,并且更重要的是,對(duì)于每個(gè)任務(wù) t,必須收集相應(yīng)的輸入 / 輸出對(duì)數(shù)據(jù)集 D^t 并重新訓(xùn)練模型。

Gisting 是一種不同的方法,它攤銷了兩部分成本:(1)在 t 上條件化 p_LM 的推理時(shí)間成本,(2)學(xué)習(xí)每個(gè) t 的新 p^t_LM 的訓(xùn)練時(shí)間成本。其思想是在微調(diào)期間學(xué)習(xí) t 的壓縮版本 G (t),使得從 p_G (y | G (t),x) 進(jìn)行推理比從 p_LM (y|t,x) 更快。

在 LM 術(shù)語(yǔ)中,G (t) 將是一組「虛擬」的 Gist token,其數(shù)量比 t 中的 token 少,但仍會(huì)在 LM 中引起類似的行為。接著可以緩存并重復(fù)使用 G (t) 上的 transformer 激活(例如鍵和值矩陣)以提高計(jì)算效率。重要的是,研究者希望 G 可以泛化到未見過的任務(wù):給定一個(gè)新任務(wù) t,則可以預(yù)測(cè)并使用相應(yīng)的 Gist 激活 G (t) 而無(wú)需進(jìn)行任何額外訓(xùn)練。

通過掩膜學(xué)習(xí) Gisting

上文描述了 Gisting 的一般框架,接下來將探討一種學(xué)習(xí)此類模型的極簡(jiǎn)單方法:使用 LM 本身用作 Gist 預(yù)測(cè)器 G。這不僅利用了 LM 中的預(yù)存在知識(shí),而且允許通過簡(jiǎn)單地執(zhí)行標(biāo)準(zhǔn)指令微調(diào)來學(xué)習(xí) gisting 并修改 Transformer 注意力掩膜來增強(qiáng) prompt 壓縮。這意味著 Gisting 不會(huì)產(chǎn)生額外訓(xùn)練成本,只需要基于標(biāo)準(zhǔn)指令微調(diào)即可!

具體來說,向模型詞匯表和嵌入矩陣中添加一個(gè)特殊的 gist token,類似于此類模型中常見的句子開頭 / 結(jié)尾 token。然后對(duì)于給定的(任務(wù),輸入)元組(t,x),使用 (t, g_1, . . . , g_k, x) 中一組 k 個(gè)連續(xù)的 gist token 將 t 和 x 連接在一起,例如

圖片

。這個(gè)序列被輸入到模型中,有一個(gè)限制,即在 gist token 之后的輸入 token 不能參考之前的 prompt token(但它們可以參考 gist token)。這會(huì)強(qiáng)制模型將 prompt 中的信息壓縮成 gist token,因?yàn)檩斎?x (輸出 y) 無(wú)法處理 prompt t。

下圖 2 展示了所需要的更改。對(duì)于 GPT-3 或 LLaMA 等通常采用自回歸因果注意力掩膜的 decoder-only LM,只需 mask out 圖 2a 所示的三角形左下角。對(duì)于具有雙向編碼器和自回歸解碼器的 encoder-decoder LM,則需要進(jìn)行兩項(xiàng)修改(圖 2b 所示)。

首先,在通常沒有掩膜的編碼器中,阻止輸入 token x 參考 prompt token t。但還必須防止 prompt t 和 gist token g_i 參考輸入 token x,否則編碼器將根據(jù)輸入學(xué)習(xí)不同的 gist 表示。最后解碼器正常運(yùn)行,除了在交叉注意力期間,這時(shí)需要阻止解碼器參考 prompt token t。

圖片

實(shí)驗(yàn)結(jié)果

對(duì)于不同數(shù)量的 gist token, LLaMA-7B 和 FLAN-T5-XXL 的 ROUGE-L 和 ChatGPT 評(píng)估結(jié)果如下圖 3 所示。

圖片

模型通常對(duì) gist token 的數(shù)量 k 不敏感:將 prompt 壓縮到單個(gè) token 并不會(huì)導(dǎo)致顯著性能下降。事實(shí)上,在某些情況下,過多的 gist token 會(huì)損害性能 (例如 LLaMA-7B, 10 gist tokens),這可能是因?yàn)樵黾拥娜萘渴褂?xùn)練分布過擬合。因此,研究者在下表 1 中給出了單 token 模型的具體數(shù)值,并在剩余實(shí)驗(yàn)中使用單個(gè) gist 模型。

圖片

在見過的指令上,gist 模型獲得了與其對(duì)應(yīng)陽(yáng)性對(duì)照模型幾乎相同的 ROUGE 和 ChatGPT 性能,在 LLaMA-7B FLANT5-XXL 上的勝率分別為 48.6% 和 50.8%。這里研究者最感興趣的是它們?cè)谖匆娺^任務(wù)上的泛化能力,這需要通過另外兩個(gè)數(shù)據(jù)集來衡量的。

在 Alpaca+ 訓(xùn)練數(shù)據(jù)集中未見過的 prompt 中,可以看到 gist 模型在未見過 prompt 上有著強(qiáng)大的泛化能力:與對(duì)照組相比,分別有 49.7%(LLaMA)和 46.2%(FLAN-T5)的勝率。在最具挑戰(zhàn)性的 OOD Human split 上,gist 模型的勝率略微下降,分別為 45.8%(LLaMA)和 42.5%(FLANT5)。

本文的目的是讓 gist 模型緊密地模仿原始模型的功能,因此有人可能會(huì)問究竟什么時(shí)候 gist 模型與對(duì)照組無(wú)差別。下圖 4 說明了這種情況發(fā)生的頻率:對(duì)于已見過任務(wù)(但是未見過的輸入),gist 模型幾乎有一半的時(shí)間與對(duì)照組不相上下。對(duì)于未見過的任務(wù),這一數(shù)字下降到了 20-25%。對(duì)于 OOD Human 任務(wù),這一數(shù)字又下降到 10%。無(wú)論如何,gist 模型輸出的質(zhì)量是很高的。

圖片

總的來說,這些結(jié)果表明,gist 模型可以可靠地壓縮 prompt,甚至在訓(xùn)練分布之外的某些 prompt 上也可以做到這一點(diǎn),特別是像 LLaMA 這樣的 decoder-only 因果 LM。FLAN-T5 等 encoder-decoder 模型表現(xiàn)略差,一個(gè)可能的原因是 gist 掩膜抑制了編碼器中的雙向注意力流,這比僅 mask 自回歸解碼器的一部分 history 更具挑戰(zhàn)性。未來需要進(jìn)一步的工作來研究這個(gè)假設(shè)。

計(jì)算、內(nèi)存和存儲(chǔ)效率

最后,回到這項(xiàng)工作的核心動(dòng)機(jī)之一:gisting 可以帶來什么樣的效率提升?

下表 2 展示了使用 PyTorch 2.0 分析器對(duì)模型進(jìn)行單次前向傳遞的結(jié)果(即使用單個(gè)輸入 token 的自回歸解碼的一步),并對(duì) Human eval split 中的 252 個(gè)指令取平均值。與未經(jīng)優(yōu)化的模型相比,gist 緩存顯著提高了效率。兩種模型的 FLOPs 節(jié)約率達(dá)到了 40%,時(shí)鐘時(shí)間降低了 4-7%。

圖片

然而更重要的是,與指令緩存相比,gist 緩存有著除延遲之外的關(guān)鍵優(yōu)勢(shì):將 26 個(gè) token 壓縮為 1 個(gè)可以在輸入上下文窗口中騰出更多空間,這受到絕對(duì)位置嵌入或者 GPU VRAM 的限制。特別是對(duì)于 LLaMA-7B,KV 緩存中的每個(gè) token 需要 1.05MB 的存儲(chǔ)空間。盡管在測(cè)試的 prompt 長(zhǎng)度下,KV 緩存相對(duì)于 LLaMA-7B 推斷所需的內(nèi)存總貢獻(xiàn)微不足道,但一個(gè)越來越常見的場(chǎng)景是開發(fā)人員在大量用戶之間緩存許多 prompt,存儲(chǔ)成本很快就會(huì)增加。在存儲(chǔ)空間相同的情況下,gist 緩存能比完整指令緩存多 26 倍的 prompt。

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

2016-11-02 00:15:31

2012-06-26 14:21:50

JavaScript

2009-02-24 09:06:06

減薪裁員降低成本

2009-02-05 11:10:25

裁員思科

2012-06-19 13:15:58

WANSharePoint

2021-09-27 10:12:42

欺騙防御rMTD網(wǎng)絡(luò)攻擊

2012-10-11 15:16:44

聯(lián)想LJ2400黑白激光打印機(jī)

2022-04-06 18:29:58

CSSJS輸入框

2022-07-25 15:34:01

量化仿真數(shù)據(jù)誤差內(nèi)存占用

2010-04-01 09:30:57

2015-08-21 09:14:40

大數(shù)據(jù)

2011-08-16 11:44:15

散熱數(shù)據(jù)中心服務(wù)器

2022-09-27 15:15:13

量子方程

2019-07-12 13:50:36

物聯(lián)網(wǎng)大數(shù)據(jù)安全

2022-07-07 10:47:16

IngressKubernetes

2018-10-07 07:00:59

2009-04-28 10:42:31

虛擬化 評(píng)估

2012-08-16 16:36:19

Informatica大數(shù)據(jù)云計(jì)算

2020-09-24 14:06:19

Vue

2011-12-26 15:11:36

JavaScript
點(diǎn)贊
收藏

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