《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > 業(yè)界 | 騰訊 AI Lab提出自動化模型壓縮框架PocketFlow:將深度學(xué)習(xí)裝進口袋

業(yè)界 | 騰訊 AI Lab提出自動化模型壓縮框架PocketFlow:將深度學(xué)習(xí)裝進口袋

2018-09-17

據(jù)機器之心了解,騰訊 AI Lab 機器學(xué)習(xí)中心今日宣布成功研發(fā)自動化深度學(xué)習(xí)模型壓縮框架——PocketFlow,并即將在近期發(fā)布開源代碼。據(jù)介紹,這是一款面向移動端 AI 開發(fā)者的自動模型壓縮框架,集成了當(dāng)前主流(包括騰訊 AI Lab 自研)的模型壓縮與訓(xùn)練算法,結(jié)合自研超參數(shù)優(yōu)化組件實現(xiàn)了全程自動化托管式的模型壓縮與加速。開發(fā)者無需了解具體算法細(xì)節(jié),即可快速地將 AI 技術(shù)部署到移動端產(chǎn)品上,實現(xiàn)用戶數(shù)據(jù)的本地高效處理。目前該框架正在為騰訊的多項移動端業(yè)務(wù)提供模型壓縮與加速的技術(shù)支持,在多款手機 APP 中得到應(yīng)用。值得一提的是,不久之前 MIT 韓松等人發(fā)表論文,提出了用于移動端模型自動壓縮與加速的AutoML方法AMC。


隨著 AI 技術(shù)的飛速發(fā)展,越來越多的公司希望在自己的移動端產(chǎn)品中注入 AI 能力,以優(yōu)化用戶使用體驗。以深度學(xué)習(xí)為代表的 AI 技術(shù)極大地提升了圖像理解、語音識別等諸多應(yīng)用領(lǐng)域中的識別精度,但是主流的深度學(xué)習(xí)模型往往對計算資源要求較高,難以直接部署到消費級移動設(shè)備中。常用的解決方案是將復(fù)雜的深度學(xué)習(xí)模型部署在云端,移動端將待識別的數(shù)據(jù)上傳至云端,再等待云端返回識別結(jié)果,但這對網(wǎng)絡(luò)傳輸速度的要求較高,在網(wǎng)絡(luò)覆蓋不佳地區(qū)的用戶使用體驗較差,同時數(shù)據(jù)上傳至云端后的隱私性也難以保證。


在這種情況下,眾多模型壓縮與加速算法應(yīng)運而生,能夠在較小的精度損失(甚至無損)下,有效提升 CNN 和 RNN 等網(wǎng)絡(luò)結(jié)構(gòu)的計算效率,從而使得深度學(xué)習(xí)模型在移動端的部署成為可能。但是,如何根據(jù)實際應(yīng)用場景,選擇合適的模型壓縮與加速算法以及相應(yīng)的超參數(shù)取值,往往需要較多的專業(yè)知識和實踐經(jīng)驗,這無疑提高了這項技術(shù)對于一般開發(fā)者的使用門檻。


在此背景下,騰訊 AI Lab 機器學(xué)習(xí)中心研發(fā)了 PocketFlow 開源框架,以實現(xiàn)自動化的深度學(xué)習(xí)模型壓縮與加速,助力 AI 技術(shù)在更多移動端產(chǎn)品中的廣泛應(yīng)用。通過集成多種深度學(xué)習(xí)模型壓縮算法,并創(chuàng)新性地引入超參數(shù)優(yōu)化組件,極大地提升了模型壓縮技術(shù)的自動化程度。開發(fā)者無需介入具體的模型壓縮算法及其超參數(shù)取值的選取,僅需指定設(shè)定期望的性能指標(biāo),即可通過 PocketFlow 得到符合需求的壓縮模型,并快速部署到移動端應(yīng)用中。


AI Lab 在 PocketFlow 上的研究進展


據(jù)了解,近期騰訊 AI Lab 機器學(xué)習(xí)中心在深度學(xué)習(xí)模型壓縮以及超參數(shù)優(yōu)化算法方面持續(xù)投入,并取得了諸多研究進展。在模型壓縮算法方面,團隊提出了一種基于判別力最大化準(zhǔn)則的通道剪枝算法,在性能基本無損的前提下可以大幅度降低 CNN 網(wǎng)絡(luò)模型的計算復(fù)雜度,相關(guān)論文已被 NIPS 2018 接收 [1]。該算法在訓(xùn)練過程中引入多個額外的損失項,以提升 CNN 網(wǎng)絡(luò)中各層的判別力,然后逐層地基于分類誤差與重構(gòu)誤差最小化的優(yōu)化目標(biāo)進行通道剪枝,去除判別力相對較小的冗余通道,從而實現(xiàn)模型的無損壓縮。在超參數(shù)優(yōu)化算法方面,團隊研發(fā)了 AutoML 自動超參數(shù)優(yōu)化框架,集成了包括高斯過程(Gaussian Processes, GP)和樹形結(jié)構(gòu) Parzen 估計器(Tree-structured Parzen Estimator, TPE)等在內(nèi)的多種超參數(shù)優(yōu)化算法,通過全程自動化托管解決了人工調(diào)參耗時耗力的問題,大幅度提升了算法人員的開發(fā)效率。


