DeepSeek V4.1 Flash 將全域 KV 快取降至約每 token 890 bytes,讓長上下文需要長期保存的資料進一步縮小。DeepSeek 在 2026 年 9 月 10 日發布的技術報告中,將這個數字列為 V4 Flash 同長度上下文的約 1/4;持久化 KV 快取則在相同工作負載下約為前代的 1/8。兩個比例算的是不同範圍,部署評估不能混用。

模型讓多層共用全域記憶,降低部分記錄的精度,還把不值得長期保存的局部狀態改成需要時重算。對持續讀取程式碼、文件與工具回傳結果的 Agent,這些選擇會影響歷史內容保留多久,以及重用一段提示需要付出多少成本。單看最大上下文長度,已經不足以判斷服務是否划算。

輸入啟動約 8B 參數,生成仍跑完整 40 層

KV 快取是注意力機制保存的 key、value 數值狀態。模型生成新 token 時,可以讀取先前的狀態,省去重算整段歷史的工作;這些狀態並非文字摘要。

一般僅解碼器 Transformer 的各層,通常根據各自的中間表示建立 KV。尚未快取的長輸入因此要經過整個網路。DeepSeek V4.1 Flash 採用因果編碼器—解碼器(Causal Encoder-Decoder,CED),把語言主幹分成前 20 層 Causal Encoder 與後 20 層 Decoder。後半段的全域 KV,直接由前半段的最終輸出投影而成。

輸入處理與生成因此走不同路徑:

Prefill:處理已知輸入、建立快取

輸入 → 前 20 層 Encoder → 由 Encoder 輸出建立 Decoder 全域 KV。

整段提示末尾的 128 token 仍需經過 Decoder,以補齊局部視窗狀態。

Decode:逐步產生新輸出

目前 token → 前 20 層 Encoder → 後 20 層 Decoder → 預測下一個 token。

兩部分都會讀取對應快取,並替新增位置建立狀態。報告所列的啟動參數量,prefill 約為 8B,decode 約為 16B;16B 指完整生成路徑,不能再把它加到 Encoder 的 8B 上。對足夠長的輸入,略過大部分 Decoder 計算可讓 prefill 運算量接近減半,實際耗時仍受硬體、核心實作與批次安排影響。架構與計算口徑見官方技術報告。

這裡的 Encoder 也有明確限制。以「小明把蘋果吃了」為例,雙向編碼器處理「小明」時可以利用後面的「蘋果」與「吃了」;因果編碼器處理這個位置時,只能使用當下與先前資訊。處理到「吃了」,才可利用已出現的前文。

Causal 描述資訊依賴方向,沒有承諾因果推理能力。它也不要求 prefill 逐字串行:已知輸入可透過注意力遮罩並行計算,只要每個位置看不到未來即可。

這條設計路線有前作。Yutao Sun、Li Dong 等人在 2024 年 5 月 8 日提出的 YoCo,讓前段網路產生全域 KV、後段重用,並讓 prefill 提前結束。V4.1 Flash 沿用減少重複快取的方向,另外加入逐層局部注意力與有限回放,不能將兩者視為完全相同的架構。YoCo 原始論文提供了這段研究脈絡。

1. 全域記憶與局部狀態分開保存

V4.1 Flash 將注意力使用的歷史資料分成兩類。全域 KV 負責找回較早的上下文,資料量會隨輸入長度成長;滑動視窗注意力(Sliding Window Attention,SWA)的局部 KV,則保留最近 128 token,各層都有自己的狀態。

局部視窗小,不代表整個服務保存的局部資料一定少。同一段對話可能留下不同續接位置,服務也可能同時保留大量會話。單份視窗大小有上限,許多快取點累積起來仍會占空間。這正是後面調整持久化策略的原因。

全域部分又包含兩種資料:真正供注意力運算讀取的 main KV,以及協助搜尋的 indexer K。評估共享程度時,需要把兩者一起看;只數主 KV,會漏掉檢索本身的保存需求。

2. CSA2 讓 38 層共享四組全域 KV

壓縮稀疏注意力第二版(Compressed Sparse Attention 2,CSA2)將層分成 Full、Reindex 與 Reuse 三種模式。Full 建立新全域 KV 並選出要讀取的位置;Reindex 沿用全域 KV 與 indexer K,以自己的索引查詢重新選位置;Reuse 則連最近一次對應的 Top-K 選擇結果也沿用。

共用記錄省儲存,共用選擇結果省搜尋。每層仍計算自己的注意力查詢 Q,保留自己的局部 SWA KV,也執行其餘網路運算。Reuse 沒有把整層跳過。

