可真有你的!EasyEdge模型压缩新姿势……
近年來,深度學習技術在諸多領域大放異彩,因此廣受學術界和工業界的青睞。隨著深度學習的發展,神經網絡結構變得越來越復雜。復雜的模型固然具有更好的性能,但是高額的存儲空間與計算資源消耗使其難以有效地應用在各硬件平臺上。因此深度學習模型在端上部署和加速成為了學術界和工業界都重點關注的研究領域。?
一方面,有許多深度學習框架可以讓開發者和研究者用于設計模型,每個框架具備各自獨特的網絡結構定義和模型保存格式。AI 工程師和研究者希望自己的模型能夠在不同的框架之間轉換,但框架之間的差距阻礙了模型之間的交互操作。另一方面,由于深度學習模型龐大的參數量,直接在邊緣端部署模型會產生較高的時延。?
百度 EasyEdge 端與邊緣 AI 服務平臺可以很好地解決上述問題。EasyEdge 可以支持多種主流深度學習框架的模型輸入,提供了方便的部署功能,針對業內各類主流芯片與操作系統進行了適配,省去了繁雜的代碼過程,可以輕松將模型部署到端設備上。EasyEdge 在集成了多種加速技術的同時對外提供多個等級的加速服務,以平衡模型推理時間和精度,一方面可以最大限度的減小模型在端上部署的延時,另一方面可以匹配更廣泛的使用場景。?
EasyEdge 支持多種不同類型深度學習模型的部署,包括常見的模型類型包括圖像分類、檢測、分割以及部分人臉檢測、姿態估計。目前 EasyEdge 支持的經典網絡種類超過 60 種以及多種自定義的網絡類型。?
同時 EasyEdge 支持接入多種深度學習框架,包括飛槳 PaddlePaddle、Pytorch、Tensorflow、MxNet 等。為了更方便的實現部署,目前 EasyEdge 支持部分深度學習框架模型的互轉換,如圖 1 所示。例如用戶想要在 Intel 的 CPU 上使用 OpenVINO 部署一個 Pytorch 模型,EasyEdge 可以實現經過多次模型轉換,將 torch 模型格式轉換成 OpenVINO IR 格式,最后基于 OpenVINO 部署框架完成模型部署。
▲ 圖1. EasyEdge 支持多種模型框架轉換
EasyEdge 對于端設備的支持也是很廣泛的,既支持常見的通用芯片 CPU、GPU 以及通用 arm 設備,也支持市面上主流的專用芯片,如 Intel Movidius 系列,海思 NNIE 等,如圖 2 所示,EasyEdge 目前已建設為業界適配最廣泛的端與邊緣服務平臺。
▲?圖2. EasyEdge 支持多種硬件設備部署
解析EasyEdge中的模型壓縮技術
為了能實現多種網絡在不同芯片的高效部署,EasyEdge 后臺提供了多種優化操作,如模型格式轉換、圖優化、芯片優化、模型低精度計算優化、模型裁剪和蒸餾等。其中模型壓縮技術是至關重要的一環,EasyEdge 中用到的模型壓縮技術包括常見的模型低精度計算,結構化裁剪以及模型蒸餾等。如圖 3 所示,為了更好的適配端設備,EasyEdge 集成了多種模型壓縮庫,可根據實際部署情況靈活調用。
▲?圖3. EasyEdge 中的模型壓縮技術
模型低精度計算旨在通過少量的比特去表示原本 32bit 的浮點數據。一方面是為了壓縮模型體積大小,對于較大的模型可以使端側設備更快地將模型 load 到內存中,減小 IO 時延,另一方面,通常處理器對于定點的計算能力會強于浮點,因此量化后的模型往往可以被更快的推理計算。如圖 4 所示,分布不規則的浮點數據被量化到少數幾個定點。EasyEdge 支持包括常見低精度類型包括 FP16 和 INT8,其中 INT8 量化技術能提供最大限度的無損壓縮。
▲?圖4. 模型量化 [1]
INT8 量化技術的實現方法大致分為兩種,訓練后量化和訓練中量化。顧名思義訓練后量化就是在已經訓練好的 FP32 模型中插入量化節點,通過統計學方法盡可能通過少量定點數去還原原來的浮點數據,而訓練中量化會在訓練之前就插入模擬量化節點,在訓練過程中就模擬量化后的數據去計算各個節點的 output,這樣模型最終會擬合收斂到模型量化后最優。如圖 5 所示。相比之下訓練中量化具有更好的精度,但是需要耗費更長的時間。
▲?圖5. 訓練量化原理 [2]
EasyEdge 同時具備訓練中量化和離線訓練量化的能力,并且會根據不同的實際情況選擇不一樣的量化方法。深度學習模型中,分類模型最終一般會以計算最終 Layer 的 topK 最為最終的輸出結果,這種性質就決定了模型更注重最終輸出的排序關系而非數值本身的大小,因此分類模型相比于基于數值回歸的檢測模型具有更強的量化魯棒性。基于這一點,EasyEdge 的量化策略會根據模型類型靈活調整,在分類相關任務中會傾向于使用離線量化技術,以縮短發布時長,而基于 anchor 回歸的一系列檢測模型中則更傾向于通過再訓練來保證精度。另一方面,根據端側設備、部署框架不同,EasyEdge 采取的量化策略也會有所區別。例如在使用 PaddleFluid 框架將模型部署到 CPU 上時,較敏感的 OP 在量化之后會極大的影響最終精度,因此在 EasyEdge 中這些 OP 的輸入輸出數據類型采用 FP32,而其余 OP 的計算會采用 INT8。這種 Layer 級別的混合精度量化策略可以很好的平衡推理速度和精度。
在離線量化過程中,會出現部分 outlier 數據點距離中心分布太遠的情況,這會導致傳統的量化策略會過大的預估量化 range,而導致最終量化精度較低,如圖 13 所示。為了應對這種情況,EasyEdge 集成了后校準技術,通過多次迭代以尋找更合適的閾值,使量化后 INT8 數據分布和量化前 FP32 數據分布具有最小的 KL 散度,以此來降低量化誤差。
模型裁剪通常指的是結構化裁剪。結構化裁剪是通道級別的裁剪,如圖 6 所示,旨在刪除多余的計算通道。
▲?圖6. 模型結構化裁剪 [3]
對于某一個卷積核的裁剪,如圖 7 所示,在中間的 kernel 同時裁剪掉 input 和 output 的一個通道時,其輸入輸出 tensor 對應的通道將減小,這帶來兩方面好處,一方面是在減小卷積核大小之后,模型體積得以減小,減少了推理過程中的 IO 時間,另一方面 tensor 本身體積被壓縮,因此相比壓縮之前只需要更少的內存開銷。
EasyEdge 目前采取的就是這種通道裁剪技術。同時在裁剪通道的選擇上,封裝了基于 L1-norm、L2-norm 和 FPGM [8] 等多種方法,并且會根據實際情況靈活選擇。另一方面,裁剪后的模型由于更改了部分 Layer 的 shape,因此可能會影響到網絡拓撲結構的合理性,EasyEdge 平臺集成了通道調整方法,實現通過廣度優先查找算法,逐個矯正通道數,并且對于部分特殊難以調整的 block 會配置跳過,保證裁剪算法的合理性。
▲?圖7. 針對一個卷積核的結構化裁剪 [4]
對于部分模型的裁剪,EasyEdge 采用通道敏感度分析技術,通過在每個 Layer 上多次裁剪推理計算最終精度損失來分析各個 Layer 對于通道裁剪的敏感度。另一方面,EasyEdge 還集成了 Layer 級別的配置裁剪策略,通過閾值過濾的方法,在相同壓縮率目標下,盡可能多的保留更敏感的層,以達到最小的精度影響。舉個例子,如圖 8 所示,一個 ResNet50 網絡中,通過敏感度分析得出結論,起始層和終止層對裁剪更敏感,因此實施更低的裁剪率,而中間層具有更多的冗余,因此采用更高的裁剪率。
不僅如此,EasyEdge 在上層融合了一些簡單的超參搜索的技術,一方面需要盡可能保留敏感 Layer 的參數信息,另一方面需要找出最匹配設定壓縮率的模型。例如一個 120M 大小的模型,在配置裁剪率為 50% 的時候,可以精確裁剪到 60M 左右,這種技術使 EasyEdge 平臺在模型壓縮層面可以提供更差異化的服務。
▲?圖8. 基于敏感度的裁剪,精準的裁剪率控制 [5]
對于部分模型的加速,EasyEdge 使用了基于 Hinton [9] 的蒸餾技術。模型蒸餾的目的是利用大模型學習到的知識去調教更小的模型,目的是為了讓小模型的精度能夠逼近大模型的精度。如圖 9 所示,一般蒸餾的方法是在同一個 session 中,將大模型的某些層輸出和小模型的部分輸出以一定的形式關聯,這樣在訓練小模型的過程中,大模型所學到的知識會作用于小模型的梯度反向傳播,促進小模型的收斂。
▲?圖9. 知識蒸餾功能 [6]
本次新上功能,主要功能基于模型壓縮框架 PaddleSlim 開發,EasyEdge 平臺基于其中的壓縮功能做了進一步的封裝和優化。想了解更多相關信息可以登錄 github 搜索 PaddleSlim。?
我們分別在三種最常用的端設備,即 CPU、GPU 和 ARM 上發布了超高精度檢測模型,具體設備型號如下:
CPU: Intel? Xeon? Processor E5-2630 v4?
GPU: NVIDIA Tesla V100?
ARM: Firefly-RK3399?
如圖 10 所示,其中直方圖中 acc1-acc3 分別代表不同加速等級,加速等級越高模型被裁剪的通道數越多,縱坐標是網絡對單張圖片的推理延時。可以觀察到 EasyEdge 的模型壓縮能力在三種端上速度收益都很明顯,直觀上看通用 CPU 上加速效果最好,可以達到超過一倍的速度提升,這也跟 EasyEdge 平臺在不同端設備上采取的加速方法相關,當多種加速技術同時使用時會取得較大的提升。其中 GPU 本身擁有更強的算力,因此減小 FLOPS 對于 GPU 的加速效果而言略弱于 CPU 和通用 ARM。
▲?圖10. 不同端設備上的加速情況
那么接下來對比一下同一個硬件設備上,不同類型的模型的加速效果。我們實驗了幾種不同精度的模型在 Jetson (jetson4.4-xavier) 上的推理效果,包括 MobileNetv1-SSD、MobileNetv1-YOLOv3 和 YOLOv3。如圖 11 所示,acc1-acc3 的含義同上,總體來說,新上的模型壓縮功能在犧牲少量精度的情況下最多可以獲得 40% 左右的速度收益,效果明顯。另一方面,高性能模型的加速效果相比之下會略差一點,因為高性能模型本身具備一定的加速特質,例如更小的模型體積和更少的 FLOPS,因此再提升的空間相比之下更小。
▲?圖11. 不同的檢測模型在 Jetson 上的推理延時
實際使用過程中具體的速度提升會根據端側設備和模型類型的不同而有所區別,EasyEdge 平臺的模型壓縮能力在后續迭代中也會持續優化和更新。
現在可以體驗一下新功能,在發布模型的時候可以根據自身需求選擇合適的加速方案,如圖 12 所示。
▲?圖12. EasyEdge 提供多種加速方案
發布模型后可以在評測頁面觀看 sdk 在端上的推理效果,如圖 13 所示,最快的加速方案伴隨著較少的精度損失,可將模型速度提升 30%。
▲?圖13. EasyEdge 提供模型評測功能
EasyEdge 的能力也全面集成于飛槳企業版 EasyDL 和 BML 中,使用這兩大平臺,可以一站式完成數據處理、模型訓練、服務部署全流程,實現 AI 模型的高效開發和部署。?
近期,飛槳企業版開展【2021 萬有引力計劃】活動,免費送你價值 10,000 元現金券,可直接用于購買飛槳企業版 EasyDL 和 BML 公有云的線上服務,最高可兌換:
6000+ 小時的自定義模型訓練時長
590+ 小時的腳本調參
公有云部署 400+ 小時配額
或者兌換 50 個設備端的 SDK
名額有限,立刻點擊閱讀原文領取:
https://ai.baidu.com/easydl/universal-gravitation
參考文獻
[1] Fang J, Shafiee A, Abdel-Aziz H, et al. Near-lossless post-training quantization of deep neural networks via a piecewise linear approximation[J]. arXiv preprint arXiv:2002.00104, 2020.
[2] Jacob B, Kligys S, Chen B, et al. Quantization and training of neural networks for efficient integer-arithmetic-only inference[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 2704-2713.
[3] Han S, Pool J, Tran J, et al. Learning both weights and connections for efficient neural networks[J]. arXiv preprint arXiv:1506.02626, 2015.
[4] Li H, Kadav A, Durdanovic I, et al. Pruning filters for efficient convnets[J]. arXiv preprint arXiv:1608.08710, 2016.
[5] He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.
[6] Gou J, Yu B, Maybank S J, et al. Knowledge distillation: A survey[J]. International Journal of Computer Vision, 2021, 129(6): 1789-1819.
[7] Wu H, Judd P, Zhang X, et al. Integer quantization for deep learning inference: Principles and empirical evaluation[J]. arXiv preprint arXiv:2004.09602, 2020.
[8] He Y, Liu P, Wang Z, et al. Filter pruning via geometric median for deep convolutional neural networks acceleration[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2019: 4340-4349.
[9] Hinton G, Vinyals O, Dean J. Distilling the knowledge in a neural network[J]. arXiv preprint arXiv:1503.02531, 2015.
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
·
總結
以上是生活随笔為你收集整理的可真有你的!EasyEdge模型压缩新姿势……的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么在bios中u盘启动 BIOS中如何
- 下一篇: u盘怎么装xp电脑系统教程 如何在电脑上