137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

近年來,深度學習在工業領域的應用越來越廣泛,不但提升了企業的自動化生產效率,還為企業的重要決策提供了數據支撐,AI 正逐步改變人們的生活和生產方式。由於深度神經網絡計算複雜度高、參數量大,極大限制了模型的部署場景,尤其是移動嵌入式設備端。因此模型小型化技術成為最近幾年學術界和工業界研究的熱點。

PaddleSlim 是基於飛槳框架、功能完備、完全開源的深度學習模型壓縮工具。集深度學習模型壓縮中常用的量化、剪裁、蒸餾、模型結構搜索、模型硬件搜索等方法於一體,滿足更多的工業部署場景需求,進一步降低了深度學習在工業領域應用的門檻。

PaddleSlim 於2019年 Q1 首次發佈,至今已經歷經了四個版本的打磨。本次發佈的 PaddleSlim 1.0在易用性、模型適配、端側部署、性能提升等方面都有了顯著提升,並在百度人臉 SDK 中成功應用,實現在嵌入式設備上,0.3秒內完成人臉檢測、跟蹤、活體檢測、識別等全流程操作,助力百度發佈了業內最領先的壁虎、疫情體溫測試等系列硬件。

PaddleSlim 1.0發佈了10個關鍵特性,下面我們一同感受下它在模型壓縮上的不同之處。

  • 飛槳 PaddleSlimV1.0 項目地址:https://github.com/PaddlePaddle/PaddleSlim
137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

定製 YOLO 蒸餾方案刷新 COCO 檢測任務精度


模型蒸餾是將複雜網絡中的有用信息提取出來,遷移到一個更小的網絡中去,從而達到節省計算資源的目的。PaddleSlim 1.0在支持傳統蒸餾方法和基於 FSP(Flow of Solution Procedure)蒸餾方法的同時,還支持針對不同的任務,自定義 Loss 的蒸餾策略。

在 ImageNet 分類任務上,將 MobileNetV2 精度進一步提升了2.1%,此外 PaddleSlim 1.0還聯合 PaddleDetection 開發了針對 YOLO 系列模型的蒸餾方案,在 COCO 目標檢測數據集上精度提高2%以上。


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

▲ 表1 蒸餾策略部分實驗結果


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

基於敏感度無損剪裁目標檢測模型裁剪後精度不降反增


為了最大化模型剪枝效果,PaddleSlim 在之前的版本中實現了基於網絡結構敏感度進行剪枝的方案,PaddleSlim1.0 支持模型敏感度的多機、多線程並行加速計算。用戶可以根據計算結果繪製要裁剪模型的敏感度折線圖,然後從中選取一組合適的剪裁率,或者直接調用 PaddleSlim 提供的接口自動生成一組合適的剪裁率。


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

▲ 圖2 卷積層敏感度折線圖


模型裁剪最大的難題是準確找出網絡中所有與被剪卷積相關的節點,通常做法是以全局視角進行遍歷,但可擴展性不強。PaddleSlim 1.0採用以網絡節點為視角進行遍歷,找出所有與被剪卷積相關的節點,

相當於把複雜網絡的遍歷任務分攤給了各個類型的網絡節點,從而提升了可擴展性,在理論上可以支持任意複雜的網絡。

在目標檢測任務中,可以在不降低模型精度的情況下,進行大比例的剪枝,個別任務剪枝後精度反而有所提升。


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

▲ 表2 基於敏感度的剪裁方法部分實驗結果


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

支持網絡可配置量化,新增離線量化,模型預測速度成倍數提升


定點量化的目的是將神經網絡前向過程中浮點數運算(float32)量化為整數(int8)運算,以達到計算加速的目的。PaddleSlim 1.0在定點量化的功能上,還支持了網絡可配置量化,

可以對用戶指定的局部網絡進行量化,即敏感層繼續用浮點數進行計算,以減小精度損失。

為了減少量化訓練的開銷,PaddleSlim 1.0還新增了離線量化功能,大部分任務在不進行 re-train 的情況下也能達到較高的量化的精度。

PaddleSlim 1.0支持對卷積層、全連接層、激活層、BIAS 層和其它無權重的層量化。實驗證明,定點量化最高可以使模型減小到原來的約1/4,基於 Paddle Lite 預測部署框架,不同模型可實現1.7倍~2.2倍的加速。


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

▲ 表3 int8部分定點量化訓練實驗結果


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

全新的 NAS 架構搜索更快速、結構更靈活


PaddleSlim 1.0開放了更加靈活的 NAS API,預定義了更豐富的搜索策略和搜索空間。將搜索空間和搜索策略完全解耦,方便用戶擴展搜索策略和搜索空間。

在搜索策略層面,之前版本已經支持模擬退火(Simulated Annealing, 簡稱SA)算法,相比傳統 RL 算法,收斂速度更快,迭代步驟更少。支持分佈式SA搜索策略,確保40GPU卡以內搜索速度線性加速。

本次升級新增了目前熱門的基於超網絡(HyperNet)的 One-Shot NAS 自動搜索方法,One-Shot NAS 將超網絡訓練與搜索完全解耦,可以靈活的適用於不同的約束條件,超網絡訓練過程中顯存佔用低,所有結構共享超網絡權重,搜索耗時加速顯著,同時還研發了基於自監督的排序一致性算法,以確保超網絡性能與模型最終性能的一致性。

