最近,TurboQuant發(fā)布后,內(nèi)存類股票短時(shí)間內(nèi)應(yīng)聲下跌。

很多人第一反應(yīng)是:
這不就是一個(gè)壓縮算法嗎?為什么會(huì)引發(fā)這么大的市場波動(dòng)?
表面上看,這只是一個(gè)技術(shù)層面的消息;
但往深處看,它觸動(dòng)的其實(shí)是AI基礎(chǔ)設(shè)施里一個(gè)非常核心的變量——顯存。
過去一提到大模型,大家最先想到的往往是“算力”。
好像只要GPU足夠強(qiáng)、算力足夠大,問題就都能解決。
但從真實(shí)工程實(shí)踐來看,事情并沒有這么簡單。
尤其到了推理階段,很多系統(tǒng)真正的瓶頸,已經(jīng)不再只是“算力不夠”,而是:
顯存不夠。
換句話說,今天的大模型推理,表面上看是在拼計(jì)算,實(shí)際上越來越在拼顯存。
今天,奇點(diǎn)算力就簡單聊聊:
為什么大模型推理越來越依賴GPU顯存?

一、推理為什么不只是“算得多”?
要理解這個(gè)問題,先得從大模型生成內(nèi)容的方式說起。
當(dāng)前主流的Transformer大模型,大多采用的是自回歸生成機(jī)制。
簡單來說,就是模型不會(huì)一次性把整段答案全部吐出來,而是一個(gè)Token接一個(gè)Token地往后生成。
這件事聽起來很自然,但背后有一個(gè)很關(guān)鍵的特點(diǎn):
每生成一個(gè)新Token,模型都需要參考前面已經(jīng)生成的全部內(nèi)容。
比如,生成第10個(gè)Token時(shí),要參考前9個(gè)Token;
生成第100個(gè)Token時(shí),要參考前99個(gè)Token;
生成第1000個(gè)Token時(shí),就要參考前999個(gè)Token。
問題在于,如果每一步都把前面的歷史內(nèi)容重新完整計(jì)算一遍,就會(huì)產(chǎn)生大量重復(fù)計(jì)算。
上下文越長,重復(fù)計(jì)算越多,系統(tǒng)開銷也會(huì)越來越大。
所以,大模型推理并不是“算一次就結(jié)束”,而是一個(gè)持續(xù)依賴歷史信息、不斷往后疊加的過程。
而這,正是顯存問題開始變得重要的起點(diǎn)。

二、KV Cache,本質(zhì)上就是大模型的“短期記憶”
為了減少這種重復(fù)計(jì)算,工程上引入了一個(gè)非常關(guān)鍵的機(jī)制:KV Cache。
你可以把它理解成大模型推理過程中的“短期記憶”。
在Transformer的注意力機(jī)制里,每次計(jì)算都會(huì)生成三組核心信息:
Q(Query):當(dāng)前Token的查詢
K(Key):歷史Token的特征標(biāo)簽
V(Value):歷史Token的內(nèi)容表示
如果沒有KV Cache,那么模型每生成一個(gè)新Token,都需要把前面所有Token對應(yīng)的K和V重新計(jì)算一遍。
這顯然很浪費(fèi),也會(huì)讓推理效率變得很低。
而有了KV Cache之后,歷史Token對應(yīng)的K和V可以提前緩存下來。
這樣一來,后續(xù)生成新Token時(shí),模型只需要計(jì)算當(dāng)前Token的Q,再去讀取歷史緩存進(jìn)行匹配即可,不需要把前面的K和V一遍遍重算。
它帶來的好處非常直接:
一是減少了大量重復(fù)計(jì)算;
二是顯著提升了推理速度。
但與此同時(shí),它也引出了另一個(gè)現(xiàn)實(shí)問題:
這些緩存下來的歷史信息,都要存放在GPU顯存里。
也就是說,KV Cache越重要,顯存的重要性就越高。
上下文越長,緩存越多;并發(fā)越高,顯存壓力也越大。
所以,從某種意義上說,KV Cache一邊幫大模型提升了推理效率,一邊也把系統(tǒng)瓶頸慢慢推向了顯存。

三、大模型推理,其實(shí)分成兩個(gè)階段
如果從工程實(shí)現(xiàn)的角度看,大模型推理通??梢圆鸪蓛蓚€(gè)階段:
Prefill 階段和Decode 階段。
這兩個(gè)階段雖然都屬于“推理”,但它們對硬件資源的依賴點(diǎn)并不一樣。
1. Prefill 階段:更吃算力
Prefill可以理解為“預(yù)填充階段”。
在這個(gè)階段,模型會(huì)一次性處理用戶輸入的全部提示詞。
也就是說,整段輸入內(nèi)容會(huì)被完整送進(jìn)模型,統(tǒng)一計(jì)算所有Q、K、V,并把K和V寫入顯存,形成初始的KV Cache,同時(shí)生成第一個(gè)Token。
這一階段的特點(diǎn)很明顯:
計(jì)算量大,
GPU核心負(fù)載高,
瓶頸更多落在算力本身。
所以,Prefill階段更像傳統(tǒng)意義上的“計(jì)算密集型任務(wù)”。
2. Decode 階段:更吃顯存
當(dāng)模型開始逐Token輸出答案時(shí),就進(jìn)入了Decode階段。
這一階段的單次計(jì)算量,其實(shí)沒有Prefill那么大。
但它有一個(gè)更關(guān)鍵的特點(diǎn):每生成一個(gè)新Token,都必須頻繁讀取前面已經(jīng)存下來的大量KV Cache。
這時(shí)候,問題就不再只是“算得夠不夠快”,而變成了:
顯存夠不夠大
顯存帶寬夠不夠高
顯存讀取效率夠不夠好
也就是說,Decode階段真正的瓶頸,往往已經(jīng)不在GPU計(jì)算核心,而在于顯存系統(tǒng)本身。
這也是為什么,很多推理任務(wù)看起來GPU并沒有完全跑滿,但吞吐量還是上不去。
原因未必是“算不動(dòng)”,而可能是“顯存讀不過來”。
所以,用一句更直白的話總結(jié)就是:
Prefill拼算力,Decode拼顯存。

