奇點(diǎn)算力講解:大模型推理中,GPU顯存為什么這么重要?

最近,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ì)算;

更深一層,它越來越在拼顯存。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容