聲明:本文來自于微信公眾號量子位(ID:QbitAI),作者:豐色,授權(quán)轉(zhuǎn)載發(fā)布
一提到提高大模型長文本能力,就想到長度外推或者上下文窗口擴(kuò)展?
不行,這些都太費硬件資源了。
來看一個奇妙新解:
和長度外推等方法使用KV緩存的本質(zhì)不同,它用模型的參數(shù)來存儲大量上下文信息。
具體辦法就是建一個臨時Lora模塊,讓它僅在長文本生成過程中“流式更新”,也就是用先前生成的內(nèi)容不斷作為輸入來充當(dāng)訓(xùn)練數(shù)據(jù),以此保證知識被存進(jìn)模型參數(shù)中。
然后一旦推理完成,就丟掉它,保證不對模型參數(shù)產(chǎn)生長久影響。
這個方法可以讓我們不用擴(kuò)展上下文窗口的同時,隨便存儲上下文信息,想存多少存多少。
實驗證明,這種方法:
既可以顯著提高模型長文本任務(wù)質(zhì)量,實現(xiàn)困惑度下降29.6%,長文本翻譯質(zhì)量(BLUE得分)提高53.2%;
還能兼容并增強(qiáng)現(xiàn)有大多數(shù)長文本生成方法。
最重要的是,能大大降低計算成本。
在保證生成質(zhì)量小幅提升(困惑度降低3.8%)的同時,推理所需的FLOPs降低70.5%、延遲降低51.5%!
具體情況,我們翻開論文來看。
建個臨時Lora模塊用完即丟
該方法名叫Temp-Lora,架構(gòu)圖如下:
其核心就是以自回歸的方式用先前生成的文本上逐步訓(xùn)練臨時Lora模塊。
該模塊適應(yīng)性很強(qiáng)可以不斷調(diào)整,因此對不同遠(yuǎn)近的上下文都能深入理解。
具體算法如下:
在生成過程中,token是逐塊生成的。每次生成塊時,使用最新的Lxtoken作為輸入X生成后續(xù)token。
一旦生成的token數(shù)量達(dá)到預(yù)定義的區(qū)塊大小?,就使用最新的塊啟動Temp-Lora模塊的訓(xùn)練,然后開始下一個塊生成。
在實驗中,作者將?+Lx設(shè)置為W,以充分利用模型的上下文窗口大小。
對于Temp-Lora模塊的訓(xùn)練,如果在沒有任何條件的情況下,學(xué)習(xí)生成新的塊可能構(gòu)不成有效的訓(xùn)練目標(biāo),并導(dǎo)致嚴(yán)重的過擬合。
為了解決這個問題,作者將每個塊前面的LT標(biāo)記合并到訓(xùn)練過程中,將它們用作輸入,將塊用作輸出。
最后,作者還提出了一種稱為緩存重用(Cache Reuse)策略來實現(xiàn)更高效的推理。
一般來說,在標(biāo)準(zhǔn)框架中更新Temp-Loramo模塊后,我們需要使用更新的參數(shù)重新計算KV狀態(tài)。
或者,重用現(xiàn)有的緩存KV狀態(tài),同時使用更新的模型進(jìn)行后續(xù)的文本生成。
具體來說,只有當(dāng)模型生成最大長度(上下文窗口大小W)時,我們才使用最新的Temp-Lora模塊重新計算KV狀態(tài)。
這樣的緩存重用方法就可以在不顯著影響生成質(zhì)量的情況下加快生成速度。
關(guān)于Temp-Lora方法的介紹就這么多,下面主要看測試。
文本越長,效果越好
作者在Llama2-7B-4K、Llama2-13B-4K、Llama2-7B-32K以及Yi-Chat-6B模型上上對Temp-Lora框架進(jìn)行了評估,并涵蓋生成和翻譯這兩類長文本任務(wù)。
測試數(shù)據(jù)集一個是長文本語言建模基準(zhǔn)PG19的子集,從中隨機(jī)抽取了40本書。
另一個是來自WMT2023的國風(fēng)數(shù)據(jù)集的隨機(jī)抽樣子集,包含20部中文網(wǎng)絡(luò)小說,由專業(yè)人員翻譯成英文。
首先來看PG19上的結(jié)果。
下表顯示了PG19上帶有和不帶有Temp-Lora模塊的各種型號的PPL(困惑度,反映模型對于給定輸入的不確定性,越低越好)比較。將每個文檔劃分為0-100K到500K+token的片段。
可以看到,所有型號經(jīng)過Temp-Lora之后PPL都顯著下降,并且隨著片段越來越長,Temp-Lora的影響更加明顯(1-100K僅降低3.6%,500K+降低13.2%)。
因此,我們可以簡單地得出結(jié)論:文本越多,使用Temp-Lora的必要性就越強(qiáng)。
此外我們還能發(fā)現(xiàn),將塊大小從1024調(diào)整到2048和4096導(dǎo)致PPL略有增加。
這倒是不奇怪,畢竟Temp-Lora模塊是在之前塊的數(shù)據(jù)上訓(xùn)練的。
這個數(shù)據(jù)主要是告訴我們塊大小的選擇是生成質(zhì)量和計算效率之間的關(guān)鍵權(quán)衡(進(jìn)一步分析可以查閱論文)。
最后,我們還能從中發(fā)現(xiàn),緩存重復(fù)使用不會導(dǎo)致任何性能損失。
作者表示:這是一個非常令人鼓舞的消息。
下面是國風(fēng)數(shù)據(jù)集上的結(jié)果。
可以看到,Temp-Lora對長文本文學(xué)翻譯任務(wù)也有顯著影響。
與基礎(chǔ)模型相比,所有指標(biāo)都有顯著改進(jìn):PPL降低了-29.6%,BLEU得分(機(jī)器翻譯文本與高質(zhì)量參考翻譯的相似度)提高了+53.2%,COMET得分(也是一個質(zhì)量指標(biāo))提高了+8.4%。
最后,是計算效率和質(zhì)量方面的探索。
作者經(jīng)實驗發(fā)現(xiàn),使用最“經(jīng)濟(jì)”的Temp-Lora配置(?=2K,W=4K),能將PPL降低3.8%的同時,節(jié)省70.5%的FLOP和51.5%的延遲。
相反,如果我們完全忽略計算成本,使用最“豪華”的配置(?=1K和W=24K),也可以實現(xiàn)5.0%的PPL降低,并額外增加17%的FLOP和19.6%的延遲。
使用建議
總結(jié)以上結(jié)果,作者也給出了實際應(yīng)用Temp-Lora的三點建議:
1、對于需要最高級別長文本生成的應(yīng)用,在不更改任何參數(shù)的情況下,集成Temp-Lora到現(xiàn)有模型中,就能以相對適中的成本顯著提高性能。
2、對于看重最小延遲或內(nèi)存使用的應(yīng)用,可以通過減少輸入長度和在Temp-Lora中存儲的上下文信息來顯著降低計算成本。
在這種設(shè)置下,我們可以使用固定的短窗口大小(如2K或4K)來處理幾乎無限長的文本(在作者的實驗中為500K+)。
3、最后,請注意,在不含大量文本的場景中,例如預(yù)訓(xùn)練中上下文比模型的窗口大小還小,Temp-Lora就是毫無用處的。
作者來自保密機(jī)構(gòu)
值得一提的是,發(fā)明這么簡單又創(chuàng)新的辦法,作者卻沒有留下太多出處信息:
機(jī)構(gòu)名稱直接落款“保密機(jī)構(gòu)”,三位作者的名字也只有完整的姓。
不過從郵箱信息來看,可能來自港城大、港中文等學(xué)校。
最最后,對于這個方法,你覺得怎么樣?
論文:
https://arxiv.org/abs/2401.11504
本文鏈接:匿名論文提出奇招,增強(qiáng)大模型長文本能力居然還能這么做http://www.lensthegame.com/show-3-9122-0.html
聲明:本網(wǎng)站為非營利性網(wǎng)站,本網(wǎng)頁內(nèi)容由互聯(lián)網(wǎng)博主自發(fā)貢獻(xiàn),不代表本站觀點,本站不承擔(dān)任何法律責(zé)任。天上不會到餡餅,請大家謹(jǐn)防詐騙!若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。
上一篇: linux中國創(chuàng)始人「再見,Linux中國」
下一篇: 圖領(lǐng)域首個通用框架來了!入選ICLR'24 Spotlight,任意數(shù)據(jù)集、分類問題都可搞定|來自華盛頓大學(xué)&北大&京東