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

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

2018-09-17

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


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


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


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


AI Lab 在 PocketFlow 上的研究進(jìn)展


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


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


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


PocketFlow 框架介紹


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

微信圖片_20180917220221.jpg


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


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


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

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

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

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

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

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

微信圖片_20180917220258.jpg


PocketFlow 性能展示


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


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


微信圖片_20180917220320.jpg

微信圖片_20180917220346.jpg

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


微信圖片_20180917220409.jpg

微信圖片_20180917220434.jpg

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


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

微信圖片_20180917220456.jpg


結(jié)語(yǔ)


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


參考文獻(xiàn)


[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)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話(huà)通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話(huà):010-82306118;郵箱:aet@chinaaet.com。