另一方面,考慮到深度學(xué)習(xí)模型的訓(xùn)練周期普遍較長,團隊對基于 TensorFlow 的多機多卡訓(xùn)練過程進行優(yōu)化,降低分布式優(yōu)化過程中的梯度通信耗時,研發(fā)了名為 TF-Plus 的分布式優(yōu)化框架,僅需十幾行的代碼修改即可將針對單個 GPU 的訓(xùn)練代碼擴展為多機多卡版本,并取得接近線性的加速比。此外,團隊還提出了一種誤差補償?shù)牧炕S機梯度下降算法,通過引入量化誤差的補償機制加快模型訓(xùn)練的收斂速度,能夠在沒有性能損失的前提下實現(xiàn)一到兩個數(shù)量級的梯度壓縮,降低分布式優(yōu)化中的梯度通信量,從而加快訓(xùn)練速度,相關(guān)論文發(fā)表于 ICML 2018 [2]。


在 PocketFlow 框架的開發(fā)過程中,團隊加入了對上述多個自研算法的支持,并且有效降低了模型壓縮的精度損失,提升了模型的訓(xùn)練效率,并極大地提高了超參數(shù)調(diào)節(jié)方面的自動化程度。


PocketFlow 框架介紹


PocketFlow 框架主要由兩部分組件構(gòu)成,分別是模型壓縮/加速算法組件和超參數(shù)優(yōu)化組件,具體結(jié)構(gòu)如下圖所示。

微信圖片_20180917220221.jpg


開發(fā)者將未壓縮的原始模型作為 PocketFlow 框架的輸入,同時指定期望的性能指標(biāo),例如模型的壓縮和/或加速倍數(shù);在每一輪迭代過程中,超參數(shù)優(yōu)化組件選取一組超參數(shù)取值組合,之后模型壓縮/加速算法組件基于該超參數(shù)取值組合,對原始模型進行壓縮,得到一個壓縮后的候選模型;基于對候選模型進行性能評估的結(jié)果,超參數(shù)優(yōu)化組件調(diào)整自身的模型參數(shù),并選取一組新的超參數(shù)取值組合,以開始下一輪迭代過程;當(dāng)?shù)K止時,PocketFlow 選取最優(yōu)的超參數(shù)取值組合以及對應(yīng)的候選模型,作為最終輸出,返回給開發(fā)者用作移動端的模型部署。


具體地,PocketFlow 通過下列各個算法組件的有效結(jié)合,實現(xiàn)了精度損失更小、自動化程度更高的深度學(xué)習(xí)模型的壓縮與加速: 


a) 通道剪枝(channel pruning)組件:在 CNN 網(wǎng)絡(luò)中,通過對特征圖中的通道維度進行剪枝,可以同時降低模型大小和計算復(fù)雜度,并且壓縮后的模型可以直接基于現(xiàn)有的深度學(xué)習(xí)框架進行部署。在 CIFAR-10 圖像分類任務(wù)中,通過對 ResNet-56 模型進行通道剪枝,可以實現(xiàn) 2.5 倍加速下分類精度損失 0.4%,3.3 倍加速下精度損失 0.7%。

b) 權(quán)重稀疏化(weight sparsification)組件:通過對網(wǎng)絡(luò)權(quán)重引入稀疏性約束,可以大幅度降低網(wǎng)絡(luò)權(quán)重中的非零元素個數(shù);壓縮后模型的網(wǎng)絡(luò)權(quán)重可以以稀疏矩陣的形式進行存儲和傳輸,從而實現(xiàn)模型壓縮。對于 MobileNet 圖像分類模型,在刪去 50% 網(wǎng)絡(luò)權(quán)重后,在 ImageNet 數(shù)據(jù)集上的 Top-1 分類精度損失僅為 0.6%。

c) 權(quán)重量化(weight quantization)組件:通過對網(wǎng)絡(luò)權(quán)重引入量化約束,可以降低用于表示每個網(wǎng)絡(luò)權(quán)重所需的比特數(shù);團隊同時提供了對于均勻和非均勻兩大類量化算法的支持,可以充分利用 ARM 和 FPGA 等設(shè)備的硬件優(yōu)化,以提升移動端的計算效率,并為未來的神經(jīng)網(wǎng)絡(luò)芯片設(shè)計提供軟件支持。以用于 ImageNet 圖像分類任務(wù)的 ResNet-18 模型為例,在 8 比特定點量化下可以實現(xiàn)精度無損的 4 倍壓縮。

d) 網(wǎng)絡(luò)蒸餾(network distillation)組件:對于上述各種模型壓縮組件,通過將未壓縮的原始模型的輸出作為額外的監(jiān)督信息,指導(dǎo)壓縮后模型的訓(xùn)練,在壓縮/加速倍數(shù)不變的前提下均可以獲得 0.5%-2.0% 不等的精度提升。

