hao86下載站:值得大家信賴的游戲下載站!

首頁 > 區(qū)塊鏈 > 2080 Ti 顯卡就能跑70B大模型,上交大新框架讓LLM推理增速11倍

2080 Ti 顯卡就能跑70B大模型,上交大新框架讓LLM推理增速11倍

時(shí)間:2023-12-21 10:52:00
來源:hao86下載
區(qū)塊鏈

【#區(qū)塊鏈# #2080 Ti 顯卡就能跑70B大模型,上交大新框架讓LLM推理增速11倍#】

原文來源:量子位

圖片來源:由無界 AI生成

原本需要一張16萬元的80G A100干的活,現(xiàn)在只需要一張不到2萬元的24G 4090就夠了!

上海交大IPADS實(shí)驗(yàn)室推出的開源推理框架PowerInfer,讓大模型推理速度加快了11倍。

而且不用量化,就用FP16精度,也能讓40B模型在個(gè)人電腦上運(yùn)行;如果加入量化,2080 Ti也能流暢運(yùn)行70B模型。

結(jié)合大模型的獨(dú)特特征,通過CPU與GPU間的混合計(jì)算,PowerInfer能夠在顯存有限的個(gè)人電腦上實(shí)現(xiàn)快速推理。

相比于llama.cpp,PowerInfer實(shí)現(xiàn)了高達(dá)11倍的加速,讓40B模型也能在個(gè)人電腦上一秒能輸出十個(gè)token。

我們最熟悉的ChatGPT,一方面有時(shí)會(huì)因?yàn)樵L問量過大而宕機(jī),另一方面也存在數(shù)據(jù)安全問題。

開源模型能較好地解決這兩個(gè)問題,但如果沒有高性能的顯卡,運(yùn)行速度往往十分感人:

而PowerInfer的出現(xiàn),剛好解決了這個(gè)痛點(diǎn)。

PowerInfer一經(jīng)發(fā)布就引起熱烈反響,不到24小時(shí)就獲得了500+星標(biāo),其中還有一顆來自llama.cpp的作者Gerganov。

目前,PowerInfer的源碼和論文均已公開,下面就一起看看它的加速效果究竟有多強(qiáng)。


推理速度最高11倍


在搭載x86 CPU和NVIDIA GPU的消費(fèi)級(jí)硬件平臺(tái)上,PowerInfer以參數(shù)量從7B到175B的一系列LLM模型為基準(zhǔn),對(duì)PowerInfer的端到端推理速度進(jìn)行了測(cè)試,并和同平臺(tái)上性能最好的推理框架llama.cpp進(jìn)行了對(duì)比。

對(duì)于FP16精度的模型,在搭載了13代Intel Core i9和單張RTX 4090的高端PC(PC-High)上,PowerInfer平均實(shí)現(xiàn)了7.23倍的速度提升,其中在Falcon 40B上實(shí)現(xiàn)了高達(dá)11.69倍的速度提升。

在所有測(cè)試用例上,PowerInfer平均達(dá)到了8.32 tokens/s,在OPT 30B和Falcon 40B上最高分別達(dá)到16.06 tokens/s和12.94 tokens/s。

借助PowerInfer,當(dāng)今的消費(fèi)級(jí)平臺(tái)可以流暢運(yùn)行30-40B級(jí)別的LLM,并以可以接受的速度運(yùn)行70B級(jí)別的LLM。

?PowerInfer在不同模型中不同輸出長(zhǎng)度下平均生成token速度測(cè)試圖,縱坐標(biāo)為加速比,每根柱狀圖上標(biāo)注的數(shù)字代表了每秒鐘能夠生成的token數(shù)量

模型量化是端側(cè)LLM推理非常常用的技術(shù),PowerInfer也支持了INT4量化模型的推理。

PowerInfer分別在高端PC(PC-High)和搭載單張RTX 2080Ti的中低端PC(PC-Low)上測(cè)試了一系列INT4量化模型的推理速度。

在PC-High上,PowerInfer能夠高速運(yùn)行40-70B規(guī)模的模型,最高達(dá)到了29.09 tokens/s的推理速度,并且實(shí)現(xiàn)了平均2.89倍,最高4.28倍的速度提升。

同時(shí),在消費(fèi)級(jí)硬件上運(yùn)行OPT-175B這種規(guī)模的模型也成為可能。

在PC-Low這種中低端PC上,PowerInfer可以流暢運(yùn)行30-70B規(guī)模的模型,并實(shí)現(xiàn)平均5.01倍,最高8.00倍的速度提升,這主要得益于INT4量化后模型大部分熱神經(jīng)元得以放置在顯存中。

?PowerInfer在INT4量化模型中的推理速度,縱坐標(biāo)為加速比,每根柱狀圖上標(biāo)注的數(shù)字代表了每秒鐘能夠生成的token數(shù)量

最后,PowerInfer對(duì)比了PC-High上運(yùn)行PowerInfer相比于云端頂級(jí)計(jì)算卡A100運(yùn)行SOTA框架vLLM的端到端推理速度,測(cè)試模型為FP16精度的OPT-30B和Falcon-40B(ReLU)。

當(dāng)輸入長(zhǎng)度為64時(shí),PowerInfer對(duì)A100的速度差距從93%-94%縮小到了28%-29%;在輸入長(zhǎng)度為1的純生成場(chǎng)景中,這一差距會(huì)被進(jìn)一步縮小到低至18%。

這代表著PowerInfer借助稀疏激活和CPU/GPU混合推理,極大地彌合了消費(fèi)級(jí)顯卡到頂尖服務(wù)端計(jì)算卡的推理速度差距。

PowerInfer在4090上與vLLM在A100的性能對(duì)比

那么,PowerInfer是如何實(shí)現(xiàn)消費(fèi)級(jí)硬件上的高速推理的呢?


充分利用模型和硬件特點(diǎn)


PowerInfer實(shí)現(xiàn)高速推理的秘訣,在于充分利用了稠密模型存在的高局部性的稀疏激活,并與CPU和GPU的運(yùn)算特點(diǎn)進(jìn)行了充分結(jié)合。

何謂“稀疏激活”?

最近Mixtral MoE大模型引爆了整個(gè)AI圈,稀疏模型重新進(jìn)入大家的視野。

一個(gè)有趣的事實(shí)是:像OPT、LLaMA(ReLU)這樣被視為稠密模型的LLM,同樣存在稀疏激活的特征。

什么是稠密模型的稀疏激活呢?

和MoE模型中一個(gè)輸入token只需要激活FFN layer其中一個(gè)或者兩個(gè)專家模塊類似,以O(shè)PT模型的稠密FFN層為例,只需要激活一小部分(實(shí)驗(yàn)顯示約10%)神經(jīng)元即可保證輸出的正確性。

其他的神經(jīng)元雖然參與了計(jì)算,但并沒有對(duì)輸出產(chǎn)生明顯貢獻(xiàn)。

換句話說,稠密模型中的每一個(gè)神經(jīng)元都是一個(gè)專家

?左圖來自Alexander Clark論文(aRXiv編號(hào):2101.03961)

MoE模型可以在專家FFN層之前通過路由模塊將輸入分發(fā)給其中一個(gè)或者兩個(gè)專家進(jìn)行計(jì)算,那么稠密模型中的稀疏激活又該如何路由或者在計(jì)算之前就知道哪些專家神經(jīng)元會(huì)對(duì)結(jié)果產(chǎn)生貢獻(xiàn)呢?

答案是為稠密模型增加路由預(yù)測(cè)模塊。

在模型開始服務(wù)前,PowerInfer首先會(huì)對(duì)模型進(jìn)行離線分析,通過將模型在通用數(shù)據(jù)集中進(jìn)行推理獲取每一層輸入與激活神經(jīng)元之間的對(duì)應(yīng)關(guān)系,進(jìn)而為稠密模型每一層訓(xùn)練一個(gè)小的預(yù)測(cè)路由模塊來預(yù)測(cè)每一個(gè)輸入會(huì)激活的神經(jīng)元,只計(jì)算路由激活的神經(jīng)元(專家)。

在多個(gè)下游任務(wù)的測(cè)試中,PowerInfer的路由模塊幾乎沒有引入額外的精度損失。

稀疏激活帶來的推理局部性

稀疏激活的另一個(gè)有趣事實(shí)是,盡管對(duì)于不同的輸入token,激活的神經(jīng)元分布存在差異;但如果在足夠多的數(shù)據(jù)上進(jìn)行推理,并將每次激活的分布疊加,PowerInfer發(fā)現(xiàn)少部分神經(jīng)元總體上被激活的概率更高。

也就是說,統(tǒng)計(jì)意義上大模型神經(jīng)元的激活符合Power Law分布(Power Law分布是一種統(tǒng)計(jì)規(guī)律,表示少數(shù)事件的發(fā)生頻率遠(yuǎn)高于大量其他事件)。

如下圖(a)所示,對(duì)于OPT-30B和LLaMA(ReGLU)-70B兩個(gè)模型里的某一層FFN網(wǎng)絡(luò),統(tǒng)計(jì)意義上26%和43%的神經(jīng)元分別貢獻(xiàn)了80%的激活。

而在整個(gè)模型的尺度上,如下圖(b)所示,17%和26%的神經(jīng)元貢獻(xiàn)了80%的激活。

