精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

AI模型常見壓縮及減量方式

英特爾物聯網 ? 來源:英特爾物聯網 ? 2023-12-16 15:19 ? 次閱讀

作者:許哲豪 博士

英特爾邊緣計算創新大使

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

AI 模型組成元素

回顧一下本專欄三月份文章[1]第 1 小節提及的神經網絡架構,其組成內容主要包括神經元內容(包含數量)、網絡結構(神經元連接拓撲)及每個連結的權重值,如圖 2 所示。簡單的卷積神經網絡 (CNN) 如 LeNet-5,就有約 6 萬個權重,而大型模型 VGG16 則有約 1.38 億個權重,到了現在流行的大型語言模型 GPT-3 已經激增到 1750 億個權重,更不要說像 GPT-4 已有超過一兆個權重。

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

為了讓運行時減少資料(網路結構描述及權重值)在 CPU 和 AI 加速計算單元(如 GPU, NPU 等)間搬移的次數,所以通常會一口氣把所有資料都都載入專用記憶體中,但一般配置的記憶體數量都不會太多,大約 1GB 到 16GB 不等,所以如果沒有經過一些減量或壓縮處理,則很難一口氣全部載入。

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

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

常見壓縮及減量作法

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

2.1 權重值量化 (Quantization)

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

以 FP32 量化為 INT8 為例,一般最簡單的作法就是把所有空間等比對稱分割再映射,不過當遇到權重值分配往單邊靠或集中在某個區間時就很難分別出細部差異。于是就有以最大值與最小值非對稱方式來重新映射,以解決上述問題。

這樣的量化減量的方式最為簡單,但也常遇到模型所有層用同一數值精度后推論精度下降太多,于是開始有人采取合精度,即不同層的權重可能采不同數值精度(如 FP32, FP16, INT8 等)來進行量化。不過這樣的處理方式較為復雜,通常需要一些自動化工具來協助。

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

圖 2 權重值量化示意圖[3]

2.2 模型剪枝 (Pruning)

所謂樹大必有枯枝,模型大了自然有很多連結(權重)是沒有存在必要的或者是刪除后只產生非常輕微的影響。如果要透過人為方式來調整(刪除、合并)數以百萬到千萬的連結勢必不可能,此時就只能透過相關程序(如英特爾 OpenVINO, Nvidia TensorRT, Google TensorFlow Lite 等)使用復雜的數學來協助完成。

經過剪枝后,計算量會明顯下降,但可以減少多少則會根據模型復雜度及訓練的權重值分布狀況會有很大差異,可能從數個 percent 到數十個 percent 不等,甚至運氣好有可能達到減量 90% 以上。

另外由于剪枝后會造成模型結構(拓撲)變成很不完整,無法連續讀取,所以需要另外增加一些描述信息。不過相對權重值占用的儲存空間,這些多出來的部分只不過是九牛一毛,不需要太過在意。

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

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

2.3權重共享 (Weight Share)

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

如圖 4 所示,即是將 16 個權重先聚類成 4 個權重(索引值),再將原本的權重值變成索引號,等要計算時再取回權重值,這樣儲存空間就降到原本的 1/4。

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

圖 4 權重共享壓縮示意圖[3]

2.4知識蒸餾 (Knowledge Distillation)

知識蒸餾基本上不是直接壓縮模型,而是利用一個小模型去學習大模型輸出的結果,間接減少模型的復雜度、權重數量及計算量。大模型就像老師,學富五車,經過巨量資料集的訓練,擁有數百萬甚至千億個權重來幫忙記住各種特征。而小模型就學生,上課時間有限,只能把老師教過的習題熟練于心,但若遇到老師沒教過的,此時若不能舉一反三,順利答題就很難保證了。

如圖 5 所示,訓練學生模型時,將同一筆資料輸入到老師模型和學生模型中,再將老師的輸出變成學生的標準答案,學生模型再以此調整所有權重,使輸出推論結果和老師一樣即可。當給予足夠多量及多樣的樣本訓練后,學生就能結束課程,獨當一面了。

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

圖 5 知識蒸餾示意圖[3]

小結

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

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 英特爾
    +關注

    關注

    60

    文章

    9900

    瀏覽量

    171549
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10829

    瀏覽量

    211193
  • AI
    AI
    +關注

    關注

    87

    文章

    30239

    瀏覽量

    268475
  • 模型
    +關注

    關注

    1

    文章

    3178

    瀏覽量

    48730

原文標題:親愛的,我把 AI 模型縮小了—— 模型減量與壓縮技術簡介 | 開發者實戰

