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