0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

AI模型常見(jiàn)壓縮及減量方式

英特爾物聯(lián)網(wǎng) ? 來(lái)源:英特爾物聯(lián)網(wǎng) ? 2023-12-16 15:19 ? 次閱讀

作者:許哲豪 博士

英特爾邊緣計(jì)算創(chuàng)新大使

1989年科幻電影《親愛(ài)的,我把孩子縮小了》,2015年《蟻人》,2017年《縮小人生》,以及我們從小看到大的多啦A夢(mèng) “縮小燈”、“縮小隧道”,都不約而同的提到一個(gè)概念,就是可以透過(guò)一種神奇的機(jī)器,就能把人的體積大幅縮小但生理機(jī)能完全不減。這里姑且不論是否符合物理定律,但如果真的能實(shí)現(xiàn),就會(huì)像《縮小人生》中所提到的,可大幅減少地球資源的浪費(fèi),大幅改善人類(lèi)的生存環(huán)境。雖然以上提及的技術(shù)可能我們這輩子都難以看到實(shí)現(xiàn)的一天,但把超巨大的 AI 模型縮小但仍保持推論精度不變,還是有很多方法可以達(dá)到的。接下來(lái)我們就來(lái)幫大家簡(jiǎn)單介紹一下幾種常見(jiàn)技術(shù)。

AI 模型組成元素

回顧一下本專(zhuān)欄三月份文章[1]第 1 小節(jié)提及的神經(jīng)網(wǎng)絡(luò)架構(gòu),其組成內(nèi)容主要包括神經(jīng)元內(nèi)容(包含數(shù)量)、網(wǎng)絡(luò)結(jié)構(gòu)(神經(jīng)元連接拓?fù)洌┘懊總€(gè)連結(jié)的權(quán)重值,如圖 2 所示。簡(jiǎn)單的卷積神經(jīng)網(wǎng)絡(luò) (CNN) 如 LeNet-5,就有約 6 萬(wàn)個(gè)權(quán)重,而大型模型 VGG16 則有約 1.38 億個(gè)權(quán)重,到了現(xiàn)在流行的大型語(yǔ)言模型 GPT-3 已經(jīng)激增到 1750 億個(gè)權(quán)重,更不要說(shuō)像 GPT-4 已有超過(guò)一兆個(gè)權(quán)重。

通常在訓(xùn)練模型時(shí)為了精度,權(quán)重值大多會(huì)使用32 位元浮點(diǎn)數(shù) (FP32) 表示法[2],這就代表了每個(gè)權(quán)重占用了 4 個(gè) Byte (32bit) 的儲(chǔ)存 (硬碟) 和計(jì)算(隨機(jī)記憶體)空間。這還不包括在推論計(jì)算過(guò)程中額外所需的臨時(shí)隨機(jī)記憶體需求。

為了讓運(yùn)行時(shí)減少資料(網(wǎng)路結(jié)構(gòu)描述及權(quán)重值)在 CPU 和 AI 加速計(jì)算單元(如 GPU, NPU 等)間搬移的次數(shù),所以通常會(huì)一口氣把所有資料都都載入專(zhuān)用記憶體中,但一般配置的記憶體數(shù)量都不會(huì)太多,大約 1GB 到 16GB 不等,所以如果沒(méi)有經(jīng)過(guò)一些減量或壓縮處理,則很難一口氣全部載入。

057b0f84-9b42-11ee-8b88-92fbcf53809c.png

圖 1 AI 模型主要元素示意圖

常見(jiàn)壓縮及減量作法

如同前面提到的,我們希望將一個(gè)強(qiáng)大復(fù)雜的 AI 模型減量、壓縮后,得到一個(gè)迷你、簡(jiǎn)單的模型,但仍要能維持原有的推論精度或者只有些許(0% 到指定 %)的下降,就像我們平??吹降?JPG 影像、MP4 影片,雖然采大幅度破壞性壓縮,但人眼是很難分辨其品質(zhì)差異的。這樣可以得到幾項(xiàng)好處,包括大幅減少儲(chǔ)存空間和計(jì)算用記憶體推論速度加快,耗能降低,同時(shí)更有機(jī)會(huì)使用較低計(jì)算能力的硬體(如 GPU 變成 CPU)來(lái)完成推論工作。以下就把常見(jiàn)的四種方式簡(jiǎn)單介紹給大家。

2.1 權(quán)重值量化 (Quantization)