文章出處:【微信號:英特爾物聯網,微信公眾號:英特爾物聯網】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    騰訊 AI Lab 開源世界首款自動化模型壓縮框架PocketFlow

    AI科技評論按:騰訊 AI Lab 機器學習中心今日宣布成功研發出世界上首款自動化深度學習模型壓縮框架—— PocketFlow,并即將在近期發布開源代碼。根據雷鋒網
    的頭像 發表于 09-18 11:51 ?4253次閱讀

    模型壓縮技術,加速AI模型在終端側的應用

    電子發燒友網報道(文/李彎彎)當前,全球眾多科技企業都在積極研究AI模型,然而因為參數規模太大,要想實現AI模型在邊/端側部署,需要用到模型
    的頭像 發表于 04-24 01:26 ?2497次閱讀

    使用cube-AI分析模型時報錯的原因有哪些?

    使用cube-AI分析模型時報錯,該模型是pytorch的cnn轉化成onnx ``` Neural Network Tools for STM32AI v1.7.0 (STM.
    發表于 03-14 07:09

    cubemx ai導入onnx模型壓縮失敗了怎么解決?

    cubemx ai導入onnx模型壓縮失敗。請問我怎么解決
    發表于 03-19 07:58

    STM CUBE AI錯誤導入onnx模型報錯的原因?

    使用cube-AI分析模型時報錯,該模型是pytorch的cnn轉化成onnx ``` Neural Network Tools for STM32AI v1.7.0 (STM.
    發表于 05-27 07:15

    AI模型可以設計電路嗎?

    AI模型
    電子發燒友網官方
    發布于 :2024年01月02日 15:09:29

    AI模型怎么解決芯片過剩?

    AI模型
    電子發燒友網官方
    發布于 :2024年01月02日 15:42:05

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

    任務一:電腦+AI(讓電腦擁有學習能力)目標:安裝Python和TensorFlow。安裝Keras、Numpy、OpenCV。安裝ResNet50人工智慧模組(模型)。 運行測試程序,展現簡單
    發表于 10-30 14:04

    壓縮模型會加速推理嗎?

    你好我使用 STM32CUBE-AI v5.1.2 ApplicationTemplate 將簡單的 CNN 導入到 STM32L462RCT我發現壓縮模型對推理時間沒有影響。aiRun 程序在 8
    發表于 01-29 06:24

    訓練好的ai模型導入cubemx不成功怎么解決?

    訓練好的ai模型導入cubemx不成功咋辦,試了好幾個模型壓縮了也不行,ram占用過大,有無解決方案?
    發表于 08-04 09:16

    邊緣AI模型壓縮技術

    在某個時間點,人們認為大型和復雜的模型表現更好,但現在它幾乎是一個神話。隨著邊緣AI的發展,越來越多的技術將大型復雜模型轉換為可以在邊緣上運行的簡單模型,所有這些技術結合在一起執行
    的頭像 發表于 10-19 14:22 ?1021次閱讀
    邊緣<b class='flag-5'>AI</b>的<b class='flag-5'>模型</b><b class='flag-5'>壓縮</b>技術

    將數據預處理嵌入AI模型常見技巧

    本文將介紹基于 OpenVINO 模型優化器或預處理 API 將數據預處理嵌入 AI 模型常見技巧,幫助讀者在硬件投入不變的情況下,進一步提升端到端的
    的頭像 發表于 12-16 13:55 ?1231次閱讀

    邊緣AI模型壓縮技術

    模型壓縮是在計算能力和內存較低的邊緣設備上部署SOTA(最先進的)深度學習模型的過程,而不會影響模型在準確性、精度、召回率等方面的性能。模型
    的頭像 發表于 05-05 09:54 ?842次閱讀
    邊緣<b class='flag-5'>AI</b>的<b class='flag-5'>模型</b><b class='flag-5'>壓縮</b>技術

    AI模型的知識產權博弈:矛與盾的較量

    模型復制與非法分發:這是最直接的竊取方式。第三方通過復制AI模型,并將其非法分發或銷售,直接侵犯了原始模型開發者的知識產權。這種
    的頭像 發表于 12-10 11:12 ?1279次閱讀

    常見AI模型的比較與選擇指南

    在選擇AI模型時,明確具體需求、了解模型的訓練數據、計算資源要求和成本,并考慮模型的可解釋性和社區支持情況等因素至關重要。以下是對常見
    的頭像 發表于 10-23 15:36 ?499次閱讀