電子發(fā)燒友網(wǎng)報道(文/李彎彎)當(dāng)前,全球眾多科技企業(yè)都在積極研究AI大模型,然而因為參數(shù)規(guī)模太大,要想實現(xiàn)AI大模型在邊/端側(cè)部署,需要用到模型壓縮技術(shù)。當(dāng)前谷歌、微軟、騰訊等廠商在該領(lǐng)域均有布局,加速AI技術(shù)與智能終端的融合。
為什么需要模型壓縮技術(shù)
模型壓縮是一種縮小訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)的技術(shù),目的是保證模型預(yù)測效果的前提下,盡可能地降低模型的大小。模型壓縮之后,所需要的計算資源變小,有利于在移動端部署。
有一個很形象的例子,深度學(xué)習(xí)變臉業(yè)務(wù),假設(shè)在模型優(yōu)化前,原始模型處理每個視頻要30秒,那么一張GPU卡一分鐘只能處理2個視頻。假設(shè)APP的使用峰值是1000人同時使用,那么這家公司至少要有500張GPU卡才能滿足需求。
如果模型壓縮技術(shù)能讓模型變小許多,使得每個視頻處理只需要10秒,那么這個客戶可能只需要150張卡就能滿足業(yè)務(wù)需求。每年的成本可以從原來的3000萬控制在1000萬左右,省下的2000萬,就是模型壓縮技術(shù)的價值。
量化、網(wǎng)絡(luò)剪枝和知識蒸餾
模型壓縮的方法主要有量化、網(wǎng)絡(luò)剪枝、知識蒸餾。量化的意思是,將浮點計算轉(zhuǎn)成低比特定點計算,模型由大量的浮點型權(quán)重組成,如果能用float32替代原有的float64表示,模型就近乎減小一倍,量化也是最容易實現(xiàn)的一種壓縮方式。
傳統(tǒng)意義上的量化即為將連續(xù)信號轉(zhuǎn)換為離散信號,在神經(jīng)網(wǎng)絡(luò)的量化中,即將浮點數(shù)float32→int8,int4,int2等,量化其本質(zhì)就是低精度,常規(guī)精度一般使用FP32存儲模型權(quán)重,低精度則表示FP16,或INT8等數(shù)值格式,不過目前低精度往往指的是INT8。
模型壓縮,使得原本只能在云端運行大模型,也能夠部署在終端設(shè)備上。比如,近年來很流行的基礎(chǔ)模型 Stable Diffusion ,它是一個非常出色的從文本到圖像的生成式 AI 模型,能夠基于任何文本輸入,在數(shù)十秒內(nèi)創(chuàng)作出逼真圖像。Stable Diffusion 的參數(shù)超過 10 億,此前主要限于在云端運行。
高通 AI Research 利用高通 AI 軟件棧(Qualcomm AI Stack)執(zhí)行全棧 AI 優(yōu)化,首次實現(xiàn)了在Android智能手機(jī)上部署 Stable Diffusion,其中就用到了模型壓縮技術(shù)量化的方法。
據(jù)介紹,高通的全棧 AI 研究指跨應(yīng)用、神經(jīng)網(wǎng)絡(luò)模型、算法、軟件和硬件進(jìn)行優(yōu)化。針對 Stable Diffusion,他們從 Hugging Face 的 FP32 1-5 版本開源模型入手,通過量化、編譯和硬件加速進(jìn)行優(yōu)化,使其能在搭載第二代驍龍 8 移動平臺的手機(jī)上運行。
為了把模型從 FP32 壓縮為 INT8,高通使用了其 AI 模型增效工具包 (AIMET) 的訓(xùn)練后量化。自適應(yīng)舍入 (AdaRound) 等先進(jìn)的高通 AIMET 量化技術(shù)能夠在更低精度水平保持模型準(zhǔn)確性,無需進(jìn)行重新訓(xùn)練。
這些技術(shù)能夠應(yīng)用于構(gòu)成 Stable Diffusion 的所有組件模型,即基于 Transformer 的文本編碼器、VAE 解碼器和 UNet。這對于讓模型適合于在終端上運行至關(guān)重要。
網(wǎng)絡(luò)剪枝,是指除神經(jīng)網(wǎng)絡(luò)中冗余的通道、神經(jīng)元節(jié)點等。深度學(xué)習(xí)模型可以看作是一個復(fù)雜樹狀結(jié)構(gòu),如果能減去一些對結(jié)果沒什么影響的旁枝,就可以實現(xiàn)模型的減小。
模型的構(gòu)成是由許多浮點型的神經(jīng)元相連接,每一層根據(jù)神經(jīng)元的權(quán)重將信息向下傳遞。但是有一些神經(jīng)元的權(quán)重非常小,這類神經(jīng)元對整個模型加載的信息影響微乎其微。如果可以把這些權(quán)重較小的神經(jīng)元刪減掉,既減少了模型大小,也不會對模型的效果帶來大的影響。
每一層把數(shù)值小的神經(jīng)元去掉,但是剪枝粒度維持到多大也是有講究的,比如可以把每層最小的5個減掉,也可能只剪3個,或者每層有每層不同的策略。剪多了,模型精度影響會比較大,剪少了沒有效果。所以這里面需要大量的嘗試和迭代。
知識蒸餾,是指將大模型作為教師模型,用其輸出訓(xùn)練性能接近、結(jié)構(gòu)更簡的學(xué)生模型。一般而言,大模型往往是單個復(fù)雜網(wǎng)絡(luò)或者是若干網(wǎng)絡(luò)的集合,擁有良好的性能和泛化能力,而小模型因為網(wǎng)絡(luò)規(guī)模較小,表達(dá)能力有限。
因此,可以利用大模型學(xué)習(xí)到的知識去指導(dǎo)小模型訓(xùn)練,使得小模型具有與大模型相當(dāng)?shù)男阅埽菂?shù)數(shù)量大幅降低,從而實現(xiàn)模型壓縮。
小結(jié)
當(dāng)下,AI大模型發(fā)展如火如荼,然而因為參數(shù)規(guī)模太大,不僅僅是訓(xùn)練,大模型的部署推理,也需要倚賴豐富的計算資源。如果想要大模型能夠在邊/終端側(cè)實現(xiàn)部署,這其中就需要用到模型壓縮技術(shù),如高通使用量化的方法,讓Stable Diffusion能夠在手機(jī)上運行。
-
AI
+關(guān)注
關(guān)注
87文章
30998瀏覽量
269329
發(fā)布評論請先 登錄
相關(guān)推薦
評論