區段 層配置 全域 KV 組數
Encoder 第 1–2 層 僅局部 SWA 0
Encoder 第 3–20 層 3 組,每組 1 層 Full+5 層 Reuse 3
Decoder 全部 20 層 1 層 Full、4 層 Reindex、15 層 Reuse 1

結果是 38 個具備全域注意力的層,共用四組全域 KV。每組都是隨上下文成長的一套記錄,並非一個向量;也不能用 38/4 推算相較 V4 的節省倍數,因為前代原本就有壓縮,不同區段的序列壓縮率也不同。

CSA2 每次查詢最多選 512 條全域記錄,再搭配局部視窗進行注意力運算。未入選的記錄仍然存在,後續 token 可能需要它們。讀取上限與保存上限必須分清楚。

Decoder 還採用分層檢索。第一個 Full 層先掃描所有因果可見位置,以區塊建立共享候選池,最多 2048 塊,每塊 8 個位置,合計 16384 個候選位置。後續 Reindex 層只在池內選各自的 Top-512,Reuse 層再沿用結果。這項限制也在後訓練中納入。

候選池固定後,後續索引器每次查詢的評分量便有上限。然而,第一遍全域掃描仍隨上下文成長,全域快取也沒有消失。若把這段設計描述成整個模型具備固定成本的長上下文,會抹掉最重要的限制。CSA2 與分層索引見技術報告 §2.3。

3. Encoder 合併位置,Decoder 保留逐 token 記錄

序列壓縮也有分工。Encoder 的三組全域 KV 採用壓縮率 2,亦即每 2 個 token 形成 1 條記錄;Decoder 的壓縮率為 1,保留逐位置的全域記錄。

Decoder 因此主要依靠跨層共享降低空間需求,沒有把所有遠端資訊都先合併成更粗的表示。長程資訊的解析度、每次讀取多少位置、多少層共用同一份資料,可以分別調整。

相較 V4 的 CSA 與 HCA 混合全域分支,V4.1 改用 CSA2。對實作端而言,這也代表不能只替舊引擎改一個壓縮率參數,就假設共享與檢索路徑已經支援。

4. FP4 讓主 KV 縮小,縮放係數仍要占空間

主 KV 的數值格式從 FP8 降至 FP4。報告使用 E2M1,每個數值占 4 bit,每 16 個通道另配一個 8 bit 的 E4M3 縮放係數。只計這兩部分,平均每個數值的保存成本為:

4+8/16=4.5 bit

這個算式不能拿來代表所有快取的平均位元數。它未計入其他資料結構,局部 SWA KV 也繼續使用 FP8。報告的全域 KV 總量,還包括前述 indexer K 與各區段的不同設定。

量化同時牽涉品質。DeepSeek 在後訓練加入量化感知訓練(Quantization-Aware Training,QAT),讓模型適應低精度保存的主 KV;讀取時再反量化,交由注意力計算。省下儲存與搬運,不代表注意力矩陣乘法就直接改成 FP4 執行,也不能將 4.5 bit 推算成固定推論加速倍數。

5. 持久化快取降至約 1/8,靠的是放棄長存局部狀態

技術報告指出,前代持久化 KV 快取中,SWA KV 接近一半。全域資料可能在較長時間後仍被重用,局部狀態的價值卻集中在活躍會話的幾分鐘。把兩者保存同樣久,會留下大量很少再用到的局部資料。

V4.1 繼續長期保存全域 KV,Encoder 的 SWA 狀態改放短期記憶體池,依分鐘級期限淘汰;SWA KV 不再進入長期持久化快取。若全域前綴命中,但 Encoder 局部狀態已過期,系統回放已快取前綴末尾的 128 token,近似恢復局部狀態,並處理新增輸入。命中的全域前綴可以重用,不必因重建局部狀態就全部重寫。

按報告描述的舊組成,可用以下算式理解節省來源:

約 1/2 的原有全域部分 × 約 1/4 的全域體積=約 1/8

這是架構、精度與保存策略共同形成的結果。1/8 的比較條件是相同工作負載,無法直接套用到任意服務的硬碟需求。

Decoder 的處理方式另有差別:每次 prefill 都將整段提示末尾 128 token 跑過後 20 層,建立接下來生成所需的局部狀態。這些狀態供當次生成使用,不放進前綴持久化快取。

最需要保留的限定是「近似」。多層局部注意力會累積依賴範圍;報告以 20 層 Decoder 為例,精確回放的理論長度為 20×128=2560 token。有限回放只用最後 128 token,截斷更早的局部依賴。報告表示品質影響很小,卻沒有宣稱它與完整計算數學等價,Decoder 也在後訓練中模擬這種回放限制。