四、為什么KV Cache會(huì)這么快把顯存吃滿?
很多人剛接觸大模型部署時(shí),會(huì)以為顯存主要消耗在模型參數(shù)本身。
但到了真實(shí)業(yè)務(wù)場景里,你會(huì)發(fā)現(xiàn),真正會(huì)迅速把顯存推高的,往往不只是模型權(quán)重,而是不斷累積的KV Cache。
顯存壓力通常來自三個(gè)因素疊加:
模型參數(shù)量 + 上下文長度 + 并發(fā)請求數(shù)
模型越大,基礎(chǔ)顯存占用越高;
上下文越長,需要保存的歷史信息越多;
并發(fā)越高,同一時(shí)間需要維護(hù)的緩存就越多。
這意味著,顯存占用并不是一個(gè)靜態(tài)數(shù)字,而是會(huì)隨著業(yè)務(wù)場景不斷膨脹的。
很多模型在實(shí)驗(yàn)環(huán)境里看起來可以順利跑通,
可一旦進(jìn)入真實(shí)業(yè)務(wù)環(huán)境,要支持更長上下文、更多用戶并發(fā)時(shí),顯存問題就會(huì)很快暴露出來。
從這個(gè)角度看,推理系統(tǒng)爭奪的,已經(jīng)不只是GPU核心算力,還有顯存的承載能力。

五、為什么這幾年很多優(yōu)化都圍著KV Cache轉(zhuǎn)?
答案其實(shí)很簡單:
因?yàn)镵V Cache太關(guān)鍵了。
它不僅決定推理速度,還直接影響很多更現(xiàn)實(shí)的問題:
系統(tǒng)能支持多長上下文
能承載多少并發(fā)請求
GPU利用率能不能提高
部署成本能不能降下來
所以,這幾年很多推理優(yōu)化方案,本質(zhì)上都在解決同一個(gè)問題:
如何用更少的顯存,保存盡可能有效的歷史信息?
比如:
MQA
讓多個(gè)注意力頭共享同一組K和V,從而減少緩存占用。
GQA
在共享與效果之間做折中,采用分組共享K和V的方式,在控制顯存壓力的同時(shí)盡量保持模型能力。
緩存壓縮、分頁管理、量化
這些方法的方向也都類似,本質(zhì)上都是為了讓顯存占用更低、緩存效率更高、整體推理成本更可控。
從表面上看,這些方案是在調(diào)模型結(jié)構(gòu)、調(diào)框架、調(diào)推理引擎;
但從底層邏輯看,它們其實(shí)都在做一件很現(xiàn)實(shí)的事:
精打細(xì)算地節(jié)省每一字節(jié)顯存。

六、為什么一個(gè)壓縮算法會(huì)影響市場情緒?
看到這里,其實(shí)就不難理解,為什么像TurboQuant這樣的技術(shù)一出現(xiàn),會(huì)很快影響市場判斷。
因?yàn)樗绊懙?,早已不只是一個(gè)局部優(yōu)化點(diǎn),
而是大家對于整個(gè)AI基礎(chǔ)設(shè)施成本結(jié)構(gòu)的預(yù)期。
過去很多人默認(rèn)一個(gè)邏輯:
大模型越來越普及,模型越來越大,上下文越來越長,并發(fā)越來越高,那么內(nèi)存和顯存需求自然也會(huì)持續(xù)上漲。
但如果新的壓縮技術(shù)和緩存優(yōu)化技術(shù)不斷進(jìn)步,
那么原本那條“硬件需求持續(xù)高速增長”的曲線,就有可能被重新修正。
也就是說,一個(gè)壓縮算法看似只是在提升技術(shù)效率,
實(shí)際上觸動(dòng)的,卻是整個(gè)產(chǎn)業(yè)對未來資源需求的判斷。
這也是為什么,它會(huì)快速傳導(dǎo)到資本市場。

七、結(jié)語:大模型推理,表面拼算力,實(shí)則越來越拼顯存
很多人談大模型,最先想到的是參數(shù)量、訓(xùn)練成本、GPU數(shù)量。
但如果把視角放到推理側(cè),尤其是放到真實(shí)業(yè)務(wù)場景里,就會(huì)發(fā)現(xiàn)行業(yè)已經(jīng)進(jìn)入了一個(gè)更細(xì)分的階段。
在這個(gè)階段里:
Prefill看算力,Decode看顯存。
KV Cache讓大模型避免了大量重復(fù)計(jì)算,顯著提升了推理效率;
但與此同時(shí),也把越來越大的系統(tǒng)壓力轉(zhuǎn)移到了GPU顯存上。
所以,今天討論大模型推理優(yōu)化,已經(jīng)不能只看“GPU算得快不快”,還要看:
顯存占用是否可控
顯存帶寬是否足夠
緩存管理是否高效
并發(fā)能力能否真正落地
從這個(gè)角度看,顯存早已不只是參數(shù)表上的一個(gè)數(shù)字。
它正在變成決定大模型推理吞吐、成本和規(guī)?;渴鹉芰Φ年P(guān)鍵資源。
說到底:
表面上,大模型推理在拼計(jì)算;
更深一層,它越來越在拼顯存。