通常在訓(xùn)練模型時(shí),為求權(quán)重有較寬廣的數(shù)值動(dòng)態(tài)范圍,所以大部分會(huì)采用 32 位元浮點(diǎn)數(shù) ( FP32,符號(hào) 1 bit ,指數(shù) 8 bit,小數(shù) 23 bit,共 4 Byte,數(shù)值表示范圍 ±1.18e-38 ~±3.40e38 )[2]。而經(jīng)許多資料科學(xué)家實(shí)驗(yàn)后,發(fā)現(xiàn)在推論時(shí)將數(shù)值精度降至 16 位元浮點(diǎn)數(shù)(FP16, 2 Byte, -32,768 ~ +32767),甚至 8 位元整數(shù) (INT8, 1 Byte, -128 ~ +127)、8 位元浮點(diǎn)數(shù)(FP8, e5m2, e4m3, 1 Byte) 在推論時(shí)其精度下降幅度可控制在一定程度內(nèi),同時(shí)可讓儲(chǔ)存空間和記憶體使用量減少 1/2 到 3/4,若加上有支持 SIMD 或平行運(yùn)算指令集[1]還可讓運(yùn)算量提升 1.x ~ 3.x 倍,一舉多得。

以 FP32 量化為 INT8 為例,一般最簡(jiǎn)單的作法就是把所有空間等比對(duì)稱(chēng)分割再映射,不過(guò)當(dāng)遇到權(quán)重值分配往單邊靠或集中在某個(gè)區(qū)間時(shí)就很難分別出細(xì)部差異。于是就有以最大值與最小值非對(duì)稱(chēng)方式來(lái)重新映射,以解決上述問(wèn)題。

這樣的量化減量的方式最為簡(jiǎn)單,但也常遇到模型所有層用同一數(shù)值精度后推論精度下降太多,于是開(kāi)始有人采取合精度,即不同層的權(quán)重可能采不同數(shù)值精度(如 FP32, FP16, INT8 等)來(lái)進(jìn)行量化。不過(guò)這樣的處理方式較為復(fù)雜,通常需要一些自動(dòng)化工具來(lái)協(xié)助。

0592acde-9b42-11ee-8b88-92fbcf53809c.png

圖 2 權(quán)重值量化示意圖[3]

2.2 模型剪枝 (Pruning)

所謂樹(shù)大必有枯枝,模型大了自然有很多連結(jié)(權(quán)重)是沒(méi)有存在必要的或者是刪除后只產(chǎn)生非常輕微的影響。如果要透過(guò)人為方式來(lái)調(diào)整(刪除、合并)數(shù)以百萬(wàn)到千萬(wàn)的連結(jié)勢(shì)必不可能,此時(shí)就只能透過(guò)相關(guān)程序(如英特爾 OpenVINO, Nvidia TensorRT, Google TensorFlow Lite 等)使用復(fù)雜的數(shù)學(xué)來(lái)協(xié)助完成。

經(jīng)過(guò)剪枝后,計(jì)算量會(huì)明顯下降,但可以減少多少則會(huì)根據(jù)模型復(fù)雜度及訓(xùn)練的權(quán)重值分布狀況會(huì)有很大差異,可能從數(shù)個(gè) percent 到數(shù)十個(gè) percent 不等,甚至運(yùn)氣好有可能達(dá)到減量 90% 以上。

另外由于剪枝后會(huì)造成模型結(jié)構(gòu)(拓?fù)洌┳兂珊懿煌暾?,無(wú)法連續(xù)讀取,所以需要另外增加一些描述信息。不過(guò)相對(duì)權(quán)重值占用的儲(chǔ)存空間,這些多出來(lái)的部分只不過(guò)是九牛一毛,不需要太過(guò)在意。

059dfea4-9b42-11ee-8b88-92fbcf53809c.png

圖 3模型剪枝示意圖[3]

2.3權(quán)重共享 (Weight Share)

由于權(quán)重值大多是由浮點(diǎn)數(shù)表示,所以若能將近似值進(jìn)行群聚(合并),用較少的數(shù)量來(lái)表達(dá),再使用查表法來(lái)映射,如此也是一個(gè)不錯(cuò)的作法。但缺點(diǎn)是這樣的作法會(huì)增加一些對(duì)照表,增加推論時(shí)額外的查表工作,且由于和原數(shù)值有些微差異,因此會(huì)損失一些推論精度。

如圖 4 所示,即是將 16 個(gè)權(quán)重先聚類(lèi)成 4 個(gè)權(quán)重(索引值),再將原本的權(quán)重值變成索引號(hào),等要計(jì)算時(shí)再取回權(quán)重值,這樣儲(chǔ)存空間就降到原本的 1/4。