在搜索空間層面,新增對 MobileNet、ResNet、Inception 等多種類型的搜索空間,同時還支持多個不同類型的搜索空間堆疊進行搜索,用戶也可自定義搜索空間。


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

▲ 圖3 One-Shot 網絡結構搜索原理


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

▲ 表4 ImageNet 任務上 One-Shot 搜索加速收益


實驗結果表明,對比單卡 SA 搜索策略,單卡 One-Shot 策略實現搜索速度加快10倍以上。


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

創新的硬件搜索技術為不同硬件自動匹配最優模型


由於不同硬件架構的差異,需要人工進行繁瑣的硬件適配工作,硬件搜索就是要解決在硬件適配過程中,為特定硬件定製最優模型結構的問題。

在搜索最優模型結構的過程中,如何快速獲得模型在硬件上的實際性能是首先需要解決的問題,傳統的 FLOPs 無法準確表示模型在真實硬件環境上的性能,

PaddleSlim 1.0支持基於 Operator 查表進行網絡延時預估的方法。

用戶只需在硬件上建立 Operator 延時表,並在網絡生成後基於 Operator 延時表、網絡延時評估器、網絡結構即可快速獲得網絡在硬件上的延時情況。


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

▲ 圖4 SANAS硬件搜索原理及過程


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

▲ 表5 各硬件平臺使用硬件搜索加速後收益 (ImageNet 任務上相比 MobileNetV2)


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

新增大規模可擴展知識蒸餾框架Pantheon


支持分佈式蒸餾,實現 teacher 和 student 在不同 GPU 或不同機器上進行蒸餾。避免當 teacher 和 student 過大,出現無法運行的情況。在單機圖像分類蒸餾任務上,該方法能降低蒸餾耗時約50%。


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

▲ 圖5 大規模蒸餾原理圖


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

支持分類、檢測、分割多個場景多種策略自由組合


PaddleSlim 1.0支持多種壓縮策略組合使用,以達到最高的壓縮比。在分類任務上,實現了模型大小減小70%,準確提升1%。


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

▲ 表6 ImageNet 分類任務的部分模型壓縮效果


在目標檢測任務上,實現了 COCO 任務提升0.6%,FLOPs 減小43%。


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

▲ 表7 目標檢測模型部分模型壓縮效果


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

實現“模型訓練->模型壓縮->預測部署”全流程應用


PaddleSlim 基於飛槳完善的技術生態,實現了從“模型訓練->模型壓縮->預測部署”的全流程應用,壓縮後的模型可無縫落地各種硬件環境。


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

▲ 圖6 壓縮與部署流程


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

▲ 表8 目標檢測模型部署在服務端和移動端的耗時數據


測試數據表明,MobileNetv1-YOLOv3 在移動端不同設備上提速約127%~137%。


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

▲ 表9 ImageNet 分類模型部署在 服務端和移動端的部分性能


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

輕量級接口設計,實現各策略解耦,大大縮短編碼耗時


PaddleSlim 1.0實現了全新接口設計,通過算法獨立實現不同壓縮方法之間的代碼解耦,每個方法既可獨立使用,又可混合使用,大大縮短了編碼耗時。此外接口設計更加簡單,用戶只需要在原有工程上添加如下幾行代碼,即可快速實現模型壓縮。

下面我們構造一個 MobileNetV1 圖像分類模型,並剪裁其中兩個卷積層,觀察剪裁後的FLOPs,代碼示意如下:


如果想了解和使用完整代碼,請打開下方鏈接查看圖像分類模型通道剪完整代碼示例:

https://aistudio.baidu.com/aistudio/projectdetail/309947


如果您想了解更多的關於裁剪的代碼示例,請打開下方鏈接查看高級剪裁教程:

https://aistudio.baidu.com/aistudio/projectdetail/308077


如上完整代碼在百度開發實訓平臺 AI Studio 上可在線運行,進入鏈接的地址後,選擇 “登錄 AI Stuido -> 單擊 Fork ->啟動項目”即可。


137%YOLOv3加速、10倍搜索性能提升!最新版PaddleSlim有10個驚喜

完善的中英文文檔,為全球開發者和合作夥伴提供更友好的支持


同步開發者建議,完善了中文文檔,並新增英文文檔,為全球 PaddleSlim 開發者和合作夥伴提供了更友好的支持。

當前,PaddleSlim 已經在業內領先的壁虎人臉識別套件、AI 測溫等系列產品上成功商用。在第15屆百度之星開發者大賽中,PaddleSlim 作為模型小型化賽題中的重要工具,被來自全國90%雙一流高校和相關研究的1800多支參賽隊使用。

  • 百度之星開發者大賽更多內容打開下方鏈接:http://astar2019.baidu.com/index.html

未來,飛槳 PaddleSlim 願與廣大 AI 開發者、愛好者和合作夥伴攜手,共同探索模型小型化的領先技術,為 AI 在工業領域中的廣泛應用,持續貢獻力量。

如果您加入官方 QQ 群,您將遇上大批志同道合的深度學習同學。

  • 官方 QQ 群:703252161。

如果您想詳細瞭解更多飛槳的相關內容,請參閱以下文檔:

  • 官網地址:https://www.paddlepaddle.org.cn
  • 飛槳 PaddleSlim 項目地址:https://github.com/PaddlePaddle/PaddleSlim


分享到:


相關文章: