LLM上下文窗口突破200萬!無需架構變化+復雜微調,輕松擴展8倍
LongRoPE方法首次將LLM的窗口擴展到了2048k個token,只是簡單微調的情況下,就能實現與短上下文窗口相近的性能!
大型語言模型(LLM)往往會追求更長的「上下文窗口」,但由于微調成本高、長文本稀缺以及新token位置引入的災難值(catastrophic values)等問題,目前模型的上下文窗口大多不超過128k個token
最近,Microsoft Research的研究人員提出了一個新模型LongRoPE,首次將預訓練 LLM 的上下文窗口擴展到了2048k個token,在256k的訓練長度下只需要1000個微調步驟即可,同時還能保持原始短上下文窗口的性能。
論文鏈接:https://arxiv.org/abs/2402.13753
代碼鏈接:https: //github.com/microsoft/LongRoPE
LongRoPE主要包含了三個關鍵創新點:
- 通過高效搜索識別并利用了位置插值中的兩種非均勻性,為微調提供了更好的初始化,并在非微調情況下實現了 8 倍擴展;
- 引入了漸進擴展策略,首先微調 256k 長度的 LLM,然后在微調擴展的LLM上進行第二次位置插值,以實現 2048k 上下文窗口;
- 在8k長度上重新調整 LongRoPE以恢復短上下文窗口性能。
在 LLaMA2 和 Mistral 上對各種任務進行的大量實驗證明了該方法的有效性。
通過 LongRoPE 擴展的模型保留了原始架構,只對位置嵌入稍作修改,并且可以重復使用大部分已有的優化。
一、位置插值的不均勻性
Transformer模型需要明確的位置信息,通常以位置嵌入(position embedding)的形式來表示輸入token的順序。
本文中的位置嵌入表示方法主要來自于RoPE, 對于位置索引為 n 的標記,其相應的 RoPE 編碼可簡化如下:
其中,d 是嵌入維度,nθi 是標記在位置 n 上的旋轉角度,θi = θ -2i/d 表示旋轉頻率。在 RoPE 中,θ 的默認基準值為 10000。
受 NTK 和 YaRN 的啟發,研究人員注意到這兩個模型可以從非線性嵌入中獲得性能提升,特別是在考慮 RoPE 各維度的不同頻率以進行專門的內插法和外推法時。
然而,當前的非線性在很大程度上依賴于人為設計的規則。
這也自然引出了兩個問題:
- 當前的位置插值是否是最佳的?
- 是否存在尚未探索的非線性?
為了回答這些問題,研究人員使用進化搜索(evolution search)為LLaMA2-7B發現更好的非均勻位置插值。搜索以易錯性為指導,使用來自PG19驗證集的5個隨機樣本。
通過實證分析,研究人員總結了幾個主要發現。
發現1:RoPE維度表現出很大的不均勻性,目前的位置插值方法無法有效處理這些不均勻性;
在公式 2 中為每個 RoPE 維度搜索最佳 λ。
研究人員對比了PG19和Proof-pile測試集上使用不同方法的 LLaMA2-7B 在不進行微調的情況下的復雜度。
從結果來看,搜索到的解決方案有明顯改善,表明當前的線性(PI,positional interpolation)和非均勻(Dynamic-NTK 和 YaRN)插值方法都不是最佳的。
值得注意的是,YaRN 在 PG19 上的表現不如 PI 和 NTK,因為其達不到非微調 LLM 的目標上下文窗口長度。
例如,在 8k 上下文大小的情況下,YaRN 的困惑度在 7k 后達到峰值。
通過搜索,公式 2 中的重標度(rescaled)因子λ變得不均勻,與PI、NTK的公式計算和YaRN的分組計算中的固定標度s有所不同。
在8k和16k上下文窗口中,這些非均勻因子大大提高了LLaMA2的語言建模性能(即復雜度),而無需進行微調,主要是因為由此產生的位置嵌入有效地保留了原始的RoPE,尤其是關鍵維度,從而降低了LLM區分近似token位置的難度。
發現2:輸入序列中初始詞塊的RoPE推斷應減少插值;
對于輸入序列中的初始n個token,假設RoPE應該做較少的插值,這是因為會獲得較大的注意力分數,從而對注意力層至關重要,正如在Streaming LLM和 LM-Infinite 中觀察到的那樣。
為了驗證這一點,研究人員使用PI和NTK將上下文窗口擴展到 8k 和 16k,保留前 n(0,2, …, 256)個token,不進行插值。當n=0 時,則恢復到原來的 PI 和 NTK
上表中可以觀察到兩個結果:
- 保留起始token而不進行位置插值確實能提高性能。
- 最佳起始token數n取決于目標擴展長度。
發現3:在微調和非微調設置中,非均勻位置插值都能有效擴展 LLM 上下文窗口。
雖然已經證明,在不進行微調的情況下,搜索到的非均勻位置插值能顯著提高8k和16k擴展性能,但更長的擴展需要微調。
因此使用搜索到的RoPE對LLaMA2-7B的64k上下文窗口大小進行了微調。
從結果中可以看到,在微調LLaMA2-7B之前和之后,該方法都明顯優于PI和YaRN,主要原因是有效地使用了非均勻位置插值、最小化信息損失,以及為微調提供了更好的初始化。
受上述發現的啟發,研究人員提出了LongRoPE,首先引入了一種高效的搜索算法,以充分利用這兩種不均勻性,并將LLM上下文窗口擴展到 200 萬個token
具體形式化算法參見原文。
二、實驗結果
研究人員將LongRoPE應用于LLaMA2-7B和Mistral-7B模型上,并從三個方面對其性能進行了評估:
- 長文檔中擴展上下文 LLM 的困惑度;
- 密鑰(passkey)檢索任務,該任務衡量模型從大量無關文本中檢索簡單密鑰的能力;
- 4096上下文窗口的標準LLM基準;
1. 在256k范圍內進行長序列語言建模
在Proof-pile和PG19上通過不同插值方法擴展的 LLaMA2 和 Mistral 的困惑度。
從實驗結果中可以得出兩個關鍵的結論:
- 從 4k 到 256k 的評估長度來看,擴展模型展現出整體困惑度下降的趨勢,表明模型有能力利用更長的上下文;
- 即使在上下文窗口長度為 16 倍的情況下(這通常是在較短上下文長度下保持性能所面臨的挑戰),我們的 LongRoPE-2048k 模型在 256k 上下文長度內的性能仍優于最先進的基線模型。
2. 超過2000k的長序列語言建模
為了評估超長文檔的有效性,研究人員使用了Books3數據集。
為了評估效率,隨機選擇20本書,每本長度超過2048k個token,并使用256k的滑動窗口。
從結果中可以看出,LongRoPE成功地將LLaMA2-7B和Mistral-7B的上下文窗口擴展到2048k,同時還在8k-128k的較短長度內實現了與基線相當或更好的困惑度。
還可以觀察到2048k LLaMA2和Mistral之間的顯著性能差異:Mistral在較短的長度上優于基線,但困惑度在超過256k長度時達到7
LLaMA2的性能與預期一致:隨著時間的延長,困惑感會有所減少,在1024k和2048k時略有增加。
此外,在LLaMA2上,LongRoPE-2048k在256k比128k的微調長度下表現更好,主要是由于次級延伸比(secondary extension ratio)更?。?倍對16倍)。
相比之下,Mistral在微調128k的窗口大小方面表現更好,主要原因是對于Mistral的128k和256k微調,研究人員遵循YaRN的設置使用16k訓練長度,影響了Mistral在微調后進一步擴展上下文窗口的能力。
參考資料:
https://arxiv.org/abs/2402.13753
編輯:LRS
來源公眾號:新智元(ID:AI_era),“智能+”中國主平臺,致力于推動中國從“互聯網+”邁向“智能+”。
本文由人人都是產品經理合作媒體 @新智元 授權發布,未經許可,禁止轉載。
題圖來自 Unsplash,基于 CC0 協議
該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。
- 目前還沒評論,等你發揮!