我們擅長商業(yè)策略與用戶體驗的完美結合。
歡迎瀏覽我們的案例。
11 月 1 日,騰訊 AI Lab 在南京舉辦的騰訊全球合作伙伴論壇上宣布正式開源“PocketFlow”項目, 該項目是一個自動化深度學習模型壓縮與加速框架,整合多種模型壓縮與加速算法并利用強化學習自動搜索合適壓縮參數(shù),解決傳統(tǒng)深度學習模型由于模型體積太大,計算資源消耗高而難以在移動設備上部署的痛點,同時極大程度的降低了模型壓縮的技術門檻,賦能移動端 AI 應用開發(fā)。
這是一款適用于各個專業(yè)能力層面開發(fā)者的模型壓縮框架,基于 Tensorflow 開發(fā),集成了當前主流與 AI Lab 自研的多個模型壓縮與訓練算法,并采用超參數(shù)優(yōu)化組件實現(xiàn)了全程自動化托管式的模型壓縮。開發(fā)者無需了解具體模型壓縮算法細節(jié),即可快速地將 AI 技術部署到移動端產品上,實現(xiàn)用戶數(shù)據的本地高效處理。
目前該框架在騰訊內部已對多個移動端 AI 應用模型進行壓縮和加速,并取得了令人滿意的效果, 對應用整體的上線效果起到了非常重要的作用。
隨著移動互聯(lián)網的普及和 AI 算法的愈加成熟,移動端 AI 的需求和應用場景也愈加豐富,如智能美顏,瘦身,手勢識別,場景識別,游戲 AI,視頻檢測,車載語音交互,智能家居,實時翻譯等。將模型部署在移動端代替服務器端可以實現(xiàn)實時交互,在無網絡環(huán)境的情況下也可正常運行,并且保護了數(shù)據的隱私和安全性,降低運維成本。而在移動端 AI 模型部署方面,小而快變成了模型推理最渴望的要求之一,因為小的模型可以使得整個應用的存儲空間減小;而提高模型的推理速度則可以使得整個模型應用場景的反應速度加快,同時也可以在低配設備上取得很好的效果。因此,模型的推理速度逐漸已經成為了各大 AI 應用市場競爭力上最重要的評測指標之一。然而往往訓練出來的模型推理速度或者尺寸大小不能滿足需求,大部分開發(fā)者對極致的模型壓縮和加速方法又感到困惑。
PocketFlow 的出現(xiàn)就是為了解決這個令眾多 AI 應用開發(fā)者頭痛的問題。
框架開源內容:
PocketFlow 框架本次開源內容主要由兩部分組件構成,分別是模型壓縮/加速算法部分和超參數(shù)優(yōu)化部分,具體結構如下圖所示:
模型壓縮/加速算法部分包括多種深度學習模型壓縮和加速算法:
通道剪枝(channel pruning): 在 CNN 網絡中,通過對特征圖中的通道維度進行剪枝,可以同時降低模型大小和計算復雜度,并且壓縮后的模型可以直接基于現(xiàn)有的深度學習框架進行部署。PocketFlow 還支持通道剪枝的分組 finetune/retrain 功能,通過實驗我們發(fā)現(xiàn)此方法可以使原本壓縮后的模型精度有明顯的提升。
權重稀疏化(weight sparsification):通過對網絡權重引入稀疏性約束,可以大幅度降低網絡權重中的非零元素個數(shù);壓縮后模型的網絡權重可以以稀疏矩陣的形式進行存儲和傳輸,從而實現(xiàn)模型壓縮。
權重量化(weight quantization):通過對網絡權重引入量化約束,可以降低用于表示每個網絡權重所需的比特數(shù);我們同時提供了對于均勻和非均勻兩大類量化算法的支持,可以充分利用 ARM 和 FPGA 等設備的硬件優(yōu)化,以提升移動端的計算效率,并為未來的神經網絡芯片設計提供軟件支持。
網絡蒸餾(network distillation):對于上述各種模型壓縮組件,通過將未壓縮的原始模型的輸出作為額外的監(jiān)督信息,指導壓縮后模型的訓練,在壓縮/加速倍數(shù)不變的前提下均可以獲得 0.5%-2.0% 不等的精度提升。
多 GPU 訓練(multi-GPU training):深度學習模型訓練過程對計算資源要求較高,單個 GPU 難以在短時間內完成模型訓練,因此我們提供了對于多機多卡分布式訓練的全面支持,以加快使用者的開發(fā)流程。無論是基于 ImageNet 數(shù)據的 Resnet-50 圖像分類模型還是基于 WMT14 數(shù)據的 Transformer 機器翻譯模型,均可以在一個小時內訓練完畢。
超參數(shù)優(yōu)化(hyper-parameter optimization)部分可以通過強化學習或者 AutoML,在整體壓縮率一定的情況下,搜索出每一層最合適的壓縮比例使得整體的精度最高。多數(shù)開發(fā)者對模型壓縮算法往往了解較少,調節(jié)壓縮算法參數(shù)需要長期的學習和實驗才能有所經驗, 但超參數(shù)取值對最終結果往往有著巨大的影。PocketFlow 的超參數(shù)優(yōu)化部分正是幫助開發(fā)者解決了這一大痛點,并且通過實驗我們發(fā)現(xiàn),其優(yōu)化結果也要好于專業(yè)的模型壓縮工程師手工調參的結果。其結構如下圖:
PocketFlow 性能
通過引入超參數(shù)優(yōu)化組件,不僅避免了高門檻、繁瑣的人工調參工作,同時也使得 PocketFlow 在各個壓縮算法上全面超過了人工調參的效果。以圖像分類任務為例,在 CIFAR-10 和 ImageNet 等數(shù)據集上,PocketFlow 對 ResNet 和 MobileNet 等多種 CNN 網絡結構進行有效的模型壓縮與加速。
在 CIFAR-10 數(shù)據集上,PocketFlow 以 ResNet-56 作為基準模型進行通道剪枝,并加入了超參數(shù)優(yōu)化和網絡蒸餾等訓練策略,實現(xiàn)了 2.5 倍加速下分類精度損失 0.4%,3.3 倍加速下精度損失 0.7%,且顯著優(yōu)于未壓縮的 ResNet-44 模型; 在 ImageNet 數(shù)據集上,PocketFlow 可以對原本已經十分精簡的 MobileNet 模型繼續(xù)進行權重稀疏化,以更小的模型尺寸取得相似的分類精度;與 Inception-V1、ResNet-18 等模型相比,模型大小僅為后者的約 20~40%,但分類精度基本一致(甚至更高)。
相比于費時費力的人工調參,PocketFlow 框架中的 AutoML 自動超參數(shù)優(yōu)化組件僅需 10 余次迭代就能達到與人工調參類似的性能,在經過 100 次迭代后搜索得到的超參數(shù)組合可以降低約 0.6% 的精度損失;通過使用超參數(shù)優(yōu)化組件自動地確定網絡中各層權重的量化比特數(shù),PocketFlow 在對用于 ImageNet 圖像分類任務的 MobileNet-v1 模型進行壓縮時,取得了一致性的性能提升;用 PocketFlow 平均量化比特數(shù)為 8 時,準確率不降反升,從量化前的 70.89% 提升到量化后的 71.29%。
PocketFlow 落地助力內部移動應用 AI 落地
在騰訊公司內部,PocketFlow 框架正在為多項移動端業(yè)務提供模型壓縮與加速的技術支持。例如,在手機拍照 APP 中,人臉關鍵點定位模型是一個常用的預處理模塊,通過對臉部的百余個特征點(如眼角、鼻尖等)進行識別與定位,可以為后續(xù)的人臉識別、智能美顏等多個應用提供必要的特征數(shù)據。我們基于 PocketFlow 框架,對人臉關鍵點定位模型進行壓縮,在保持定位精度不變的同時,大幅度地降低了計算開銷,在本身已經十分精簡的網絡上取得了 1.3 ~ 2 倍不等的加速效果,壓縮后的模型已經在實際產品中得到部署。
在人體體態(tài)識別項目中,PocketFlow 更是在滿足上線精度的要求下,使得模型推理速度有 3 倍以上的加速, 為項目的移動端落地起到了決定性的作用。
(邯鄲建站)