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