對重複利用長提示的產品,應直接測試這個差異。冷啟動、全域與局部都命中、只有全域命中,是不同狀態;平均延遲會把重建成本藏起來。測試集也要保留依賴較早細節的任務,不能只用能從最後一段回答的問題。快取生命週期與回放條件見技術報告 §3.2。

6. CED 省輸入計算,其他設計各有不同節省範圍

把改善全部歸給 CED,會讓部署團隊找錯瓶頸。CED 讓 Decoder 的全域記憶可由 Encoder 輸出建立,降低長輸入計算;CSA2 減少重複保存與部分重複檢索;FP4 降低主 KV 的體積;稀疏選擇與分層檢索限制讀取量及後續搜尋範圍;有限回放則減少局部狀態長存,並控制 Decoder 補算長度。

按每 token 890 bytes 計算,100 萬 token 的全域 KV 約為十進位 0.89 GB。這是一個有用的容量估算,但不包含模型權重、局部快取、工作區與其他執行開銷,不能據此宣稱一般裝置就能完整部署這個模型。

報告另一項結果是上下文從 4K 增至 1M、長度增為 256 倍時,單 token decode 的精度加權 FLOPs 只增加約 25%。其中 BF16、FP8、FP4 分別按 1、0.5、0.25 加權。這張計算量曲線衡量的是整套設計,沒有提供相同幅度的端到端延遲或吞吐保證。

評估部署,先確認引擎實際支援到哪裡

官方模型資料庫提供參考推論程式,但 README 明確定位為方便閱讀的實作,並非正式環境的服務引擎。生成路徑採一般自回歸流程;model.py 的簡短 decode 自我測試以未初始化權重檢查運作串接,不能拿來證明模型回答品質。官方推論 README把這些限制寫得很清楚。

整合時至少要分開驗證協定與執行。官方 deepseek-recipe 提供 Rust 與 Python 的格式轉換和協定工具,但它不負責模型推論,也不替服務執行工具呼叫。能正確產生提示格式,只完成介面的一部分;CSA2、低精度快取與有限回放仍需要推論執行環境支援。deepseek-recipe 官方儲存庫可用來確認這條界線。

成本評估則應回到自己的流量。輸入長、輸出短且常重用前綴的服務,較可能受益於這套設計;若請求幾乎不重用前綴,持久化快取的優勢便不會完整反映在帳單。這是依架構作出的部署判斷,仍需以實測確認。報告未提供可直接套用到每家服務的毛利率改善,應分別量測每次請求的 GPU 時間、快取儲存與資料搬運,再換算單位服務成本。

常見問題

DeepSeek V4.1 Flash 的 890 bytes 包含模型權重嗎?

不包含。890 bytes/token 是全域 KV 快取口徑;100 萬 token 約為十進位 0.89 GB,仍需另外計入權重、局部 SWA 快取、工作區與執行開銷。

Prefill 約 8B、decode 約 16B,代表有兩個獨立模型嗎?

這是同一套 CED 架構在不同階段的啟動參數量。長輸入主要經過前 20 層,生成則經過完整 40 層;Decoder 還須處理提示末尾 128 token 以建立局部狀態。

Top-512 會刪除其他歷史內容嗎?

不會。它限制本次注意力讀取的全域記錄數,未選到的記錄仍可供後續查詢。全域快取總量仍隨上下文長度成長。

有限回放能精確恢復原本的局部狀態嗎?

不能保證數學等價。20 層 Decoder 的理論精確回放長度為 2560 token,實際只回放最後 128 token。模型透過後訓練適應截斷,正式導入仍應測試對任務品質的影響。

權威來源

Author Insight

我會優先測量局部快取過期後的請求。890 bytes 很醒目,但正式服務要承擔的是使用者離開幾分鐘、回來繼續對話時的品質與等待時間。若只有全域前綴命中的測試依然穩定,再討論要把多少儲存預算轉成更多並行會話,才有依據。光是證明模型能裝進記憶體,還沒回答這個問題。

術語表

術語 本文用法
Prefill 處理已知輸入並建立快取
Decode 逐步產生新 token
CED 因果編碼器—解碼器,前段輸出用於建立後段全域 KV
CSA2 結合壓縮、稀疏選擇與跨層共享的注意力機制
SWA 滑動視窗注意力,本模型局部視窗為 128 token
全域 KV 隨上下文成長、可跨層共享的注意力記錄
有限回放 以受限長度重算局部狀態,結果為近似
精度加權 FLOPs 依數值精度給不同權重的運算量,不能直接當作延遲
Share this post
Ewan Mak

I'm a Full Stack Developer with expertise in building modern web applications that fast, secure, and scalable. Crafting seamless user experiences with a passion for headless CMS, Vercel and Cloudflare

Loading...