【infra之路】從 KV Cache 到逐層語(yǔ)義:理解 Decoder-Only LLM 的推理過(guò)程
本文記錄了我學(xué)習(xí) AI Infra以 nano-vllm 為切入點(diǎn)過(guò)程中圍繞 LLM 推理機(jī)制產(chǎn)生的幾個(gè)核心問題及思考。起因在學(xué)習(xí) nano-vllm 源碼時(shí)我遇到了一個(gè)看似簡(jiǎn)單但細(xì)想很深的問題KV Cache 為什么只緩存 K 和 V不緩存 Q這個(gè)問題把我拉回到了 Attention 機(jī)制本身進(jìn)而引出了對(duì) Decoder-Only 架構(gòu)逐層數(shù)據(jù)流的完整梳理。問題一KV Cache 為什么只存 K 和 V回到 Attention 公式Attention(Qt,K,V)softmax(Qt?[K1,…,Kt]Td)?[V1,…,Vt]\text{Attention}(Q_t, K, V) \text{softmax}\left(\frac{Q_t \cdot [K_1, \dots, K_t]^T}{\sqrtcj3uvhbzvbv}\right) \cdot [V_1, \dots, V_t]Attention(Qt?,K,V)softmax(d?Qt??[K1?,…,Kt?]T?)?[V1?,…,Vt?]關(guān)鍵不對(duì)稱性矩陣形狀含義QtQ_tQt?[1, d]只有當(dāng)前 1 個(gè)token 的 QueryK1..tK_{1..t}K1..t?[t, d]所有歷史token 的 KeyV1..tV_{1..t}V1..t?[t, d]所有歷史token 的 Value用生成過(guò)程推演假設(shè)已生成 “我 喜歡 吃”要生成第 4 個(gè) token生成第 4 個(gè) token Q? x? · W_q ← 只需要當(dāng)前 1 個(gè) Q Attention softmax(Q? · [K?,K?,K?,K?]? / √d) · [V?,V?,V?,V?] 生成第 5 個(gè) token Q? x? · W_q ← Q? 再也不會(huì)被用到 Attention softmax(Q? · [K?,K?,K?,K?,K?]? / √d) · [V?,V?,V?,V?,V?] ↑ K?~K? 又要用 ↑ V?~V? 又要用結(jié)論Q 是一次性提問者每步只需當(dāng)前一個(gè)用完即棄無(wú)跨步復(fù)用需求K 和 V 是被反復(fù)查詢的知識(shí)庫(kù)每一步生成都要回顧全部歷史必須緩存一個(gè)類比把 Attention 想象成圖書館查資料Q 你手里的一次性提問紙條問完就扔K 每本書封面上的索引標(biāo)簽?zāi)阈枰袝臉?biāo)簽V 書里的實(shí)際內(nèi)容找到后你要讀所有相關(guān)書圖書館KV Cache存的是書KV不是你的紙條Q。不緩存的代價(jià)無(wú) Cache暴力重算有 KV Cache每步計(jì)算量O(t)O(1)生成 n 個(gè) tokenO(n2)O(n)代價(jià)無(wú)額外顯存顯存占用KV Cache 本質(zhì)是用空間換時(shí)間。問題二多層 Decoder 中每層的輸入輸出到底是什么全局?jǐn)?shù)據(jù)流Token IDs: [我, 喜, 歡, 吃] │ ▼ Embedding: [4, 4096] ← 第一層的輸入 │ ▼ ┌─ Layer 1 ─┐ in: [4, 4096] out: [4, 4096] ├─ Layer 2 ─┤ in: [4, 4096] out: [4, 4096] ├─ Layer 3 ─┤ in: [4, 4096] out: [4, 4096] │ ... │ └─ Layer N ─┘ in: [4, 4096] out: [4, 4096] │ ▼ RMSNorm LM Head: [4, 4096] → [4, vocab_size] │ ▼ 取最后一個(gè)位置 → softmax → 下一個(gè) token核心事實(shí)每一層的輸入輸出形狀完全相同都是[seq_len, hidden_dim]。層與層之間變的不是形狀是語(yǔ)義的深度。第一層的輸入Embedding 層的輸出。每個(gè) token 被映射為一個(gè) 4096 維向量此時(shí)只包含該 token 自身的詞義尚未與任何其他 token 交互。每層內(nèi)部做了什么輸入 x: [seq_len, 4096] │ ├──→ RMSNorm → Self-Attention → (殘差) │ │ │ ▼ ├──→ RMSNorm → FFN (SwiGLU) → (殘差) │ ▼ 輸出: [seq_len, 4096]兩個(gè)子模塊各司其職模塊作用類比Self-Attentiontoken 之間交流橫向融合上下文開會(huì)討論FFN/MLP每個(gè) token 獨(dú)立思考縱向深化表示會(huì)后獨(dú)立思考Prefill vs DecodePrefill處理 promptDecode逐 token 生成每層輸入[n, 4096][1, 4096]Q[n, 4096][1, 4096]K, V[n, 4096]新算并存入 cache[1, 4096]新算并追加到 cache參與計(jì)算的 K, V[n, 4096][t, 4096]全部歷史從 cache 讀問題三我的核心感悟逐層語(yǔ)義完善把上面兩個(gè)問題串起來(lái)我得到的理解是每個(gè) token 的向量從孤立的詞義出發(fā)每經(jīng)過(guò)一層通過(guò) Attention 吸收上下文、通過(guò) FFN 深化推理維度不變但語(yǔ)義逐層豐富最終變成一個(gè)濃縮了全文信息、足以預(yù)測(cè)下一個(gè)詞的表示。具體地Embedding 后 吃 只知道自己是吃 Layer 1 后 吃 知道前面是喜歡 Layer 5 后 吃 知道這是主語(yǔ)喜歡吃的結(jié)構(gòu) Layer 20 后 吃 知道語(yǔ)境大概率要接一個(gè)食物名詞 Layer N 后 吃 的向量已經(jīng)準(zhǔn)備好去預(yù)測(cè)蘋果/米飯/火鍋...三個(gè)讓這個(gè)過(guò)程成立的關(guān)鍵設(shè)計(jì)Causal Mask每個(gè) token 只能看到自己 前文保證自回歸生成的合法性殘差連接每層不是推倒重來(lái)而是在上一層基礎(chǔ)上疊加一個(gè)增量修正維度恒定4096 維貫穿始終讓層與層之間可以無(wú)限堆疊這就像畫畫第一層打輪廓后面每層加一點(diǎn)細(xì)節(jié)和色彩最終成為一幅完整的畫。

