谷歌剛刷新大模型上下文窗口長度記錄,發佈支持100萬token的Gemini 1.5,微軟就來砸場子了。

推出大模型上下文窗口拉長新方法——LongRoPE,一口氣將上下文拉至2048k token,也就是200多萬!

並且1000步微調內,即可完成從短上下文到長上下文的擴展,同時保持原來短上下文窗口性能,也就是說訓練成本和時間又省了一大筆。

網友看不下去了,直呼“谷歌太慘了”:

此外值得一提的是,這次LongRoPE爲純華人團隊,論文一作Yiran Ding,就讀於杭州電子科技大學,於實習期間完成該項工作。

LongRoPE究竟長啥樣?先來看一波測試效果。

拿LLaMA2和Mistral試試水

上下文窗口有效拉長,語言模型長文本理解能力可以得到很大提高。研究人員在LLaMA2-7BMistral-7B上應用LongRoPE,從三個方面評估了其性能。

第一項測試是在長文檔上評估擴展上下文語言模型的困惑度。

在256k以內的評估長度上,研究人員使用Proof-pile和PG19數據集來進行測試。

LongRoPE在4k-256k的文本長度上,整體上顯示出困惑度下降的趨勢,優於基準。

即使在上下文窗口長度是標準長度16倍的條件下,LongRoPE-2048k模型在256k上下文長度內也超過了最新基線水平。

接下來上難度,從Books3數據集中隨機選取20本書,每本長度超2048k,使用256k的滑動窗口。

研究人員觀察到2048k的LLaMA2和Mistral之間性能差異顯著。

在8k-128k的文本長度上二者均取得了與基線相當的或更優的困惑度。LLaMA2的困惑度隨着文本長度的增加而逐漸下降,在1024k和2048k長度處略有上升,展示了較好的性能。

不過,Mistral在較短的長度上勝過基線,但當文本長度超過256k時,其困惑度急劇上升。研究人員分析,主要原因是對於Mistral的微調採用了與YaRN相同的設置,即使用16k長度的文本進行訓練,導致了模型難以有效處理更長的文本。

第二項測試是用Passkey檢索任務評估在海量無關文本中檢索簡單密鑰的能力。

也就是在很長的文本中隨機隱藏一個五位數的密碼,讓模型找出這個密碼。

結果顯示,現有模型的準確率在文本超度超128k後迅速下降到0。

而LLaMA2-2048k在4k-2048k文本範圍內保持了90%以上的檢索準確率,Mistral-2048k在1800k之前保持了100%的準確率,在2048k時準確率下降到60%。

第三項測試是在短4096上下文窗口長度內的標準大語言模型基準測試上評估。

這項測試,主要是爲了檢驗模型上下文窗口被擴展後,在原有任務上的表現會不會受到負面影響。

LongRoPE-2048k模型在原始上下文窗口大小的任務上,與原始模型相比表現相當。

在TruthfulQA上,擴展後的Mistral比原始高出0.5%;LLaMA2性能略微下降,但在合理的範圍內。

這是如何做到的?

三大法寶擴展上下文窗口

LongRoPE可以有效擴展模型上下文窗口關鍵有三:非均勻位置插值、漸進式擴展策略、短上下文窗口性能恢復。

非均勻位置插值

位置嵌入(Positional Embeddings)在Transformer架構中,用於幫助模型理解長句中token的順序。

位置嵌入通常是預先定義的,並與模型的其他參數一起訓練,當模型需要處理的文本長度超過其訓練時的上下文窗口時,新出現的token的位置就需要新的位置嵌入。

而LongRoPE通過識別並利用位置嵌入中兩個形式的非均勻性,即不同的RoPE維度和token位置,優化了位置嵌入,不用微調就能實現8倍的上下文窗口擴展。

這種方法通過有效的搜索算法來確定每個RoPE維度的最佳縮放因子,針對每個RoPE維度的旋轉角進行了重新縮放,同時也考慮了token位置的影響。

這樣,模型在擴展上下文窗口的同時,能夠更好地保留關鍵的維度和位置信息,減少信息損失。

漸進式擴展策略

此外,LongRoPE採用了一種漸進式擴展的方法。研究人員先對預訓練的大模型進行微調,使其適應256k長度的文本。

然後,在微調後模型基礎上進行搜索,找到新的位置插值參數以重新縮放RoPE,最終實現2048k上下文窗口,這個過程無需額外微調。

短上下文窗口性能恢復

在RoPE(旋轉位置編碼)中,超長上下文窗口會使得原始窗口內的維度被迫聚集在更小範圍內,從而影響模型性能。

爲此,研究人員調整了短上下文窗口RoPE的重縮放因子,使其與長上下文時不同,緩解了性能下降的問題。

通過這種動態調整機制,LongRoPE在處理極長文本和處理短文本時都表現良好。

LongRoPE發佈後,部分網友認爲RAG恐面臨淘汰:

不過也有質疑的聲音:

那麼,你怎麼看?

相關文章