e) 多 GPU 訓(xùn)練(multi-GPU training)組件:深度學(xué)習(xí)模型訓(xùn)練過程對計算資源要求較高,單個 GPU 難以在短時間內(nèi)完成模型訓(xùn)練,因此團隊提供了對于多機多卡分布式訓(xùn)練的全面支持,以加快使用者的開發(fā)流程。無論是基于 ImageNet 數(shù)據(jù)的 Resnet-50 圖像分類模型還是基于 WMT14 數(shù)據(jù)的 Transformer 機器翻譯模型,均可以在一個小時內(nèi)訓(xùn)練完畢。

f) 超參數(shù)優(yōu)化(hyper-parameter optimization)組件:多數(shù)開發(fā)者對模型壓縮算法往往不甚了解,但超參數(shù)取值對最終結(jié)果往往有著巨大的影響,因此團隊引入了超參數(shù)優(yōu)化組件,采用了包括強化學(xué)習(xí)等算法以及 AI Lab 自研的 AutoML 自動超參數(shù)優(yōu)化框架來根據(jù)具體性能需求,確定最優(yōu)超參數(shù)取值組合。例如,對于通道剪枝算法,超參數(shù)優(yōu)化組件可以自動地根據(jù)原始模型中各層的冗余程度,對各層采用不同的剪枝比例,在保證滿足模型整體壓縮倍數(shù)的前提下,實現(xiàn)壓縮后模型識別精度的最大化。

微信圖片_20180917220258.jpg


PocketFlow 性能展示


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


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


微信圖片_20180917220320.jpg

微信圖片_20180917220346.jpg

相比于費時費力的人工調(diào)參,PocketFlow 框架中的 AutoML 自動超參數(shù)優(yōu)化組件僅需 10 余次迭代就能達到與人工調(diào)參類似的性能,在經(jīng)過 100 次迭代后搜索得到的超參數(shù)組合可以降低約 0.6% 的精度損失;通過使用超參數(shù)優(yōu)化組件自動地確定網(wǎng)絡(luò)中各層權(quán)重的量化比特數(shù),PocketFlow 在對用于 ImageNet 圖像分類任務(wù)的 ResNet-18 模型進行壓縮時,取得了一致性的性能提升;當(dāng)平均量化比特數(shù)為 4 比特時,超參數(shù)優(yōu)化組件的引入可以將分類精度從 63.6% 提升至 68.1%(原始模型的分類精度為 70.3%)。


微信圖片_20180917220409.jpg

微信圖片_20180917220434.jpg

PocketFlow 助力移動端業(yè)務(wù)落地


據(jù)了解,在騰訊公司內(nèi)部,PocketFlow 框架正在為多項移動端實際業(yè)務(wù)提供了模型壓縮與加速的技術(shù)支持。例如,在手機拍照 APP 中,人臉關(guān)鍵點定位模型是一個常用的預(yù)處理模塊,通過對臉部的百余個特征點(如眼角、鼻尖等)進行識別與定位,可以為后續(xù)的人臉識別、智能美顏等多個應(yīng)用提供必要的特征數(shù)據(jù)。團隊基于 PocketFlow 框架,對人臉關(guān)鍵點定位模型進行壓縮,在保持定位精度不變的同時,大幅度地降低了計算開銷,在不同的移動處理器上取得了 25%-50% 不等的加速效果,壓縮后的模型已經(jīng)在實際產(chǎn)品中得到部署。

微信圖片_20180917220456.jpg


結(jié)語


深度學(xué)習(xí)模型的壓縮與加速是當(dāng)前學(xué)術(shù)界的研究熱點之一,同時在工業(yè)界中也有著廣泛的應(yīng)用前景。騰訊 AI Lab 表示,隨著 PocketFlow 的推出,開發(fā)者無需了解模型壓縮算法的具體細(xì)節(jié),也不用關(guān)心各個超參數(shù)的選擇與調(diào)優(yōu),即可基于這套自動化框架,快速得到可用于移動端部署的精簡模型,從而為 AI 能力在更多移動端產(chǎn)品中的應(yīng)用鋪平了道路。


參考文獻


[1] Zhuangwei Zhuang, Mingkui Tan, Bohan Zhuang, Jing Liu, Jiezhang Cao, Qingyao Wu, Junzhou Huang, Jinhui Zhu,「Discrimination-aware Channel Pruning for Deep Neural Networks", In Proc. of the 32nd Annual Conference on Neural Information Processing Systems, NIPS '18, Montreal, Canada, December 2018.

[2] Jiaxiang Wu, Weidong Huang, Junzhou Huang, Tong Zhang,「Error Compensated Quantized SGD and its Applications to Large-scale Distributed Optimization」, In Proc. of the 35th International Conference on Machine Learning, ICML’18, Stockholm, Sweden, July 2018.


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。