業界|騰訊 AI Lab 正式開源PocketFlow,讓深度學習放入手機!

機器之心發佈

騰訊 AI Lab

9 月,機器之心曾報道騰訊 AI Lab 提出的自動化模型壓縮框架 PocketFlow。近日,騰訊 AI Lab 在南京舉辦的騰訊全球合作伙伴論壇上宣佈正式開源「PocketFlow」項目。

項目訪問地址:https://github.com/Tencent/PocketFlow

據介紹,該項目是一個自動化深度學習模型壓縮與加速框架,整合多種模型壓縮與加速算法並利用強化學習自動搜索合適壓縮參數,解決傳統深度學習模型由於模型體積太大,計算資源消耗高而難以在移動設備上部署的痛點,同時極大程度的降低了模型壓縮的技術門檻,賦能移動端 AI 應用開發。

這是一款適用於各個專業能力層面開發者的模型壓縮框架,基於 Tensorflow 開發,集成了當前主流與 AI Lab 自研的多個模型壓縮與訓練算法,並採用超參數優化組件實現了全程自動化託管式的模型壓縮。開發者無需瞭解具體模型壓縮算法細節,即可快速地將 AI 技術部署到移動端產品上,實現用戶數據的本地高效處理。

目前該框架在騰訊內部已對多個移動端 AI 應用模型進行壓縮和加速,並取得了令人滿意的效果,對應用整體的上線效果起到了非常重要的作用。

PocketFlow 框架

PocketFlow 框架本次開源內容主要由兩部分組件構成,分別是模型壓縮/加速算法部分和超參數優化部分,具體結構如下圖所示:

业界|腾讯 AI Lab 正式开源PocketFlow,让深度学习放入手机!

模型壓縮/加速算法部分包括多種深度學習模型壓縮和加速算法:

  • 通道剪枝(channel pruning): 在 CNN 網絡中,通過對特徵圖中的通道維度進行剪枝,可以同時降低模型大小和計算複雜度,並且壓縮後的模型可以直接基於現有的深度學習框架進行部署。PocketFlow 還支持通道剪枝的分組 finetune/retrain 功能,通過實驗發現此方法可以使原本壓縮後的模型精度有明顯的提升。

  • 權重稀疏化(weight sparsification):通過對網絡權重引入稀疏性約束,可以大幅度降低網絡權重中的非零元素個數;壓縮後模型的網絡權重可以以稀疏矩陣的形式進行存儲和傳輸,從而實現模型壓縮。

  • 權重量化(weight quantization):通過對網絡權重引入量化約束,可以降低用於表示每個網絡權重所需的比特數;同時提供了對於均勻和非均勻兩大類量化算法的支持,可以充分利用 ARM 和 FPGA 等設備的硬件優化,以提升移動端的計算效率,併為未來的神經網絡芯片設計提供軟件支持。

  • 網絡蒸餾(network distillation):對於上述各種模型壓縮組件,通過將未壓縮的原始模型的輸出作為額外的監督信息,指導壓縮後模型的訓練,在壓縮/加速倍數不變的前提下均可以獲得 0.5%-2.0% 不等的精度提升。

  • 多 GPU 訓練(multi-GPU training):深度學習模型訓練過程對計算資源要求較高,單個 GPU 難以在短時間內完成模型訓練,因此提供了對於多機多卡分佈式訓練的全面支持,以加快使用者的開發流程。無論是基於 ImageNet 數據的 Resnet-50 圖像分類模型還是基於 WMT14 數據的 Transformer 機器翻譯模型,均可以在一個小時內訓練完畢。

超參數優化(hyper-parameter optimization)部分可以通過強化學習或者 AutoML,在整體壓縮率一定的情況下,搜索出每一層最合適的壓縮比例使得整體的精度最高。多數開發者對模型壓縮算法往往瞭解較少,調節壓縮算法參數需要長期的學習和實驗才能有所經驗,但超參數取值對最終結果往往有著巨大的影。PocketFlow 的超參數優化部分正是幫助開發者解決了這一大痛點,並且通過實驗發現,其優化結果也要好於專業的模型壓縮工程師手工調參的結果。其結構如下圖:

业界|腾讯 AI Lab 正式开源PocketFlow,让深度学习放入手机!

PocketFlow 性能

通過引入超參數優化組件,不僅避免了高門檻、繁瑣的人工調參工作,同時也使得 PocketFlow 在各個壓縮算法上全面超過了人工調參的效果。以圖像分類任務為例,在 CIFAR-10 和 ImageNet 等數據集上,PocketFlow 對 ResNet 和 MobileNet 等多種 CNN 網絡結構進行有效的模型壓縮與加速。

在 CIFAR-10 數據集上,PocketFlow 以 ResNet-56 作為基準模型進行通道剪枝,並加入了超參數優化和網絡蒸餾等訓練策略,實現了 2.5 倍加速下分類精度損失 0.4%,3.3 倍加速下精度損失 0.7%,且顯著優於未壓縮的 ResNet-44 模型; 在 ImageNet 數據集上,PocketFlow 可以對原本已經十分精簡的 MobileNet 模型繼續進行權重稀疏化,以更小的模型尺寸取得相似的分類精度;與 Inception-V1、ResNet-18 等模型相比,模型大小僅為後者的約 20~40%,但分類精度基本一致(甚至更高)。

业界|腾讯 AI Lab 正式开源PocketFlow,让深度学习放入手机!
业界|腾讯 AI Lab 正式开源PocketFlow,让深度学习放入手机!

相比於費時費力的人工調參,PocketFlow 框架中的 AutoML 自動超參數優化組件僅需 10 餘次迭代就能達到與人工調參類似的性能,在經過 100 次迭代後搜索得到的超參數組合可以降低約 0.6% 的精度損失;通過使用超參數優化組件自動地確定網絡中各層權重的量化比特數,PocketFlow 在對用於 ImageNet 圖像分類任務的 MobileNet-v1 模型進行壓縮時,取得了一致性的性能提升;用 PocketFlow 平均量化比特數為 8 時,準確率不降反升,從量化前的 70.89% 提升到量化後的 71.29%。

业界|腾讯 AI Lab 正式开源PocketFlow,让深度学习放入手机!

PocketFlow 內部應用

據瞭解,在騰訊公司內部,PocketFlow 框架正在為多項移動端業務提供模型壓縮與加速的技術支持。例如,在手機拍照 APP 中,人臉關鍵點定位模型是一個常用的預處理模塊,通過對臉部的百餘個特徵點(如眼角、鼻尖等)進行識別與定位,可以為後續的人臉識別、智能美顏等多個應用提供必要的特徵數據。騰訊 AI Lab 基於 PocketFlow 框架,對人臉關鍵點定位模型進行壓縮,在保持定位精度不變的同時,大幅度地降低了計算開銷,在本身已經十分精簡的網絡上取得了 1.3 ~ 2 倍不等的加速效果,壓縮後的模型已經在實際產品中得到部署。

在人體體態識別項目中,PocketFlow 更是在滿足上線精度的要求下,使得模型推理速度有 3 倍以上的加速,為項目的移動端落地起到了決定性的作用。業界|騰訊 AI Lab 正式開源PocketFlow,讓深度學習放入手機!

✄------------------------------------------------

加入機器之心(全職記者 / 實習生):[email protected]

投稿或尋求報道:content@jiqizhixin.com

廣告 & 商務合作:[email protected]


分享到:


相關文章: