看到「注意力快了七十幾倍」,你可能立刻想到:那張放不下長文件的顯卡,終於有救了?LSA 稀疏注意力確實在改善超長上下文運算,但要回答能否省顯存,必須先分清「這次讀幾頁」與「書架上還放幾頁」。
這篇寫給第一次接觸 Q、K、V,也想看懂研究加速數字的讀者。我們用八筆資料做能手算的概念練習,再拆開論文的速度、記憶體與部署條件。做完後,你會知道該追問哪些數字,才足以判斷自己的硬體是否適用。
先說結論:少讀,不等於少存
LSA 的記憶口訣:讀取清單縮短,保存清單仍在。它先用索引挑選值得計算的歷史位置,再交給注意力運算;完整 KV Cache 仍會隨上下文增長。這是論文 v2 討論章節明確交代的邊界。
因此,先問你遇到的是哪一種問題:資料放得下卻跑得慢,還是一開始就放不下?前者值得評估稀疏讀取;後者還得另外處理保存量。把兩者混在一起,容易拿加速倍率去推算一張顯卡能裝幾百萬 token,算出不存在的容量。
一、LSA 稀疏注意力在做什麼?先認識三本小筆記
Attention(注意力機制)可以先想成寫答案前翻筆記:Q(Query)是眼前的查詢,K(Key)是每筆筆記用來比對的標籤,V(Value)是找到後要取用的內容。模型中的它們都是向量,也就是一串數字;不是人工寫好的搜尋關鍵字。想先看互動圖,可接著讀LLM Attention 的四個互動實驗。
KV Cache 則是把已算好的 K、V 留下,生成下一個 token 時接著使用。Token 是模型處理文字的片段,不固定等於一個中文字。Hugging Face 的快取文件把節省記憶體與追求速度列成不同取捨:快取搬到 CPU、降低數值精度,與改變注意力要讀哪些位置,各有自己的代價。
書架比喻也要用準:存放量像書架容量,讀取量像這回翻了幾頁,延遲像你多久交出答案。翻頁少,可能交得快;書仍在架上,容量就不會按翻頁比例一起變小。索引本身還像多做一本目錄,也要佔地方。
二、把 LSA 的尋找過程拆成四步
LSA 是 Latent Sparse Attention,這裡指 Prefrontal 團隊的特定研究方法。Latent space(潛在空間)可理解為用另一套較小的數字表示來找相近資料。依論文的方法章節,可以按以下順序建立直覺:
- ① 做搜尋用的表示。索引用的向量與最後做注意力的原始 K、V 分工;索引是在幫你找位置。
- ② 把相近的索引 key 分成桶。每個桶保留代表向量與成員位置;像把主題相近的筆記編入同一目錄。
- ③ 查目錄,再展開位置。Flat 版本比較桶的代表;Tree 版本循層搜尋,逐步留下候選。
- ④ 讀回選中的原始資料。遠端位置加上開頭的 sink 與最近的 window,形成要交給注意力的清單。這兩個保留區可先理解成開頭錨點與近期筆記。
桶的代表不是整桶內容的保證書:平均看起來普通的桶,可能藏著關鍵例外。因此「怎麼分桶、挑幾桶、保留哪些近期位置」都會影響結果。接下來的八筆練習只教「選位置和存資料的差別」,省略學習投影、實際分群、sink、window、多頭與 GPU 核心,不能當成 LSA 實作或論文重跑。
三、八筆 Q/K/V 練習:讀取少一半,保存量是多少?
先在紙上寫下 Q=(1, 0)。A 桶的四個 K 是 (1, 0)、(0.8, 0.2)、(0.6, 0.4)、(0.4, 0.6);B 桶是 (0, 1)、(−0.2, 0.8)、(−0.4, 0.6)、(−0.6, 0.4)。我們直接指定這兩桶,省略真正的分群演算法。V 依序是 (10, 0)、(20, 0),一路到 (80, 0)。
每筆 K 和 V 各兩個數字,假設每個數字以 2 bytes 保存。於是每筆 KV 是 (2+2)×2=8 bytes,八筆共 64 bytes。這是張量有效內容的計算,不包含 Python 物件、記憶體配置器或硬體快取。