05c37a4e-9b42-11ee-8b88-92fbcf53809c.png

圖 4 權(quán)重共享壓縮示意圖[3]

2.4知識(shí)蒸餾 (Knowledge Distillation)

知識(shí)蒸餾基本上不是直接壓縮模型,而是利用一個(gè)小模型去學(xué)習(xí)大模型輸出的結(jié)果,間接減少模型的復(fù)雜度、權(quán)重?cái)?shù)量及計(jì)算量。大模型就像老師,學(xué)富五車(chē),經(jīng)過(guò)巨量資料集的訓(xùn)練,擁有數(shù)百萬(wàn)甚至千億個(gè)權(quán)重來(lái)幫忙記住各種特征。而小模型就學(xué)生,上課時(shí)間有限,只能把老師教過(guò)的習(xí)題熟練于心,但若遇到老師沒(méi)教過(guò)的,此時(shí)若不能舉一反三,順利答題就很難保證了。

如圖 5 所示,訓(xùn)練學(xué)生模型時(shí),將同一筆資料輸入到老師模型和學(xué)生模型中,再將老師的輸出變成學(xué)生的標(biāo)準(zhǔn)答案,學(xué)生模型再以此調(diào)整所有權(quán)重,使輸出推論結(jié)果和老師一樣即可。當(dāng)給予足夠多量及多樣的樣本訓(xùn)練后,學(xué)生就能結(jié)束課程,獨(dú)當(dāng)一面了。

05e480a4-9b42-11ee-8b88-92fbcf53809c.png

圖 5 知識(shí)蒸餾示意圖[3]

小結(jié)

以上只是簡(jiǎn)單介紹了部分減量及壓縮模型的方式,還不包含模型減量、壓縮后造成的精度下降如何調(diào)整。這些工作相當(dāng)復(fù)雜,只能交給專(zhuān)業(yè)的工具來(lái)辦,其中英特爾OpenVINO Toolkit就有提供許多模型優(yōu)化(Model Optimization)[4] 及神經(jīng)網(wǎng)絡(luò)壓縮工具NNCF (Neural Network Compression Framework)[5],有興趣的朋友可以自行了解一下,下次有機(jī)會(huì)再為大家做更進(jìn)一步介紹。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 英特爾
    +關(guān)注

    關(guān)注

    60

    文章

    9828

    瀏覽量

    171159
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10784

    瀏覽量

    210551
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    29466

    瀏覽量

    267803
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3083

    瀏覽量

    48599

原文標(biāo)題:親愛(ài)的,我把 AI 模型縮小了—— 模型減量與壓縮技術(shù)簡(jiǎn)介 | 開(kāi)發(fā)者實(shí)戰(zhàn)

文章出處:【微信號(hào):英特爾物聯(lián)網(wǎng),微信公眾號(hào):英特爾物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    騰訊 AI Lab 開(kāi)源世界首款自動(dòng)化模型壓縮框架PocketFlow

    AI科技評(píng)論按:騰訊 AI Lab 機(jī)器學(xué)習(xí)中心今日宣布成功研發(fā)出世界上首款自動(dòng)化深度學(xué)習(xí)模型壓縮框架—— PocketFlow,并即將在近期發(fā)布開(kāi)源代碼。根據(jù)雷鋒網(wǎng)
    的頭像 發(fā)表于 09-18 11:51 ?4223次閱讀

    模型壓縮技術(shù),加速AI模型在終端側(cè)的應(yīng)用

    電子發(fā)燒友網(wǎng)報(bào)道(文/李彎彎)當(dāng)前,全球眾多科技企業(yè)都在積極研究AI模型,然而因?yàn)閰?shù)規(guī)模太大,要想實(shí)現(xiàn)AI模型在邊/端側(cè)部署,需要用到模型
    的頭像 發(fā)表于 04-24 01:26 ?2437次閱讀

    使用cube-AI分析模型時(shí)報(bào)錯(cuò)的原因有哪些?

    使用cube-AI分析模型時(shí)報(bào)錯(cuò),該模型是pytorch的cnn轉(zhuǎn)化成onnx ``` Neural Network Tools for STM32AI v1.7.0 (STM.
    發(fā)表于 03-14 07:09

    cubemx ai導(dǎo)入onnx模型壓縮失敗了怎么解決?

    cubemx ai導(dǎo)入onnx模型壓縮失敗。請(qǐng)問(wèn)我怎么解決
    發(fā)表于 03-19 07:58

    STM CUBE AI錯(cuò)誤導(dǎo)入onnx模型報(bào)錯(cuò)的原因?

    使用cube-AI分析模型時(shí)報(bào)錯(cuò),該模型是pytorch的cnn轉(zhuǎn)化成onnx ``` Neural Network Tools for STM32AI v1.7.0 (STM.
    發(fā)表于 05-27 07:15

    AI模型可以設(shè)計(jì)電路嗎?

    AI模型
    電子發(fā)燒友網(wǎng)官方
    發(fā)布于 :2024年01月02日 15:09:29

    AI模型怎么解決芯片過(guò)剩?

    AI模型
    電子發(fā)燒友網(wǎng)官方
    發(fā)布于 :2024年01月02日 15:42:05

    AI學(xué)習(xí)】AI概論:(Part-A)與AI智慧交流

    任務(wù)一:電腦+AI(讓電腦擁有學(xué)習(xí)能力)目標(biāo):安裝Python和TensorFlow。安裝Keras、Numpy、OpenCV。安裝ResNet50人工智慧模組(模型)。 運(yùn)行測(cè)試程序,展現(xiàn)簡(jiǎn)單
    發(fā)表于 10-30 14:04

    壓縮模型會(huì)加速推理嗎?

    你好我使用 STM32CUBE-AI v5.1.2 ApplicationTemplate 將簡(jiǎn)單的 CNN 導(dǎo)入到 STM32L462RCT我發(fā)現(xiàn)壓縮模型對(duì)推理時(shí)間沒(méi)有影響。aiRun 程序在 8
    發(fā)表于 01-29 06:24

    訓(xùn)練好的ai模型導(dǎo)入cubemx不成功怎么解決?

    訓(xùn)練好的ai模型導(dǎo)入cubemx不成功咋辦,試了好幾個(gè)模型壓縮了也不行,ram占用過(guò)大,有無(wú)解決方案?
    發(fā)表于 08-04 09:16

    邊緣AI模型壓縮技術(shù)

    在某個(gè)時(shí)間點(diǎn),人們認(rèn)為大型和復(fù)雜的模型表現(xiàn)更好,但現(xiàn)在它幾乎是一個(gè)神話。隨著邊緣AI的發(fā)展,越來(lái)越多的技術(shù)將大型復(fù)雜模型轉(zhuǎn)換為可以在邊緣上運(yùn)行的簡(jiǎn)單模型,所有這些技術(shù)結(jié)合在一起執(zhí)行
    的頭像 發(fā)表于 10-19 14:22 ?1004次閱讀
    邊緣<b class='flag-5'>AI</b>的<b class='flag-5'>模型</b><b class='flag-5'>壓縮</b>技術(shù)

    將數(shù)據(jù)預(yù)處理嵌入AI模型常見(jiàn)技巧

    本文將介紹基于 OpenVINO 模型優(yōu)化器或預(yù)處理 API 將數(shù)據(jù)預(yù)處理嵌入 AI 模型常見(jiàn)技巧,幫助讀者在硬件投入不變的情況下,進(jìn)一步提升端到端的
    的頭像 發(fā)表于 12-16 13:55 ?1170次閱讀

    邊緣AI模型壓縮技術(shù)

    模型壓縮是在計(jì)算能力和內(nèi)存較低的邊緣設(shè)備上部署SOTA(最先進(jìn)的)深度學(xué)習(xí)模型的過(guò)程,而不會(huì)影響模型在準(zhǔn)確性、精度、召回率等方面的性能。模型
    的頭像 發(fā)表于 05-05 09:54 ?798次閱讀
    邊緣<b class='flag-5'>AI</b>的<b class='flag-5'>模型</b><b class='flag-5'>壓縮</b>技術(shù)

    AI模型的知識(shí)產(chǎn)權(quán)博弈:矛與盾的較量

    模型復(fù)制與非法分發(fā):這是最直接的竊取方式。第三方通過(guò)復(fù)制AI模型,并將其非法分發(fā)或銷(xiāo)售,直接侵犯了原始模型開(kāi)發(fā)者的知識(shí)產(chǎn)權(quán)。這種
    的頭像 發(fā)表于 12-10 11:12 ?1201次閱讀

    常見(jiàn)AI模型的比較與選擇指南

    在選擇AI模型時(shí),明確具體需求、了解模型的訓(xùn)練數(shù)據(jù)、計(jì)算資源要求和成本,并考慮模型的可解釋性和社區(qū)支持情況等因素至關(guān)重要。以下是對(duì)常見(jiàn)
    的頭像 發(fā)表于 10-23 15:36 ?233次閱讀