相關(guān)新聞

Pandas分組聚合深度解析:從groupby到agg的高效數(shù)據(jù)處理實(shí)戰(zhàn)

Pandas分組聚合深度解析:從groupby到agg的高效數(shù)據(jù)處理實(shí)戰(zhàn)

1. 項(xiàng)目概述:為什么分組聚合是數(shù)據(jù)分析的“瑞士軍刀” 如果你用過(guò)Excel的數(shù)據(jù)透視表,那你對(duì)分組聚合這個(gè)概念就不會(huì)陌生。簡(jiǎn)單來(lái)說(shuō),就是把一堆數(shù)據(jù),按照某個(gè)或某幾個(gè)標(biāo)準(zhǔn)(比如按城市、按月份、按產(chǎn)品類別)分…

2026/8/3 8:38:39 閱讀更多
GDScript反編譯器實(shí)戰(zhàn)指南:從字節(jié)碼逆向到源碼恢復(fù)

GDScript反編譯器實(shí)戰(zhàn)指南:從字節(jié)碼逆向到源碼恢復(fù)

1. 項(xiàng)目概述:為什么我們需要GDScript反編譯器?如果你是一個(gè)使用Godot引擎的開發(fā)者,無(wú)論是獨(dú)立游戲制作人還是團(tuán)隊(duì)的一員,你大概率都接觸過(guò)GDScript。這門為Godot量身定制的腳本語(yǔ)言,以其簡(jiǎn)潔的語(yǔ)法和與引擎節(jié)點(diǎn)的深度集…

2026/8/3 8:38:39 閱讀更多
Unity移動(dòng)端性能優(yōu)化實(shí)戰(zhàn):GPU Instancing與貼圖壓縮核心技術(shù)解析

Unity移動(dòng)端性能優(yōu)化實(shí)戰(zhàn):GPU Instancing與貼圖壓縮核心技術(shù)解析

1. 項(xiàng)目概述:為什么移動(dòng)端優(yōu)化是Unity開發(fā)者的必修課 做Unity移動(dòng)端開發(fā),尤其是面向中低端安卓設(shè)備或者追求60幀穩(wěn)定體驗(yàn)的項(xiàng)目,性能優(yōu)化從來(lái)都不是一個(gè)“可選項(xiàng)”,而是一個(gè)貫穿始終的“生存法則”。我經(jīng)歷過(guò)太多這樣的場(chǎng)景&#…

2026/8/3 8:38:39 閱讀更多
Redis事務(wù)詳解:原理、實(shí)戰(zhàn)、坑點(diǎn)與實(shí)踐

Redis事務(wù)詳解:原理、實(shí)戰(zhàn)、坑點(diǎn)與實(shí)踐

一、什么是Redis事務(wù)?1.1 Redis事務(wù)是一組一次性、順序性、排他性執(zhí)行的Redis命令集合。事務(wù)會(huì)將多個(gè)命令打包,一次性發(fā)送給Redis服務(wù)端執(zhí)行,執(zhí)行過(guò)程中不會(huì)被其他客戶端命令插隊(duì),保證批量命令的執(zhí)行完整性。1.2 核心特性&#xf…

