模型压缩高达75%,推理速度提升超20%,百度Paddle Lite v2.3正式发布
如今,諸如計算機視覺、智能語音交互等基于深度學(xué)習(xí)的AI技術(shù),在滿足日常應(yīng)用層面上已經(jīng)非常成熟。比如,人臉識別閘機在機場、地鐵、辦公樓、學(xué)校等地方隨處可見。什么都不用帶,只要刷個臉就行,方便快捷又省事!
當(dāng)有人經(jīng)過閘機時,可以在0.1-0.3秒內(nèi)完成人臉實時跟蹤,并在0.2秒內(nèi)完成高安全性的靜默活體檢測及人臉比對,如此高效的響應(yīng)速度,你知道是怎么做到的嗎?
目前深度學(xué)習(xí)在各個領(lǐng)域輕松碾壓傳統(tǒng)算法,不過真正用到實際項目中卻面臨兩大問題:計算量巨大;模型占用很高的內(nèi)存(深度學(xué)習(xí)模型可能會高達(dá)幾百M)。
為了更好地應(yīng)對這些實際業(yè)務(wù)需求,解決終端系統(tǒng)資源有限等問題,百度深度學(xué)習(xí)平臺飛槳(PaddlePaddle)對端側(cè)推理引擎Paddle Lite進(jìn)行了新一輪升級,v2.3版本正式全新上線!
Paddle Lite v2.3新功能包括:
支持“無校準(zhǔn)數(shù)據(jù)的訓(xùn)練后量化”方法,模型壓縮高達(dá)75%;
優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)和OP,ARM CPU推理速度最高提升超20%;
簡化模型優(yōu)化工具操作流程,支持一鍵操作,用戶上手更容易。
此次升級帶來了以下幾個方面的變化:
?支持“無校準(zhǔn)數(shù)據(jù)的訓(xùn)練后量化”方法?
?模型壓縮高達(dá)75%?
在手機等終端設(shè)備上部署深度學(xué)習(xí)模型,通常要兼顧推理速度和存儲空間。一方面要求推理速度越快越好,另一方面要求模型更加的輕量化。為了解決這一問題,模型量化技術(shù)尤其關(guān)鍵。
模型量化是指使用較少比特數(shù)表示神經(jīng)網(wǎng)絡(luò)的權(quán)重和激活,能夠大大降低模型的體積,解決終端設(shè)備存儲空間有限的問題,同時加快了模型推理速度。將模型中特定OP權(quán)重從FP32類型量化成INT8/16類型,可以大幅減小模型體積。經(jīng)驗證,將權(quán)重量化為INT16類型,量化模型的體積降低50%;將權(quán)重量化為INT8類型,量化模型的體積降低75%。?
Paddle Lite結(jié)合飛槳量化壓縮工具PaddleSlim,為開發(fā)者提供了三種產(chǎn)出量化模型的方法:量化訓(xùn)練、有校準(zhǔn)數(shù)據(jù)的訓(xùn)練后量化和無校準(zhǔn)數(shù)據(jù)的訓(xùn)練后量化。
其中“無校準(zhǔn)數(shù)據(jù)的訓(xùn)練后量化”是本次Paddle Lite新版本重要新增內(nèi)容之一。
圖1三種產(chǎn)出量化模型方法的處理示意圖
“無校準(zhǔn)數(shù)據(jù)的訓(xùn)練后量化”方法,在維持精度幾乎不變的情況下,不需要樣本數(shù)據(jù),對于開發(fā)者來說使用更簡便,應(yīng)用范圍也更廣泛。
當(dāng)然,如果希望同時減小模型體積和加快模型推理速度,開發(fā)者可以嘗試采用PaddleSlim“有校準(zhǔn)數(shù)據(jù)的訓(xùn)練后量化”方法和“量化訓(xùn)練”方法。
PaddleSlim除了量化功能以外,還集成了模型壓縮中常用的剪裁、蒸餾、模型結(jié)構(gòu)搜索、模型硬件搜索等方法。更多詳細(xì)的介紹,請參見Github:
https://github.com/PaddlePaddle/PaddleSlim
下面以MoblieNetV1、MoblieNetv2和ResNet50模型為例,介紹本方法所獲得的效果。
圖2 “無校準(zhǔn)數(shù)據(jù)的訓(xùn)練后量化”方法產(chǎn)出的量化模型體積對比圖
由圖2可知,INT16格式的量化模型,相比FP32,模型體積降低50%;INT8 格式的量化模型,相比FP32,模型體積降低75%。
圖3 “無校準(zhǔn)數(shù)據(jù)的訓(xùn)練后量化”方法產(chǎn)出的量化模型準(zhǔn)確率對比圖
由圖3可知,INT16格式的量化模型,相比FP32,準(zhǔn)確率不變;INT8格式的量化模型,相比FP32,準(zhǔn)確率僅微弱降低。
?ARM CPU推理速度最高提升超20%?
Paddle Lite v2.3在ARM CPU性能優(yōu)化方面的主要更新包括:
針對Kernel Size為3*3的Conv,實現(xiàn)Winograd方法,包括F(6,3)和F(2, 3)。因Winograd相比普通算法從計算量上有大幅減少,該實現(xiàn)可以明顯提升有相關(guān)OP的模型性能,比如ResNet50和SqueezeNet;
針對Conv后激活為Relu6 或是LeakyRelu的模型,添加Conv+Relu6/LeakyRelu 融合,從而可以減少單獨的激活函數(shù)需要的訪存耗時;
針對PaddlePaddle1.6 OP升級,如支持任意Padding的Conv和Pooling,Paddle Lite增加相關(guān)支持。該工作使得Tensorflow模型轉(zhuǎn)換時,一個Tensorflow Conv 對應(yīng)一個Paddle Conv, 而非Padding+Conv 兩個OP,從而可以提升Tensorflow模型的推理性能。
圖4給出了Caffe框架的MobileNetV1、MobileNetV2 和ResNet50三個模型在Paddle Lite,NCNN和MNN框架上的推理時延對比圖。
圖4 Caffe框架模型的推理時延對比
由圖4可知,Paddle Lite性能整體優(yōu)于其他框架。如ResNet50模型,在高通驍龍845上,Paddle Lite相比其他框架,比MNN快10.259%,比NCNN快17.094%。
對于ONNX 公開模型如ShuffleNet、SqueezeNet和ResNet50, 在Paddle Lite、MNN和NCNN框架進(jìn)行推理時延對比,其結(jié)果如圖5所示。
圖5 ONNX框架模型的推理時延對比
由圖5可知,Paddle Lite性能整體優(yōu)于其他框架。如ShuffleNet模型,在高通驍龍845上,Paddle Lite相比其他框架,比MNN快21.185%,比NCNN快26.36%。?
Tensorflow公開模型,比如MnasNet、 MobileNetV1和ResNet101,Paddle Lite與MNN推理框架在推理時延性能指標(biāo)上進(jìn)行對比,結(jié)果如圖6所示。
圖6 Tensorflow框架模型的推理時延對比
由圖6可知,Paddle Lite性能整體優(yōu)于MNN框架。如MnasNet模型,在高通驍龍855上,Paddle Lite比MNN快12.06%;在高通驍龍845上,Paddle Lite比MNN快18.91%;在高通驍龍835上,Paddle Lite比MNN快18.61%。
新版本更詳細(xì)的性能數(shù)據(jù),請參見GitHub的Benchmark。
?簡化模型優(yōu)化工具操作流程?
?支持一鍵操作,用戶上手更容易?
對于第三方來源(Tensorflow、Caffe、ONNX)模型,一般需要經(jīng)過兩次轉(zhuǎn)化才能獲得Paddle Lite的優(yōu)化模型。先使用x2paddle工具將第三方模型轉(zhuǎn)化為PaddlePaddle格式,再使用模型優(yōu)化工具轉(zhuǎn)換為Padde Lite支持的模型。同時,轉(zhuǎn)換后的Paddle Lite模型,通常包括模型結(jié)構(gòu)和參數(shù)兩個文件。操作繁瑣,用戶體驗不太好。
針對上述問題,Paddle Lite v2.3對原模型優(yōu)化工具model_optimize_tool 進(jìn)行了升級,推出版模型優(yōu)化工具——opt。opt包括以下三個亮點:
提供一鍵式腳本(auto_transformer.sh),支持一鍵完成從各類框架模型到Paddle Lite模型(含OP算子融合、內(nèi)存復(fù)用等優(yōu)化操作)的所有優(yōu)化處理操作;
優(yōu)化后的模型最終只生成一個.nb文件,此文件包含模型網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù)信息。同時提供加載模型.nb文件的API接口:set_model_from_file(nb_path),接口的具體內(nèi)容請見【Model Load API】。原有的模型加載方式仍然支持;
提供豐富的日志信息,比如支持查看某個模型用到哪些算子;還支持查看Paddle Lite支持哪些硬件,以及這些硬件分別支持哪些算子(如圖7所示),進(jìn)而了解Paddle Lite對模型的支持情況。
圖7 日志信息
關(guān)于opt的更詳細(xì)介紹,請參見GitHub的opt工具介紹與使用。
?其他升級?
1.文檔官網(wǎng)升級
為了提高文檔可讀性、改善文檔的視覺效果、方便用戶快速查找文檔并輕松上手使用Paddle Lite,對Paddle Lite文檔進(jìn)行了全面升級。文檔目錄清晰可見,搜索功能更強大、為用戶提供了更好的閱讀體驗。
圖8 新文檔界面示意圖
同時,Paddle Lite v2.3完善了部分文檔內(nèi)容,并新增一些使用文檔,如“有校準(zhǔn)數(shù)據(jù)的訓(xùn)練后量化方法”、“無校準(zhǔn)數(shù)據(jù)的訓(xùn)練后量化方法”使用文檔等。
2.Paddle Lite Demo倉庫的案例升級
對現(xiàn)有Paddle Lite Demo倉庫的案例進(jìn)行了內(nèi)容升級,并新增了Demo。例如在Android Demo中,新增人臉檢測(face-detection)Demo、YOLOv3目標(biāo)檢測Demo和人像分割(Human-Segment)Demo。用戶可以方便地根據(jù)Demo進(jìn)行實驗并參考實現(xiàn)新應(yīng)用的開發(fā)。另外,在Paddle Lite倉庫下的CXX Demo庫,新增了口罩識別案例,為此次疫情做些力所能及的貢獻(xiàn)。感興趣的小伙伴們可以在Paddle Lite倉庫下載口罩識別Demo,進(jìn)行實驗。
圖9 人臉檢測-Android Demo
圖10 人像分割- Android Demo
圖11 口罩識別展示
同時,為了提高API接口易用性,升級了C++ API接口和Java API接口。在Java API接口,新增設(shè)置和返回數(shù)據(jù)類型,以支持不同類型的輸入。如果您想了解更多關(guān)于Paddle Lite的相關(guān)內(nèi)容,請參閱以下文檔。
Paddle Lite的Github鏈接:
https://github.com/PaddlePaddle/Paddle-Lite
Paddle Lite的文檔鏈接:
https://paddle-lite.readthedocs.io/zh/latest/index.html
Paddle Lite Demo的鏈接:
https://github.com/PaddlePaddle/Paddle-Lite-Demo
Paddle Lite口罩識別Demo:
https://github.com/PaddlePaddle/Paddle-Lite/tree/develop/lite/demo/cxx
Benchmark:
https://paddle-lite.readthedocs.io/zh/latest/benchmark/benchmark.html
auto_transformer.sh:
https://github.com/PaddlePaddle/Paddle-Lite/blob/release/v2.3/lite/tools/auto_transform.sh
Model Load API:
https://paddle-lite.readthedocs.io/zh/latest/api_reference/cxx_api_doc.html#set-model-from-file-model-dir
opt工具介紹與使用:
https://paddle-lite.readthedocs.io/zh/latest/user_guides/model_optimize_tool.html
PaddlePaddle的Github鏈接:
https://github.com/paddlepaddle
如果使用過程中遇到任何問題,大家可通過Paddle Lite官方QQ群與開發(fā)人員進(jìn)行技術(shù)交流及問題反饋。
飛槳Paddle Lite官方QQ群(群號696965088):
????
現(xiàn)在,在「知乎」也能找到我們了
進(jìn)入知乎首頁搜索「PaperWeekly」
點擊「關(guān)注」訂閱我們的專欄吧
關(guān)于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學(xué)術(shù)平臺。如果你研究或從事 AI 領(lǐng)域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的模型压缩高达75%,推理速度提升超20%,百度Paddle Lite v2.3正式发布的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国第三大核电投资运营商,国家电投核电资
- 下一篇: 警校非公安专业服兵役2年后,退伍回来可以