完整讀取時,這次注意力要取用八筆 KV,有效資料合計 64 bytes。假設簡化選桶器只選 A 桶,就取用四筆、32 bytes;仍保存八筆、64 bytes,因為下個查詢可能需要 B 桶。這裡算的是被選資料的內容量,真實 GPU 傳輸還受頁面、對齊、核心與索引開銷影響。
有 Python 3 的讀者可貼上 python3 -c 'print(8*(2+2)*2, 4*(2+2)*2)',會印出 64 32。把前面的 8 改成 16,保存量會翻倍;只改第二項的讀取筆數,第一項仍相同。沒有 Python,也能用計算機完成同一練習。
再替簡化目錄算帳:若兩個二維代表向量也各用 2 bytes 保存,佔 8 bytes;八個位置編號各用 4 bytes,佔 32 bytes,目錄共 40 bytes。這個刻意縮小的例子就成了「64 bytes 原始 KV+40 bytes 目錄」。小例子反而多佔空間很合理;它只驗證帳目分開,不能推估研究索引的實際比例。
四、同一份資料,還要算答案會不會變
讀取數算完,再試一個完整的注意力步驟。用每個 K 與 Q 的內積除以 √2 得到分數,經 softmax(把分數變成總和為 1 的權重),再加權 V。這是二維、單頭、單查詢的簡化設定。PyTorch 的 Flash-Decoding 說明也以 Q、K 的分數和 V 的加權運算解釋注意力。
我們以相同八筆數字計算,完整讀取的輸出第一維約為 36.45;只讀 A 桶約為 23.24,第二維均為 0。兩個結果不同,因為刪掉候選後,softmax 的分母也變了。這是本文的純數學計算,不是語言模型正確率,更不是 LSA 的誤差量測。
現在把 Q 換成 (0, 1),試著挑 B 桶。資料若仍在,就有機會讀到原先未選的內容;若先永久刪掉 B 桶,後續搜尋便少了這些原始候選。想看真正以淘汰減少保存量的評估,可讀Random Attention 與 KV Cache 隨機淘汰,兩種方法的驗收問題不同。
最後加一道追問:假設一筆看似不相關的資料才寫著最新修訂日期,選取器會留下它嗎?先問一般摘要,再問例外、版本衝突、跨段連結與找不到答案的題目。速度變快但漏掉關鍵證據,對你的任務仍可能是不合格。TokenGate 的追問證據練習提供另一種練習方向。
版本名稱也要先分清:D-LSA 透過蒸餾訓練索引,接到既有模型;N-LSA 則把這套方法放進從頭訓練的模型。下節採用的是 D-LSA(Flat)的推論結果,不將 N-LSA 的訓練速度混進來。
五、LSA 稀疏注意力的速度數字,要分兩張成績單
截至 2026 年 11 月 5 日,團隊官方研究解說分別列出單層與端到端結果。下圖固定為 D-LSA(Flat)、10M tokens、H200;不同模型使用各自的對照基準。10M 是一千萬個 token,不是文件字數。