2026/8/3 11:58:47 閱讀更多
AI演講能力訓(xùn)練實(shí)戰(zhàn)手冊(cè)(企業(yè)級(jí)落地白皮書):覆蓋語(yǔ)音、語(yǔ)義、韻律、可信度四大維度

AI演講能力訓(xùn)練實(shí)戰(zhàn)手冊(cè)(企業(yè)級(jí)落地白皮書):覆蓋語(yǔ)音、語(yǔ)義、韻律、可信度四大維度

更多請(qǐng)點(diǎn)擊: https://codechina.net 第一章:AI演講能力訓(xùn)練的演進(jìn)邏輯與企業(yè)價(jià)值錨點(diǎn) AI演講能力訓(xùn)練已從早期語(yǔ)音合成(TTS)驅(qū)動(dòng)的單向播報(bào),演進(jìn)為融合語(yǔ)義理解、情感建模、實(shí)時(shí)反饋與多模態(tài)協(xié)同的閉環(huán)交互系統(tǒng)。這一…

2026/8/3 11:58:47 閱讀更多
hot-35 搜索插入位置

hot-35 搜索插入位置

解法&#xff1a;二分搜索 注意最后一步細(xì)節(jié)class Solution:def searchInsert(self, nums: List[int], target: int) -> int:nums_len len(nums)left 0right nums_len - 1while left < right:mid (left right) //2if nums[mid] target:return midelif nums[mid] &…

2026/8/3 11:58:47 閱讀更多
數(shù)字人多語(yǔ)種播報(bào),口型真能對(duì)上嗎?

數(shù)字人多語(yǔ)種播報(bào),口型真能對(duì)上嗎?

做海外內(nèi)容半年&#xff0c;最頭疼的不是寫文案&#xff0c;是錄口播——英語(yǔ)、西語(yǔ)、日語(yǔ)輪著來(lái)&#xff0c;真人出鏡一緊張就卡殼&#xff0c;重錄十遍口型還對(duì)不上音頻&#xff0c;剪輯師都快辭職了。 直到試了 數(shù)字人口播智能體&#xff0c;才明白什么叫‘上傳即同步’。 上…

2026/8/3 11:48:46 閱讀更多
全球僅7家廠商通過(guò)ISO/IEC 27001認(rèn)證的名片AI引擎,我們逆向拆解了它的字段置信度熔斷機(jī)制

全球僅7家廠商通過(guò)ISO/IEC 27001認(rèn)證的名片AI引擎,我們逆向拆解了它的字段置信度熔斷機(jī)制

更多請(qǐng)點(diǎn)擊&#xff1a; https://kaifayun.com 第一章&#xff1a;全球僅7家廠商通過(guò)ISO/IEC 27001認(rèn)證的名片AI引擎概覽 名片AI引擎是企業(yè)級(jí)智能文檔處理的核心組件&#xff0c;專注于高精度OCR、語(yǔ)義結(jié)構(gòu)化提取與跨語(yǔ)言實(shí)體對(duì)齊。截至2024年第三季度&#xff0c;全球范圍內(nèi)僅…

2026/8/3 0:07:47 閱讀更多
MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南&#xff1a;AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案 【免費(fèi)下載鏈接】MoneyPrinterPlus AI一鍵批量生成各類短視頻,自動(dòng)批量混剪短視頻,自動(dòng)把視頻發(fā)布到抖音,快手,小紅書,視頻號(hào)上,賺錢從來(lái)沒有這么容易過(guò)! 支持本地語(yǔ)音模型chatTTS,fasterwhisper,…

2026/8/3 7:44:46 閱讀更多
3分鐘搞定!QQ空間歷史說(shuō)說(shuō)完整備份終極指南

3分鐘搞定!QQ空間歷史說(shuō)說(shuō)完整備份終極指南

3分鐘搞定&#xff01;QQ空間歷史說(shuō)說(shuō)完整備份終極指南 【免費(fèi)下載鏈接】GetQzonehistory 獲取QQ空間發(fā)布的歷史說(shuō)說(shuō) 項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過(guò)&#xff0c;那些年發(fā)過(guò)的QQ空間說(shuō)說(shuō)&#xff0c;那些記錄青春的文字…

2026/8/2 0:04:01 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料&#xff08;Applied Materials&#xff09;公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號(hào)分配電路板。該型號(hào)&#xff08;0100-02186&#xff09;的核心特點(diǎn)如下&#xff1a;專用于Endura等半導(dǎo)體工藝腔室。集成信號(hào)路由與分配功能。連接控制…

2026/8/2 2:51:21 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)是日本日清&#xff08;Nissei&#xff09;品牌的一款工業(yè)用三相異步電機(jī)&#xff0c;適用于自動(dòng)化設(shè)備及通用機(jī)械驅(qū)動(dòng)。該型號(hào)&#xff08;FFMN-32L-10-T0 40AX&#xff09;的核心特點(diǎn)如下&#xff1a;三相交流異步電動(dòng)機(jī)。額定…

2026/8/2 2:52:49 閱讀更多