因此,當(dāng)只考慮對(duì)最終激活有貢獻(xiàn)的運(yùn)算時(shí),LLM具有推理局部性:對(duì)權(quán)重的訪問傾向于集中在一定的區(qū)域,而不是均勻分布在所有的神經(jīng)元上。

在推理運(yùn)算中它顯現(xiàn)為程序的局部性:對(duì)內(nèi)存空間的訪問傾向于集中在一定的區(qū)域,而不是均勻分布在整個(gè)內(nèi)存空間。

在常見的個(gè)人電腦中,GPU具有較少的顯存和更強(qiáng)的計(jì)算能力,適合處理頻繁訪問且計(jì)算強(qiáng)度高的任務(wù);而CPU擁有更大的內(nèi)存容量但相對(duì)較弱的算力,適合處理少量訪問且計(jì)算強(qiáng)度低的任務(wù)。

因此,理想情況下,一小部分經(jīng)常訪問的神經(jīng)元應(yīng)該存儲(chǔ)在顯存中,相比之下更大、訪問頻率更低的神經(jīng)元更適合存儲(chǔ)在內(nèi)存中,由CPU進(jìn)行計(jì)算。

這啟發(fā)了PowerInfer基于局部性特征進(jìn)行CPU/GPU混合推理系統(tǒng)的設(shè)計(jì)。

CPU/GPU混合推理設(shè)計(jì)

根據(jù)上述神經(jīng)元的Power Law和由此產(chǎn)生的局部性,PowerInfer通過提前靜態(tài)分析每一個(gè)神經(jīng)元的冷熱性,將少量的熱神經(jīng)元加載在GPU顯存上,剩余的冷神經(jīng)元加載到CPU的內(nèi)存中。

以神經(jīng)元為粒度的模型混合加載,會(huì)出現(xiàn)一層內(nèi)有些神經(jīng)元在GPU上,有些神經(jīng)元在CPU上。

為此,PowerInfer設(shè)計(jì)了細(xì)粒度的CPU/GPU混合推理引擎。

以下圖為例,對(duì)于某一層的輸入,PowerInfer會(huì)首先預(yù)測(cè)該輸入會(huì)激活神經(jīng)元為3,4,5。

然后CPU、GPU會(huì)分別根據(jù)預(yù)測(cè)信息,執(zhí)行位于其內(nèi)存中的神經(jīng)元的計(jì)算。

具體以下圖的例子來說,CPU上會(huì)計(jì)算第四個(gè)神經(jīng)元,GPU上會(huì)計(jì)算第三個(gè)、第五個(gè)神經(jīng)元,然后再GPU上對(duì)兩邊的計(jì)算結(jié)果進(jìn)行合并。

PowerInfer混合計(jì)算的方式

PowerInfer的整體架構(gòu)

總體而言,PowerInfer利用基于稠密模型的稀疏激活及其引入的局部性特性,開發(fā)出了一種創(chuàng)新的CPU/GPU混合推理引擎。

在接入一個(gè)大型語言模型(LLM)時(shí),PowerInfer首先在離線階段對(duì)模型的預(yù)測(cè)路由模塊進(jìn)行訓(xùn)練,并深入分析模型的激活特征。

同時(shí),結(jié)合目標(biāo)硬件的帶寬和容量等關(guān)鍵信息,計(jì)算出最佳的神經(jīng)元放置策略。

在此基礎(chǔ)上,PowerInfer會(huì)根據(jù)這些計(jì)算結(jié)果,將神經(jīng)元優(yōu)化地分布在內(nèi)存或顯存中。

在在線推理階段,CPU和GPU分別處理存儲(chǔ)在其內(nèi)存中的神經(jīng)元,隨后在GPU上對(duì)這些獨(dú)立計(jì)算的結(jié)果進(jìn)行高效合并。

?PowerInfer整體架構(gòu)圖


總結(jié)與展望


對(duì)于端側(cè)用戶而言,PowerInfer的高效推理框架打開了新的可能性。

首先,它使得個(gè)人電腦用戶能夠在本地運(yùn)行先進(jìn)的大型語言模型,而無需昂貴的專業(yè)硬件。

這不僅促進(jìn)了人工智能應(yīng)用的普及化,也為愛好者、研究人員和小型企業(yè)提供了前所未有的機(jī)會(huì)。

在云端部署方面,PowerInfer同樣存在巨大的潛力。

現(xiàn)有的云端CPU也有強(qiáng)大的AMX計(jì)算單元支持,通過利用CPU、GPU間的異構(gòu)特征,可以樂觀地認(rèn)為PowerInfer能夠使用更少的高端計(jì)算卡,做到更高的服務(wù)吞吐。

論文地址:
https://ipads.se.sjtu.edu.cn/_media/publications/powerinfer-20231219.pdf

小編推薦下載

相關(guān)文章

更多>>

資訊排行

同類軟件下載