Kimi背後的長上下文處理機制曝光了!
這項名為MoBA的新型注意力機制,能將處理1M長文字的速度一下子提升6.5倍,而且還是經過Kimi平台實際驗證的那種。
概括而言,這項耗時一年半的工作主要看點在:
一言以蔽之,MoBA將MoE(專家混合)應用於注意力機制,通過遵循一種“less structure” 原則,允許模型自主決定關注那些區域或位置。
最終結果是,在保持模型性能不變的前提下,將處理1M和10M長文字的速度分別提升了6.5倍和16倍。
而且按照論文得出的結論:
MoBA開箱即用,它能輕鬆融入現有模型,無需高昂訓練成本。
另外,在深扒論文細節的同時,我們也在作者名單中發現了楊植麟本人的身影。
與此同時,再次令人感到戲劇的是,Kimi的這項研究又又又和DeepSeek撞車了??
差不多隻比Kimi早5個小時,DeepSeek也公開了自己的注意力機制NSA(量子位今日另一篇文章有詳細介紹)。
好傢伙,誰能想到這熟悉的一幕也才剛過去不久!(先賣個關子)
還是先來看論文細節。
首先,團隊回答了為什麼要開展這項研究?
隨著大語言模型(LLMs)向AGI發展,處理長文字的能力將更加關鍵。然而,傳統注意力機制的計算複雜度隨著序列長度的增加而呈平方級增長,這一特性嚴重阻礙了模型對長序列的高效處理。
而且,一些現有方法都存在或多或少的侷限性:
基於以上種種因素,一種新型注意力機制——MoBA架構應運而生。
顯而易見,不像傳統那樣關注全部鍵值(key),MoBA通過僅關注部分鍵值來提升效率。
它會把上下文按照一定規則分成n個塊。這就像處理一篇長文章時,把文章按段落分成不同部分。
然後每個塊都包含一部分鍵值資訊。
之後,利用MoE的top-k門控機制來為每個查詢token挑選相關塊。
這就好比從所有段落中找出與當前問題最相關的幾個段落。它會計算查詢token和每個塊之間的相關性分數,然後選擇分數最高的k個塊,這樣查詢token就能聚焦在最有用的資訊上。
上述過程用公式表示如下:
此外,為了保證基於前文預測下一個token的精準性,MoBA還採用了兩項關鍵設計:
與此同時,論文還公開了其他關鍵設計選擇。
比如更細粒度的塊分割。研究發現,把上下文劃分成更細的塊,能讓模型更好地捕捉資訊。
再比如MoBA與全注意力混合。即讓MoBA可以和全注意力模式相互切換,在剛開始訓練或者處理複雜問題時,可以用全注意力模式,讓模型全面瞭解資訊;而在處理長文字,對效率要求高時,就切換到MoBA模式,節省計算資源。
到了具體實現上,MoBA還結合了Flash Attention(能讓注意力計算更高效)和MoE的最佳化手段。
完整過程小結如下:
第一步:確定查詢token到KV塊的分配,就像是給每個問題分配對應的 “答案段落”;
第二步:排序查詢token,比如把問相同主題問題的查詢token放在一起,方便統一處理;
第三步:計算每個KV塊的注意力輸出,用Flash Attention技術,讓模型去 “理解” 對應塊裡的資訊,得出相關結果;
第四步:重排注意力輸出併合並結果,把計算出的注意力輸出按原來順序重排,再用線上Softmax合併,將不同來源的結果整合得到綜合結果。就像把不同 “答案段落” 的資訊整合,最終得出一個結論。
實驗階段,研究還得出了幾個值得關注的發現。
首先,對比全注意力(使用Flash Attention實現)和MoBA訓練的語言模型,發現二者縮放趨勢相似,MoBA在高達75%稀疏度下性能與全注意力相當。
在長上下文實驗中,儘管MoBA最後塊損失略高,但差距逐漸縮小,表明其長上下文可擴展性。
消融實驗表明,細粒度塊分割確實對MoBA性能提升明顯。
其次,如果將MoBA與全注意力混合訓練,其模型在位置LM損失上接近全注意力模型,證明該訓練方法能平衡效率和性能。
在監督微調(SFT)中,層混合策略(部分層用全注意力,其餘用MoBA)可顯著降低SFT損失。
以Llama 3.1 8B模型為基礎,對MoBA在多種長上下文基準測試中評估,結果顯示其性能與全注意力模型相當,在RULER基準測試中二者得分接近,在1M上下文長度的 “大海撈針” 基準測試中也表現良好。
總之,MoBA的計算複雜度隨著上下文長度增加而優勢明顯。
在1M token的測試中,MoBA比全注意力快了6.5倍;到10M token時,則提速16倍。
回到一開頭提到的,事實上,Kimi這篇論文一發,就有網友在底下惋惜:
而且還有人當面提起了“傷心事”:
原來,就在上個月(1月20日),也是在DeepSeek發了號稱比肩OpenAI-o1正式版的DeepSeek-R1之後,前後僅相隔僅2小時,Kimi才發佈了追平OpenAI-o1滿血版的多模態思考模型k1.5。
好傢伙,連續兩次“撞車”,妥妥的宿命感這不就來了!(doge)
參考連結:
[1]https://github.com/MoonshotAI/MoBA?tab=readme-ov-file
[2]https://x.com/Kimi_Moonshot/status/1891825059599352259
[3]https://x.com/deepseek_ai/status/1891745487071609327 (量子位)