下一代 LLM 架構會是什麼樣子? 這個問題不斷引發辯論 — Zhihu 貢獻者及開發者 Yuxuan 提供了 DeepSeek Sparse Attention (DSA) 和 Native Sparse Attention (NSA) 之間的尖銳比較,以及使用 TileLang 實現 DSA 操作的實用觀察。 🚀 為什麼 DSA > NSA(在長上下文任務中): 從將 DSA 添加到小模型並與 NSA 進行比較的實驗中,DSA 一直表現更好 — 主要是由於兩個關鍵設計選擇: 1️⃣ Attn-Score 蒸餾 → 對索引選擇的明確監督 2️⃣ 令牌級稀疏而非區塊級 → 更細緻、更準確的檢索 🔍 1) Attn-Score 蒸餾 稀疏注意力依賴於選擇正確的鍵值對。 DSA 直接使用真實的注意力分數來監督索引模塊,使訓練與實際目標對齊:"選擇關鍵令牌。" 而 NSA 只優化 LM 損失,對索引準確性沒有明確約束 — 這解釋了它在長文檔檢索基準上的較弱表現。 🔍 2) 令牌級與區塊級稀疏 準確性隨計算預算而增長:更精確的索引 → 更好的檢索。 令牌級索引(DSA)自然比區塊級(NSA)產生更高的保真度。 從這個角度來看,NSA 的性能瓶頸是可以預期的 — 一個有趣的問題是:區塊大小=8 會幫助 NSA 追上 DSA 嗎? ⚙️ 真正的挑戰:高效訓練 DSA DSA 訓練涉及預熱 → 稀疏微調。 挑戰在於計算和存儲兩個分支的注意力分數。 一個天真的實現需要 O(n²) 的存儲 — 抵消了 FlashAttention 的內存節省。 即使是預過濾(k=2048, h=512+64)仍然需要大量緩衝區。 📎 代碼: 🧩 核心融合來拯救(圖 1) 為了避免存儲大量中間的 Attn-Scores,DSA 使用融合內核。 一個關鍵技巧是將索引分數 + Top-k 合併到一個內核中: • 保持 2K 緩衝區 • 計算每個區塊的索引分數...