二維碼
        企資網

        掃一掃關注

        當前位置: 首頁 » 企資快報 » 生活理財 » 正文

        知識蒸餾_輕量化模型架構_剪枝…幾種深度學習模

        放大字體  縮小字體 發布日期:2023-03-20 04:06:07    作者:江圣焓    瀏覽次數:72
        導讀

        本文分享自華為云社區《深度學習模型壓縮方法綜述》,作者:嵌入式視覺 。原文詳情:https://bbs.huaweicloud.com/blogs/393867?utm_source=jinritoutiao&utm_medium=bbs-ex&utm_campaign=other&utm_content=content

        本文分享自華為云社區《深度學習模型壓縮方法綜述》,作者:嵌入式視覺 。

        原文詳情:https://bbs.huaweicloud.com/blogs/393867?utm_source=jinritoutiao&utm_medium=bbs-ex&utm_campaign=other&utm_content=content

        一、模型壓縮技術概述

        因為嵌入式設備的算力和內存有限,因此深度學習模型需要經過模型壓縮后,方才能部署到嵌入式設備上。

        在一定程度上,網絡越深,參數越多,模型也會越復雜,但其最終效果也越好。而模型壓縮算法是旨在將一個龐大而復雜的預訓練模型轉化為一個精簡的小模型。本文介紹了卷積神經網絡常見的幾種壓縮方法。

        按照壓縮過程對網絡結構的破壞程度,《解析卷積神經網絡》一書中將模型壓縮技術分為“前端壓縮”和“后端壓縮”兩部分:

      1. 前端壓縮,是指在不改變原網絡結構的壓縮技術,主要包括知識蒸餾、輕量級網絡(緊湊的模型結構設計)以及濾波器(filter)層面的剪枝(結構化剪枝)等;
      2. 后端壓縮,是指包括低秩近似、未加限制的剪枝(非結構化剪枝/稀疏)、參數量化以及二值網絡等,目標在于盡可能減少模型大小,會對原始網絡結構造成極大程度的改造。

        總結:前端壓縮幾乎不改變原有網絡結構(僅僅只是在原模型基礎上減少了網絡的層數或者濾波器個數),后端壓縮對網絡結構有不可逆的大幅度改變,造成原有深度學習庫、甚至硬件設備不兼容改變之后的網絡。其維護成本很高。

        1.1,模型壓縮技術分類

        工業界主流的模型壓縮方法有:知識蒸餾(Knowledge Distillation,KD)輕量化模型架構(也叫緊湊的模型設計)、剪枝(Pruning)、量化(Quantization)。各個模型壓縮方法總結如下:

        二、知識蒸餾

        一個復雜模型可由多個簡單模型或者強約束條件訓練得到。復雜模型特點是性能好,但其參數量大,計算效率低。小模型特點是計算效率高,但是其性能較差。知識蒸餾是讓小模型去擬合大模型,從而讓小模型學到與大模型相似的函數映射。使其保持其快速的計算速度前提下,同時擁有復雜模型的性能,達到模型壓縮的目的。模型蒸餾的關鍵在于監督特征的設計,例如使用 Soft Target(軟標簽 KD) 所提供的類間相似性作為依據,或使用大模型的中間層特征圖或 attention map 作為暗示,對小網絡進行訓練。整體的框架圖如圖下所示。

        三、輕量化模型架構

        關于如何手動設計輕量級網絡的研究,目前還沒有廣泛通用的準則,只有一些指導思想,和針對不同芯片平臺(不同芯片架構)的一些設計總結,建議大家從經典論文中吸取指導思想和建議,然后自己實際做各個硬件平臺的部署和模型性能測試。

        3.1,如何設計高效CNN架構一些結論
        1. 分析模型的推理性能得結合具體的推理平臺(常見如:英偉達 GPU、移動端 ARM CPU、端側 NPU 芯片等);目前已知影響 CNN 模型推理性能的因素包括: 算子計算量 FLOPs(參數量 Params)、卷積 block 的內存訪問代價(訪存帶寬)、網絡并行度等。但相同硬件平臺、相同網絡架構條件下, FLOPs 加速比與推理時間加速比成正比。
        2. 建議對于輕量級網絡設計應該考慮直接 metric(例如速度 speed),而不是間接 metric(例如 FLOPs)。
        3. FLOPs 低不等于 latency 低,尤其是在有加速功能的硬體 (GPU、DSP 與 TPU)上不成立,得結合具硬件架構具體分析。
        4. 不同網絡架構的 CNN 模型,即使是 FLOPs 相同,但其 MAC 也可能差異巨大。
        5. Depthwise 卷積操作對于流水線型 CPU、ARM 等移動設備更友好,對于并行計算能力強的 GPU 和具有加速功能的硬件(專用硬件設計-NPU 芯片)上比較沒有效率。Depthwise 卷積算子實際上是使用了大量的低 FLOPs、高數據讀寫量的操作。因為這些具有高數據讀寫量的操作,再加上多數時候 GPU 芯片算力的瓶頸在于訪存帶寬,使得模型把大量的時間浪費在了從顯存中讀寫數據上,從而導致 GPU 的算力沒有得到“充分利用”。結論來源知乎文章-FLOPs與模型推理速度和論文 G-GhostNet。
        一些建議
        1. 在大多數的硬件上,channel 數為 16 的倍數比較有利高效計算。如海思 351x 系列芯片,當輸入通道為 4 倍數和輸出通道數為 16 倍數時,時間加速比會近似等于 FLOPs 加速比,有利于提供 NNIE 硬件計算利用率。(來源海思 351X 芯片文檔和 MobileDets 論文)
        2. 低 channel 數的情況下 (如網路的前幾層),在有加速功能的硬件使用普通 convolution 通常會比 separable convolution 有效率。(來源 MobileDets 論文)
        3. shufflenetv2 論文 提出的四個高效網絡設計的實用指導思想: G1同樣大小的通道數可以最小化 MAC、G2-分組數太多的卷積會增加 MAC、G3-網絡碎片化會降低并行度、G4-逐元素的操作不可忽視。
        4. GPU 芯片上3×3 卷積非常快,其計算密度(理論運算量除以所用時間)可達1×1 和5×5 卷積的四倍。(來源 RepVGG 論文)
        5. 從解決梯度信息冗余問題入手,提高模型推理效率。比如 CSPNet 網絡。
        6. 從解決 DenseNet 的密集連接帶來的高內存訪問成本和能耗問題入手,如 VoVNet 網絡,其由 OSA(One-Shot Aggregation,一次聚合)模塊組成。
        3.2,輕量級模型部署總結

        在閱讀和理解經典的輕量級網絡 mobilenet 系列、MobileDets、shufflenet 系列、cspnet、vovnet、repvgg 等論文的基礎上,做了以下總結:

        1. 低算力設備-手機移動端 cpu 硬件,考慮 mobilenetv1(深度可分離卷機架構-低 FLOPs)、低 FLOPs 和 低MAC的shuffletnetv2(channel_shuffle 算子在推理框架上可能不支持)
        2. 專用 asic 硬件設備-npu 芯片(地平線 x3/x4 等、海思 3519、安霸cv22 等),分類、目標檢測問題考慮 cspnet 網絡(減少重復梯度信息)、repvgg2(即 RepOptimizer: vgg 型直連架構、部署簡單)
        3. 英偉達 gpu 硬件-t4 芯片,考慮 repvgg 網絡(類 vgg 卷積架構-高并行度有利于發揮 gpu 算力、單路架構省顯存/內存,問題: INT8 PTQ 掉點嚴重)

        MobileNet block (深度可分離卷積 block, depthwise separable convolution block)在有加速功能的硬件(專用硬件設計-NPU 芯片)上比較沒有效率。

        這個結論在 CSPNet 和 MobileDets 論文中都有提到。

        除非芯片廠商做了定制優化來提高深度可分離卷積 block 的計算效率,比如地平線機器人 x3 芯片對深度可分離卷積 block 做了定制優化。

        下表是 MobileNetv2 和 ResNet50 在一些常見 NPU 芯片平臺上做的性能測試結果。

        以上,均是看了輕量級網絡論文總結出來的一些不同硬件平臺部署輕量級模型的經驗,實際結果還需要自己手動運行測試。

        四、模型剪枝

        深度學習模型中一般存在著大量冗余的參數,將權重矩陣中相對“不重要”的權值剔除(即置為 0),可達到降低計算資源消耗和提高實時性的效果,而對應的技術則被稱為模型剪枝。

        圖片來源論文Han et al. Learning both Weights and Connections for Efficient Neural Networks, NIPS 2015

        剪枝算法步驟:

        1. 正常訓練模型;
        2. 模型剪枝;
        3. 重新訓練模型

        以上三個步驟反復迭代進行,直到模型精度達到目標,則停止訓練。

        模型剪枝算法根據粒度的不同,可以粗分為4種粒度:

        1. 細粒度剪枝(fine-grained):對連接或者神經元進行剪枝,它是粒度最小的剪枝。
        2. 向量剪枝(vector-level):它相對于細粒度剪枝粒度更大,屬于對卷積核內部(intra-kernel)的剪枝。
        3. 核剪枝(kernel-level):去除某個卷積核,它將丟棄對輸入通道中對應計算通道的響應。
        4. 濾波器剪枝(Filter-level):對整個卷積核組進行剪枝,會造成推理過程中輸出特征通道數的改變。
        五、模型量化

        模型量化是指將神經網絡的浮點算法轉換為定點。量化有一些相似的術語,低精度(Low precision)可能是常見的。

      3. 低精度模型表示模型權重數值格式為 FP16(半精度浮點)或者 INT8(8位的定點整數),但是目前低精度往往就指代 INT8。
      4. 常規精度模型則一般表示模型權重數值格式為 FP32(32位浮點,單精度)。
      5. 混合精度(Mixed precision)則在模型中同時使用 FP32 和 FP16 的權重數值格式。 FP16 減少了一半的內存大小,但有些參數或操作符必須采用 FP32 格式才能保持準確度。

        模型量化過程可以分為兩部分:將模型從 FP32 轉換為 INT8(即量化算術過程),以及使用 INT8 進行推理。

        5.1,模型量化的方案

        在實踐中將浮點模型轉為量化模型的方法有以下三種方法:

        1. data free:不使用校準集,傳統的方法直接將浮點參數轉化成量化數,使用上非常簡單,但是一般會帶來很大的精度損失,但是高通最新的論文 DFQ 不使用校準集也得到了很高的精度。
        2. calibration:基于校準集方案,通過輸入少量真實數據進行統計分析。很多芯片廠商都提供這樣的功能,如 tensorRT、高通、海思、地平線、寒武紀
        3. finetune:基于訓練 finetune 的方案,將量化誤差在訓練時仿真建模,調整權重使其更適合量化。好處是能帶來更大的精度提升,缺點是要修改模型訓練代碼,開發周期較長。

        按照量化階段的不同,量化方法分為以下兩種:

      6. Post-training quantization PTQ(訓練后量化、離線量化);
      7. Quantization-aware training QAT(訓練時量化,偽量化,在線量化)。5.2,量化的分類

        目前已知的加快推理速度概率較大的量化方法主要有:

        1. 二值化,其可以用簡單的位運算來同時計算大量的數。對比從 nvdia gpu 到 x86 平臺,1bit 計算分別有 5 到128倍的理論性能提升。且其只會引入一個額外的量化操作,該操作可以享受到 SIMD(單指令多數據流)的加速收益。
        2. 線性量化(最常見),又可細分為非對稱,對稱和 ristretto 幾種。在 nvdia gpu,x86、arm 和 部分 AI 芯片平臺上,均支持 8bit 的計算,效率提升從 1 倍到 16 倍不等,其中 tensor core 甚至支持 4bit計算,這也是非常有潛力的方向。線性量化引入的額外量化/反量化計算都是標準的向量操作,因此也可以使用 SIMD 進行加速,帶來的額外計算耗時不大。
        3. 對數量化,一種比較特殊的量化方法。兩個同底的冪指數進行相乘,那么等價于其指數相加,降低了計算強度。同時加法也被轉變為索引計算。目前 nvdia gpu,x86、arm 三大平臺上沒有實現對數量化的加速庫,但是目前已知海思 351X 系列芯片上使用了對數量化。
        六、壓縮方法總結
        1. 一般情況下,參數剪枝,特別是非結構化剪枝,能大大壓縮模型大小,且不容易丟失分類精度。對于需要穩定的模型分類的應用,非結構化剪枝成為首要選擇。
        2. 如果需要一次性端對端訓練得到壓縮與加速后模型,可以利用基于緊性濾波設計的深度神經網絡壓縮與加速方法。
        3. 影響神經網絡推理速度主要有 4 個因素:FLOPs、MAC、計算并行度、硬件平臺架構與特性(算力、GPU內存帶寬)。
        參考資料
        1. 深度學習模型壓縮與加速
        2. Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding

        關注#華為云開發者聯盟#,第一時間了解華為云新鮮技術~

      8.  
        (文/江圣焓)
        打賞
        免責聲明
        本文為江圣焓推薦作品?作者: 江圣焓。歡迎轉載,轉載請注明原文出處:http://m.sneakeraddict.net/qzkb/show-112445.html 。本文僅代表作者個人觀點,本站未對其內容進行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內容,一經發現,立即刪除,作者需自行承擔相應責任。涉及到版權或其他問題,請及時聯系我們郵件:weilaitui@qq.com。
         

        Copyright ? 2016 - 2023 - 企資網 48903.COM All Rights Reserved 粵公網安備 44030702000589號

        粵ICP備16078936號

        微信

        關注
        微信

        微信二維碼

        WAP二維碼

        客服

        聯系
        客服

        聯系客服:

        在線QQ: 303377504

        客服電話: 020-82301567

        E_mail郵箱: weilaitui@qq.com

        微信公眾號: weishitui

        客服001 客服002 客服003

        工作時間:

        周一至周五: 09:00 - 18:00

        反饋

        用戶
        反饋

        日本爆乳j罩杯无码视频| 亚洲国产日韩欧美在线a乱码日本中文字幕高清 | 日韩少妇无码一区二区三区 | 中文字幕亚洲欧美专区| 制服在线无码专区| 18禁网站免费无遮挡无码中文| 中文字幕乱妇无码AV在线| 在线观看免费无码专区| 亚洲AV永久无码精品一区二区国产| 亚洲中文字幕视频国产| 亚洲AV无码一区二区三区在线观看| 中文字幕精品无码一区二区| 日韩av片无码一区二区三区不卡 | 7777久久亚洲中文字幕| 久久久久亚洲精品无码蜜桃| 一本久中文视频播放| 18禁网站免费无遮挡无码中文 | 日韩精品无码中文字幕一区二区 | 精品无码国产污污污免费网站国产| 久久中文字幕视频、最近更新| 国产日韩AV免费无码一区二区三区 | 久久久久久亚洲精品无码| 中文字幕日本精品一区二区三区| 精品久久久久久无码国产| 亚洲精品色午夜无码专区日韩| 波多野结衣中文在线播放| 69久久精品无码一区二区| 中文字幕无码乱人伦| 中文字幕亚洲精品资源网| 亚洲日韩精品无码专区网站| 无码137片内射在线影院| 国产亚洲大尺度无码无码专线| 天堂资源8中文最新版| 亚洲AV无码成人精品区狼人影院| 未满小14洗澡无码视频网站| 国产成人精品一区二区三区无码 | 无码中文字幕日韩专区视频| 99久久人妻无码精品系列| 无码乱人伦一区二区亚洲| 中文字幕乱码无码人妻系列蜜桃 | 东京热加勒比无码少妇|