本文來自于微信公眾號 機器之心(ID:almosthuman2014),作者:Panda W。
我們知道在使用 GPT 和 LLaMA 等大型語言模型時,輸入的prompt存在字符數限制,比如 ChatGPT 目前的輸入字符限制是4096個字符。這會限制上下文學習和思維鏈等技術的發揮空間,畢竟用戶只能提供有限的示例數量。近日,Nous Research、EleutherAI 和日內瓦大學的一個研究團隊提出了一種擴展上下文窗口的方案 YaRN ,并在實驗中取得了優于其它所有方法的效果,而且他們還發布了使用 YaRN 微調過的 LLaMA27B/13B 模型,其上下文窗口為64k 和128k。
基于 Transformer 的大型語言模型(LLM)已經展現出執行上下文學習(ICL)的強大能力,并且幾乎已經成為許多自然語言處理(NLP)任務的不二選擇。Transformer 的自注意力機制可讓訓練高度并行化,從而能以分布式的方式處理長序列。LLM 訓練所用的序列的長度被稱為其上下文窗口。
Transformer 的上下文窗口直接決定了可以提供示例的空間量,從而限制了其 ICL 能力。
如果模型的上下文窗口有限,那么為模型提供穩健示例的空間就更少,而這些穩健示例正是執行 ICL 所用的。此外,當模型的上下文窗口特別短時,摘要等其它任務也會受到嚴重妨礙。
就語言本身的性質來說,token 的位置對有效建模來說至關重要,而自注意力由于其并行性,并不會直接編碼位置信息。Transformer 架構引入了位置編碼來解決這個問題。
原始的 Transformer 架構使用了一種絕對正弦位置編碼,之后其被改進成了一種可學習的絕對位置編碼。自那以后,相對位置編碼方案又進一步提升了 Transformer 的性能。目前,最流行的相對位置編碼是 T5Relative Bias、RoPE、XPos 和 ALiBi。
位置編碼有一個反復出現的限制:無法泛化在訓練期間看到的上下文窗口。盡管 ALiBi 等一些方法有能力做一些有限的泛化,但還沒有方法能泛化用于顯著長于其預訓練長度的序列。
已經出現了一些試圖克服這些限制的研究成果。比如,有研究提出通過位置插值(PI)來稍微修改 RoPE 并在少量數據上微調來擴展上下文長度。
兩個月前,Nous Research 的 Bowen Peng 在 Reddit 分享了一種解決思路,即通過納入高頻損失來實現「NTK 感知型插值」。這里的 NTK 是指 Neural Tangent Kernel(神經正切核)。
其聲稱經過 NTK 感知型擴展的 RoPE 能讓 LLaMA 模型的上下文窗口大幅擴展(超過8k),同時還無需任何微調,對困惑度造成的影響也極小。
近日,他與另外三位合作者的相關論文出爐了!
在這篇論文中,他們對 NTK 感知型插值做出了兩點改進,它們分別側重于不同的方面:
動態 NTK 插值法,無需微調就能用于預訓練模型。
部分 NTK 插值法,當使用少量更長上下文的數據微調后,模型能取得最佳表現。
研究者表示,在這篇論文誕生前,就已經有研究者將 NTK 感知型插值和動態 NTK 插值用于一些開源模型。比如 Code Llama(使用 NTK 感知型插值)和 Qwen7B(使用動態 NTK 插值)。
在這篇論文中,基于之前有關 NTK 感知型插值、動態 NTK 插值和部分 NTK 插值的研究成果,研究者提出了 YaRN(Yet another RoPE extensioN method),一種可以高效擴展使用旋轉位置嵌入(Rotary Position Embeddings / RoPE)的模型的上下文窗口的方法,可用于 LLaMA、GPT-NeoX 和 PaLM 系列模型。研究發現,只需使用原模型預訓練數據規模大約0.1% 量的代表性樣本進行微調,YaRN 就能實現當前最佳的上下文窗口擴展性能。
方法
旋轉位置嵌入(Rotary Position Embeddings / RoPE)最早由論文《RoFormer: Enhanced transformer with rotary position embedding》引入,也是 YaRN 的基礎。
簡單來說,RoPE 可以寫成如下形式:
對于使用固定上下文長度預訓練的 LLM,如果使用位置插值(PI)來擴展上下文長度,則可以表示為:
可以看出 PI 對所有 RoPE 維度都會做同等延展。研究者發現 PI 論文中描述的理論插值界限不足以預測 RoPE 和 LLM 內部嵌入之間的復雜動態。下面將描述研究者發現并解決的 PI 的主要問題,以便讀者了解 YaRN 中各種新方法的背景、起因和解決理由。
高頻信息丟失 ——NTK 感知型插值
如果只從信息編碼的角度看 RoPE,根據神經正切核(NTK)理論,如果輸入維度較低且對應的嵌入缺乏高頻分量,那么深度神經網絡難以學習高頻信息。
為了解決在對 RoPE 嵌入插值時丟失高頻信息的問題,Bowen Peng 在上述 Reddit 帖子中提出了 NTK 感知型插值。這種方法不會對 RoPE 的每個維度進行同等擴展,而是通過更少地擴展高頻和更多地擴展低頻來將插值壓力分散到多個維度。
在測試中,研究者發現在擴展未經微調的模型的上下文大小方面,這種方法優于 PI。但是,這種方法有一個重大缺點:由于它不只是一種插值方案,某些維度會被外推入一些「界外」值,因此使用 NTK 感知型插值進行微調的效果不及 PI。
更進一步說,由于存在「界外」值,理論上的擴展因子就無法準確地描述真實的上下文擴展程度。在實踐中,對于給定的上下文長度擴展,必須將擴展值 s 設置得比期望的擴展值高一點。
相對局部距離的損失 —— 部分 NTK 插值
對于 RoPE 嵌入,有一個有趣的觀察:給定一個上下文大小 L,存在某些維度 d,其中的波長 λ 長于預訓練階段見過的最大上下文長度(λ > L),這說明某些維度的嵌入可能在旋轉域中的分布不均勻。
PI 和 NTK 感知型插值會平等地對待所有 RoPE 隱藏維度(就好像它們對網絡有同樣的效果)。但研究者通過實驗發現,網絡會給某些維度不同于其它維度的待遇。如前所述,給定上下文長度 L,某些維度的波長 λ 大于或等于 L。由于當一個隱藏維度的波長大于或等于 L 時,所有的位置配對會編碼一個特定的距離,因此研究者猜想其中的絕對位置信息得到了保留;而當波長較短時,網絡僅可獲得相對位置信息。
當使用擴展比例 s 或基礎變化值 b' 來拉伸所有 RoPE 維度時,所有 token 都會變得與彼此更接近,因為被一個較小量旋轉過的兩個向量的點積會更大。這種擴展會嚴重損害 LLM 理解其內部嵌入之間小的局部關系的能力。研究者猜測這種壓縮會導致模型對附近 token 的位置順序感到困惑,從而損害模型的能力。
為了解決這個問題,基于研究者觀察到的現象,他們選擇完全不對更高頻率的維度進行插值。
他們還提出,對于所有維度 d,r < α 的維度按擴展度 s 線性插值(與 PI 一樣,避免出現外推);r > β 的維度就完全不插值(總是外推)。
使用這一小節描述的技術,一種名為部分 NTK 插值的方法誕生了。這種改進版方法優于之前的 PI 和 NTK 感知型插值方法,其適用于無微調和已微調模型。因為該方法避免了對旋轉域分布不均勻的維度進行外推,因此就避免了之前方法的所有微調問題。
動態縮放 —— 動態 NTK 插值
當使用 RoPE 插值方法無微調地擴展上下文大小時,我們希望模型在更長的上下文大小上慢慢地劣化,而不是在擴展度 s 超過所需值時在整個上下文大小上完全劣化。
在動態 NTK 方法中,擴展度 s 是動態計算的。
在推理過程中,當上下文大小被超過時,就動態地更改擴展度 s,這樣可讓所有模型在達到訓練的上下文限制 L 時緩慢地劣化而不是突然崩潰式劣化。
增加用于長距離的平均最小余弦相似度 ——YaRN
即便解決了前面描述的局部距離問題,為了避免外推,也必須在閾值 α 處插值更大的距離。直覺來看,這似乎不應該是個問題,因為全局距離無需高精度也能區分 token 位置(即網絡只需大概知道 token 是在序列的開頭、中間或末尾即可)。
但是,研究者發現:由于平均最小距離隨著 token 數量的增加而變得更近,因此它會使注意力 softmax 分布變得更尖(即減少了注意力 softmax 的平均熵)。換句話說,隨著長距離衰減的影響因插值而減弱,網絡會「更加關注」更多 token。這種分布的轉變會導致 LLM 輸出質量下降,這是與之前問題無關的另一個問題。
由于當將 RoPE 嵌入插值到更長的上下文大小時,注意力 Softmax 分布中的熵會減少,因此研究者的目標是逆轉這種熵減(即增加注意力 logit 的「溫度」)。這可以通過在應用 softmax 之前將中間注意力矩陣乘以溫度 t >1來完成,但由于 RoPE 嵌入被編碼為一個旋轉矩陣,就可以簡單地按常數因子 √t 來擴展 RoPE 嵌入的長度。這種「長度擴展」技巧讓研究可以不必修改注意力代碼,這能大幅簡化與現有訓練和推理流程的集成,并且時間復雜度僅有 O (1)。
由于這種 RoPE 插值方案對 RoPE 維度的插值不均勻,因此很難計算相對于擴展度 s 所需的溫度比例 t 的解析解。幸運的是,研究者通過實驗發現:通過最小化困惑度,所有 LLaMA 模型都遵循大致相同的擬合曲線:
研究者是在 LLaMA7B、13B、33B 和65B 上發現這個公式的。他們發現這個公式也能很好地適用于 LLaMA2模型(7B、13B 和70B),差別很細微。這表明這種熵增特性很常見,可以泛化到不同的模型和訓練數據。
這種最終修改方案產出了 YaRN 方法。新方法在已微調和未微調場景中都勝過之前所有方法,而且完全不需要修改推理代碼。只需要修改一開始用于生成 RoPE 嵌入的算法。YaRN 如此簡單,使其可以在所有推理和訓練庫中輕松實現,包括與 Flash Attention2的兼容性。
實驗
實驗表明 YaRN 能成功擴展 LLM 的上下文窗口。此外,他們僅訓練了400步就得到了這一結果,這差不多只有模型的原始預訓練語料庫的0.1%,與之前的研究成果相比有大幅下降。這說明新方法具有很高的計算效率,沒有額外的推理成本。
為了評估所得到的模型,研究者計算了長文檔的困惑度,并在已有基準上進行了評分,結果發現新方法勝過所有其它上下文窗口擴展方法。
首先,研究者評估了上下文窗口增大時模型的性能表現。表1總結了實驗結果。
表2展示了在50個未截斷的 GovReport 文檔(長度至少為16k token)上的最終困惑度。
為了測試使用上下文擴展時模型性能的劣化情況,研究者使用 Hugging Face Open LLM Leaderboard 套件評估了模型,并將其與 LLaMA2基準模型以及公開可用的 PI 和 NTK 感知型模型的已有分數進行了比較。表3總結了實驗結果。
文章內容僅供閱讀,不構成投資建議,請謹慎對待。投資者據此操作,風險自擔。
海報生成中...
海藝AI的模型系統在國際市場上廣受好評,目前站內累計模型數超過80萬個,涵蓋寫實、二次元、插畫、設計、攝影、風格化圖像等多類型應用場景,基本覆蓋所有主流創作風格。
IDC今日發布的《全球智能家居清潔機器人設備市場季度跟蹤報告,2025年第二季度》顯示,上半年全球智能家居清潔機器人市場出貨1,2萬臺,同比增長33%,顯示出品類強勁的市場需求。