幾週前,@EverMind 發表了關於「記憶稀疏注意力」(Memory Sparse Attention, MSA)的論文,主要建構了一套系統,能讓模型記住多達 1 億個詞元(相當於一千本書的長度),並且效能損失不到 9%,依然能夠找到正確答案。在多項基準測試中,這個擁有 40 億參數的模型甚至超越了基於其 58 倍規模模型所建構的 RAG 系統。
其核心思路在於:與其在單獨的資料庫中搜尋並寄望於找到正確資訊(RAG 演算法的運作方式),還不如直接將記憶功能建構到模型的思維模式中。它能夠端到端地學習哪些資訊需要記住、哪些需要忽略,無需單獨的檢索流程。
論文發表後引起業界極大迴響,各界殷切期盼其開原始碼以供研究、共同精進。昨天,EverMind 兌現承諾,完整開源整個專案程式碼,不到一天時間就收穫 2.5K star,可見大家對這一技術的關注度。
專案簡介
長期記憶是通用智慧的基礎,但全注意力的計算瓶頸將大多數大型語言模型的有效上下文長度限制在 128K–1M。現有方案——混合線性注意力、固定大小的狀態記憶(如 RNN)、以及RAG/智慧體等外部儲存——要麼在極端長度下精度快速下降、延遲持續增長,要麼缺乏端到端可微性或動態記憶管理能力,要麼需要複雜的工程流水線。我們提出了記憶稀疏注意力(MSA):一個端到端可訓練、可擴展的稀疏隱式狀態記憶框架。核心思路包括:
- 可擴展的稀疏注意力 + 文件級 RoPE(並行/全域),在訓練和推論中均實現近線性複雜度;
- KV 快取壓縮搭配記憶並行推論引擎,在 2×A800 GPU 上實現1 億 token吞吐;
- 記憶交織機制,支援跨分散記憶片段的多輪、多跳推論。
在長上下文問答和 NIAH(大海撈針)基準測試中,MSA超越了同骨幹 RAG、頂尖 RAG 方案和領先的長上下文模型。在前所未有的16K→1 億 token範圍內,MSA 僅有不到 9%的效能下降,為將記憶容量與推論能力解耦提供了一條可行路徑。
從 16K 擴展到 1 億 token:MSA 將 top-k 選擇與稀疏注意力融合,在推論時允許文件解耦的同時保持端到端可微。在 MS MARCO 上,MSA 效能下降不到 9%,並展現出強大的外推能力。部分基線曲線因上下文長度限制而提前結束。
圖 1:MSA 在超長上下文下的可擴展性
核心貢獻
- 記憶稀疏注意力(MSA):一個端到端可訓練的可擴展稀疏注意力層,結合文件級 RoPE,實現 O(L) 複雜度,從16K→1 億 token效能下降不到 9%。
- KV 快取壓縮 + 記憶並行:分層儲存(路由鍵駐留 GPU、內容 K/V 存放 CPU),分散式打分,按需傳輸,在2×A800上實現1 億 token推論。
- 記憶交織:自適應交替執行「生成式檢索 → 上下文擴展 → 生成」,大幅提升跨文件多跳推論能力。
- 全面評測:MSA 在長上下文問答和 NIAH 基準上超越同骨幹 RAG、頂尖 RAG 方案和領先長上下文模型,在大規模下展現出更優的穩定性和準確率。
整體設計
架構
MSA 將檢索與生成融合到一個可微的閉環中。文件隱式狀態(K/V/Kᵣ)通過分塊均值池化進行壓縮。路由投影器利用餘弦相似度計算相關性(先對注意力頭取均值,再對 token 取最大值),選出Top‑k 文件,然後將其壓縮後的 K/V與查詢的本地K/V拼接,用於自回歸解碼。路由僅作用於上層;下層保持獨立文件處理,實現層級對齊。
- 並行(文件級)RoPE:每個文件的位置從 0 開始重置,避免短訓練、長推論之間的位置漂移,使 64k 訓練能外推到 1 億。
- 全域 RoPE(活躍上下文):查詢的起始索引偏移 k(Top‑k 檢索塊數),保持因果順序:背景 → 查詢 → 生成。
圖 2:MSA 層(稀疏注意力 + 文件級 RoPE)
圖 2:記憶稀疏注意力層與並行/全域 RoPE
推論流水線
MSA 採用三階段流水線(圖 3):
- 全域記憶編碼(離線):對語料進行前向計算,快取分塊池化後的 (K̄, V̄, K̄ᵣ)。
- 線上路由與上下文組裝:將查詢投影為 Qᵣ,與 K̄ᵣ 匹配選出Top‑k,然後僅載入選中的 K̄/V̄ 與本地上下文拼接。
- 稀疏生成:在稀疏上下文上進行自回歸生成。
記憶並行將 K̄ᵣ 分片到多個 GPU(廣播查詢 → 本地打分 → 全域歸約)。內容 K̄/V̄ 存放在主機記憶體中,被選中時非同步拉取——在1 億 token部署下兼顧顯存與吞吐。
圖 3:三階段推論與記憶交織
圖 3:離線編碼 → 線上路由 → 稀疏生成;可選多輪交織用於多跳推論
實驗結果
實驗設定問答:9 個資料集(MS MARCO v1、NQ、DuReader、TriviaQA(10M)、NarrativeQA、PopQA、2WikiMultiHopQA、HotpotQA、MuSiQue),記憶庫規模277K→1000 萬 token,評測指標:LLM 評分(0–5)。NIAH (RULER):8 個子任務,32K→100 萬 token,報告平均準確率。骨幹模型:Qwen3‑4B‑Instruct‑2507。對比同骨幹 RAG 和頂尖 RAG 方案(KaLMv2 + 大模型生成器,可選重排序)。
表 2:MSA 對比同骨幹 RAG(Qwen3‑4B)
總結:平均得分3.760,相比標準 RAG 提升+16.0%,相比 RAG+重排序提升+11.5%,相比 HippoRAG2 提升+14.8%(均取各方案最佳 @k);在同骨幹組中,MSA 在除 NarrativeQA 外的所有資料集上領先。
| 資料集 | Token 數 | Qwen3-4B R@1 | R@5 | R@10 | Qwen3-4B (RR) R@1 | R@5 | R@10 | HippoRAG2 R@1 | R@5 | R@10 | MSA (自適應) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| MS MARCO v1 | 7.34M | 2.893 | 3.011 | 3.005 | 2.934 | 3.032 | 3.017 | 2.676 | 3.005 | 3.019 | 4.141 |
| Natural Questions | 1.47M | 3.452 | 3.374 | 3.297 | 3.494 | 3.408 | 3.385 | 3.338 | 3.389 | 3.374 | 3.545 |
| DuReader | 277K | 3.726 | 3.579 | 3.594 | 3.848 | 3.618 | 3.607 | 2.941 | 3.485 | 3.415 | 4.155 |
| TriviaQA (10M) | 10M | 4.133 | 4.414 | 4.273 | 4.313 | 4.375 | 4.391 | 4.188 | 4.430 | 4.367 | 4.621 |
| NarrativeQA | 538K | 1.611 | 2.567 | 2.860 | 3.638 | 3.492 | 3.536 | 1.959 | 2.628 | 2.655 | 3.395 |
| PopQA | 1.18M | 2.959 | 3.273 | 3.299 | 3.315 | 3.264 | 3.266 | 3.111 | 3.249 | 3.249 | 3.433 |
| 2WikiMultiHopQA | 722K | 1.065 | 3.055 | 3.136 | 1.187 | 3.057 | 3.159 | 1.045 | 3.180 | 3.330 | 4.280 |
| HotpotQA | 1.35M | 2.252 | 3.582 | 3.787 | 2.642 | 3.990 | 4.022 | 3.230 | 3.770 | 3.970 | 4.061 |
| MuSiQue | 1.41M | 0.936 | 1.752 | 1.928 | 1.144 | 1.960 | 1.965 | 1.020 | 1.907 | 2.095 | 2.211 |
| 平均 | — | 2.559 | 3.179 | 3.242 | 2.946 | 3.355 | 3.372 | 2.612 | 3.227 | 3.275 | 3.760 |
表 2:同骨幹 RAG 對比 MSA(@1/@5/@10 vs MSA @自適應)
表 3:MSA 對比頂尖 RAG(大骨幹模型)
總結:對比KaLMv2+Qwen3‑235B和KaLMv2+Llama‑3.3‑70B(有/無重排序),MSA 在4/9個資料集上取得最高分,平均得分3.760,相對於各最強配置分別提升+7.2%、+5.0%、+10.7%和+5.4%。在少數資料集(如 MuSiQue)上的差距主要源於參數量和固有推論能力的差異。
| 資料集 | KaLMv2 + Qwen3‑235B R@1 | R@5 | R@10 | Qwen3‑235B (RR) R@1 | R@5 | R@10 | KaLMv2 + Llama‑3.3 R@1 | R@5 | R@10 | Llama‑3.3 (RR) R@1 | R@5 | R@10 | MSA (自適應) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| MS MARCO v1 | 2.846 | 3.028 | 3.027 | 2.886 | 3.020 | 2.995 | 2.649 | 2.904 | 2.919 | 2.881 | 2.955 | 2.952 | 4.141 |
| Natural Questions | 3.711 | 3.670 | 3.694 | 3.621 | 3.610 | 3.645 | 3.675 | 3.674 | 3.662 | 3.756 | 3.665 | 3.647 | 3.545 |
| DuReader | 4.044 | 3.991 | 3.978 | 3.973 | 3.932 | 3.891 | 4.051 | 3.846 | 3.742 | 3.967 | 3.776 | 3.780 | 4.155 |
| TriviaQA (10M) | 4.367 | 4.656 | 4.578 | 4.492 | 4.320 | 4.555 | 4.273 | 4.740 | 4.719 | 4.547 | 4.703 | 4.695 | 4.621 |
| NarrativeQA | 1.413 | 2.130 | 2.427 | 3.212 | 3.427 | 3.375 | 1.290 | 2.123 | 2.382 | 3.150 | 3.263 | 3.317 | 3.395 |
| PopQA | 2.810 | 3.347 | 3.396 | 3.268 | 3.380 | 3.376 | 2.787 | 3.298 | 3.305 | 3.337 | 3.384 | 3.362 | 3.433 |
| 2WikiMultiHopQA | 2.646 | 3.579 | 3.582 | 1.855 | 3.381 | 3.583 | 1.339 | 3.263 | 3.445 | 1.651 | 3.332 | 3.541 | 4.280 |
| HotpotQA | 3.497 | 4.090 | 4.225 | 3.341 | 4.141 | 4.194 | 3.070 | 3.896 | 4.127 | 3.428 | 4.145 | 4.203 | 4.061 |
| MuSiQue | 1.988 | 2.462 | 2.647 | 1.801 | 2.522 | 2.605 | 1.704 | 2.317 | 2.258 | 1.895 | 2.462 | 2.614 | 2.211 |
| 平均 | 3.036 | 3.439 | 3.506 | 3.161 | 3.526 | 3.580 | 2.760 | 3.340 | 3.396 | 3.179 | 3.521 | 3.568 | 3.760 |
表 3:頂尖 RAG 方案(強檢索器 + 大生成器 + 可選重排序)對比 MSA
圖 4:RULER NIAH 穩定性(32K→100 萬)
總結:MSA 在100 萬 token下仍保持94.84%的準確率。未經改動的骨幹模型在超過128K後急劇下降(100 萬時僅 24.69%)。混合線性注意力長上下文模型在≥128K/256K時明顯退化。外部記憶智慧體(如 RL‑MemoryAgent‑14B)雖然較為穩定,但絕對準確率更低,衰減幅度也大於 MSA。
圖 4:準確率隨上下文長度的變化(越高越好)
實作說明
- 訓練:1589.5 億 token 持續預訓練,使用輔助路由損失,隨後進行兩階段 SFT(8k→64k課程學習)。
- 消融實驗(論文表 4):課程擴展、記憶交織、持續預訓練和注入原始文字均有顯著貢獻;移除它們會導致5%–37%不等的效能下降。
快速開始
完整說明(專案結構、支援的基準測試等)請參見QUICK_START.md。
1. 安裝
conda create -n msa python=3.12 -y && conda activate msa
pip install -r requirements.txt
pip install flash-attn==2.7.4.post1 --no-build-isolation2. 下載模型
mkdir ckpt
huggingface-cli download --resume-download EverMind-AI/MSA-4B --local-dir ckpt/MSA-4B3. 下載基準資料
基準資料託管在 EverMind-AI/MSA-RAG-BENCHMARKS,首次運行時會自動下載到data/目錄。
4. 運行
# 在基準測試上運行推論
bash scripts/run_benchmarks.sh eval_benchmark
# 計算 LLM 評分
bash scripts/calculate_llm_score.sh eval_benchmark