Prefill 是先處理輸入,decode 是逐步產生輸出。單層 prefill 計時取長上下文最後一塊 32,768 個查詢;端到端 TTFT 則是收到請求到首個 token 的時間。論文整機測試一次一個請求,每次生成 256 tokens,取三次請求的中位數。單層倍率不能直接當成整個聊天服務的倍率。
你也能做不依賴論文的算術練習:原先一項工作花 100 秒,其中 80 秒用在可加速部分;該部分快 10 倍,總時間是 80÷10+20=28 秒,整體約快 3.57 倍。這是Amdahl 定律的直覺:其他工作仍要花時間。這組數字是假設,不是任何模型的實際耗時。
同樣地,便宜多少要看完成相同合格任務需要多少 GPU 時間、幾張卡、多少併發與重跑。單次變快不會自動給出每月帳單;能容納更多資料,也不保證跨文件推理一定正確。
六、我能不能跑?先做三層可用性檢查
第一層:概念練習。紙筆與計算機就能完成上述算帳。本文執行的是這個小計算;沒有執行模型推論或 H200 研究測試。
第二層:讀程式與檢查依賴。截至查閱日,官方 README列出 Python 3.12、uv 0.10 以上。你可先讀安裝段落,再在已有合適環境時操作;uv run lsa --help只驗證基本 CLI,官方特別提醒它不能證明 evaluation 或 training 額外依賴已裝好。
第三層:實際研究設定。官方快速入門使用指定 SGLang fork/映像、相應模型與蒸餾的投影檔。啟動後還要確認日誌的 armed、服務的 /health及一次成功請求;程序出現不等於 LSA 已生效。請按同版快速入門操作,不把它直接翻譯成任意 llama.cpp 或 GGUF 的啟動參數。
- 先記版本:模型 revision、LSA commit、SGLang tag、投影檔來源與雜湊。本文查閱的程式庫 commit 為
5ebea732d639576d2a7579b0de40e6252f9001f5。 - 再記資源:GPU 型號、張數、KV 精度、context、batch,以及可用顯存;把模型權重與工作緩衝區也算進預算。
- 最後驗收:以相同請求比原版和 LSA,分別記 TTFT、每輸出 token 時間、峰值顯存及正確答案。先求一個能對照的小測例,再擴大。
如果你用消費級 GPU,先將自己的結果欄位留白。研究的 H200/B300 配置能提供測試方法,無法替另一張卡填入倍率。若目標是避免放不下,先評估 KV 量化、卸載或上下文管理的適用性;這些與 LSA 的相容性也要逐一確認,不能由「原理可互補」推成「現有實作已接好」。
七、常見問題:先給判斷,再說條件
1. LSA 會按讀取比例省顯存嗎?
不會照這個比例推算。論文保存完整 KV;減少索引或工作緩衝區的部分,要和 KV、權重分項量測。
2. 保存完整 KV,是否保證不漏證據?
不保證。資料留在記憶體,與這次被選到參與運算,是不同條件。
3. 72.4 倍就是回覆快 72.4 倍嗎?
不能這樣讀。圖中的數字是特定模型、長度與基準的單層 prefill;端到端另有 TTFT。
4. 八筆練習能預測真實 GPU 速度嗎?
不能。它計算內容量與數學輸出,省略實際 GPU 傳輸、並行和索引開銷。
5. 量化權重,就等於量化 KV 嗎?
不是同一項設定。先讀推論引擎對權重與 KV 精度的分別說明,再記錄實際配置。
6. 一題找針通過,就能放心做研究整理嗎?
還不足夠。請加例外、跨段證據與無答案題,驗收你的完整用途。
7. 現在就該升級顯卡嗎?
先量瓶頸。若主要是容量不足,加速數字本身不能替你完成容量預算。
8. 新手現在最值得做哪一步?
先算八筆資料的保存量和讀取量,再替一個研究倍率補上模型、基準、硬體及量測範圍。
給新手的三個重點
- 把「讀幾筆」與「存幾筆」寫成兩欄,別讓一個稀疏比例代答兩個問題。
- 每次抄倍率,都帶上模型、context、對照基準、GPU 與單層/整機範圍。
- 以速度、峰值顯存、證據完整性三項一起驗收,才知道能否採用。
接著閱讀
左右滑動查看更多推薦
下一步:替一個加速標題補上完整問題
現在拿一張紙,寫下「完整 KV 64 bytes、選取內容 32 bytes、目錄另計」,再把你看到的研究數字標成單層或端到端。能說清楚這三件事,就已經掌握讀取清單縮短,保存清單仍在的差別。想繼續循序學習,可從AI 文章總覽選一個原理,或到AlphaLab 課程安排下一段學習。下一次評估長上下文工具,先填好這張三欄成績單,再決定要不要投入硬體與部署時間。






