20+移動(dòng)端硬件,Int8極速推理,端側(cè)推理引擎Paddle Lite 2.0 正式發(fā)布
今年 8 月,飛槳(PaddlePaddle)對(duì)外發(fā)布面向終端和邊緣設(shè)備的端側(cè)推理引擎 Paddle Lite Beta 版。
經(jīng)過(guò)近兩個(gè)多月的迭代和發(fā)展,2019 Wave Summit+ 深度學(xué)習(xí)開(kāi)發(fā)者峰會(huì)上 Paddle Lite 2.0 正式版發(fā)布。
Paddle Lite 的 Github 鏈接:
https://github.com/PaddlePaddle/Paddle-Lite
Paddle Lite 致力于提供一套功能完整、易用、高性能的端側(cè)推理引擎,方便廣大開(kāi)發(fā)者將應(yīng)用部署到任何端側(cè)設(shè)備之上。
對(duì)比最初的 beta 版本,正式版在編譯、文檔、性能、硬件支持、平臺(tái)支持等方面都有了較大的改進(jìn)提升。
而飛槳團(tuán)隊(duì)也透露,將在今年內(nèi)繼續(xù)推進(jìn)若干小版本的升級(jí),并期待和歡迎開(kāi)發(fā)者加入社區(qū)并給出反饋。
在 AI 技術(shù)落地中,推理階段與實(shí)際應(yīng)用相關(guān)聯(lián),直接關(guān)系到用戶的體驗(yàn),是非常具有挑戰(zhàn)性的一環(huán)。
圖 1:典型端側(cè) AI 應(yīng)用部署場(chǎng)景
Paddle Lite 是飛槳產(chǎn)品棧中用于端側(cè)高性能輕量化 AI 應(yīng)用部署的推理引擎,核心用途是將訓(xùn)練出的模型在不同硬件平臺(tái)場(chǎng)景下快速部署,根據(jù)輸入數(shù)據(jù),執(zhí)行預(yù)測(cè)推理得到計(jì)算結(jié)果,支持實(shí)際的業(yè)務(wù)應(yīng)用。
圖 2:Paddle Lite 功能定位
Paddle Lite 自 Beta 版發(fā)布以來(lái),在如下核心功能上進(jìn)行升級(jí):
- 多框架支持:原生支持 PaddlePaddle 的模型,同時(shí)通過(guò) X2Paddle 工具,提供對(duì) TensorFlow,PyTorch 和 ONNX 模型格式的更充分的支持。
- 多硬件支持:除了 ARM CPU、移動(dòng)端 GPU、華為 NPU,新增支持 Nvidia GPU 和 X86 CPU。
- 更好的性能:更新 benchmark,提升了在 ARM CPU 上尤其是 int8 的性能。
- 更加完備的功能:支持 python API,優(yōu)化編譯流程,新增預(yù)測(cè)庫(kù)極致裁剪等功能。
- 更加完善的文檔和 demo:提供完善的文檔和多平臺(tái)的 demo,包括安卓、iOS 和樹(shù)莓派等。
多框架支持
Paddle Lite 不僅可以支持飛槳格式模型,也支持 Caffe, TensorFlow, ONNX 等第三方格式的模型,詳情可以參考 X2Paddle。
官方已經(jīng)驗(yàn)證如下主流模型的適配情況:
除了上述主流模型以外,ARM CPU FP32 新增如下 3 個(gè)模型支持:
- transformer
- facebox
- blazeface
ARM CPU INT8 量化預(yù)測(cè)支持如下模型:
- shufflenetv2
- mobilenet-ssd
- vgg16
- googlenet
- mobilenetv1
- mobilenetv2
- Resnet50
多硬件支持
在 v2.0 版本中,Paddle Lite 新增 Nvidia GPU 和 X86 CPU 兩大類硬件支持。
Nvidia GPU 方面,為了充分利用 GPU 的高性能,Paddle Lite 用 CUDA 相關(guān)軟件棧開(kāi)發(fā)了對(duì)應(yīng)的 Kernel,支持 Nvidia 多類 GPU 硬件,比如服務(wù)器端的 P4、T4,以及嵌入式端的 Jetson TX2、TX1、Nano 等。
目前 CUDA GPU 支持如下三種模型:
- Yolov3
- Alexnet
- Unet
在 X86 CPU 方面,Paddle Lite 增加了 MKL 相關(guān) Kernel,目前能夠驅(qū)動(dòng) inception v4,googlenet,resnet50 等 3 個(gè)模型的高效執(zhí)行,相應(yīng)算子對(duì)其他多數(shù) CV 類模型具有普適性。
更好的性能
ARM CPU (v7,v8) 上 float32 和 int8 兩種計(jì)算模式的預(yù)測(cè)性能均得到提升(見(jiàn)圖 3,圖 4),詳情可以參考最新的 Benchmark,鏈接如下:
https://paddlepaddle.github.io/Paddle-Lite/v2.0.0/benchmark/
圖3
圖4
測(cè)試條件:batchsize=1,單線程
更加完備的功能
①支持 python API
為了簡(jiǎn)化 ARM Linux 相關(guān)硬件上的預(yù)測(cè)部署,Paddle Lite 增加了 Python API 的預(yù)測(cè)接口,目前在樹(shù)莓派和 Jetson TX2 等卡上做了應(yīng)用驗(yàn)證。
②優(yōu)化編譯流程
Paddle Lite 支持兩種模式的編譯:
- tiny_publish:用于對(duì)部署體積有嚴(yán)格要求的平臺(tái),對(duì)應(yīng) MobileConfig 預(yù)測(cè)接口。
- full_publish:用于對(duì)部署體積無(wú)要求的平臺(tái),使用簡(jiǎn)便,對(duì)應(yīng) CxxConfig 預(yù)測(cè)接口。
編譯方面,除了 docker 以外,新增了 Linux(推薦 Ubuntu)、Mac 等編譯平臺(tái)的支持,并且修復(fù)了編譯(full_publish)時(shí)下載 git submodule 緩慢的問(wèn)題。
在統(tǒng)一的編譯腳本下,目前支持:
- android ARM CPU, GPU
- iOS
- X86
- NV GPU/CUDA
- Huawei NPU
- ARM Linux
等硬件平臺(tái)的預(yù)測(cè)庫(kù)編譯。
③預(yù)測(cè)庫(kù)極致裁剪
Paddle Lite 對(duì)現(xiàn)有移動(dòng)端預(yù)測(cè)庫(kù)進(jìn)行了進(jìn)一步壓縮,ARM V8 so 從 1.4M 降到 1.3M;此外,還發(fā)布了根據(jù)單個(gè)模型做定制裁剪的功能,即生成一個(gè)只包含該模型必需算子的預(yù)測(cè)庫(kù),效果如下圖所示:
更加完善的文檔和 DEMO
完善文檔內(nèi)容,主要包括:
- 增加支持硬件的列表,參考:
https://paddlepaddle.github.io/Paddle-Lite/v2.0.0/support_hardware/
- 增加根據(jù)模型裁剪算子的方法,參考:
https://paddlepaddle.github.io/Paddle-Lite/v2.0.0/library_tailoring/
- 更新最新 Benchmark,參考:
https://paddlepaddle.github.io/Paddle-Lite/v2.0.0/benchmark/
為了實(shí)際地展示 Paddle Lite 的部署能力,Paddle Lite 增加了 Paddle-Lite-Demo:
https://github.com/PaddlePaddle/Paddle-Lite-Demo
GitHub 官方 DEMO 庫(kù),目前包含:
- Android ARM CPU
- Android Huawei NPU
- iOS ARM CPU
- ARM Linux 樹(shù)莓派
等多種平臺(tái),包括分類、檢測(cè)等模型的功能演示。
以 ARM Linux 樹(shù)莓派為例,Paddle Lite 驅(qū)動(dòng)樹(shù)莓派 3B 調(diào)用攝像頭進(jìn)行識(shí)別任務(wù),整體效果如圖 6 所示:
圖 6
詳情請(qǐng)參考樹(shù)莓派攝像頭的購(gòu)買、安裝、配置與驗(yàn)證,以樹(shù)莓派 3B 為例:
https://github.com/PaddlePaddle/Paddle-Lite-Demo/blob/master/PaddleLite-armlinux-demo/enable-camera-on-raspberry-pi.md
如果您想了解更多關(guān)于 Paddle Lite 的相關(guān)內(nèi)容,請(qǐng)參閱以下相關(guān)鏈接。
參考鏈接:
- Paddle Lite 的 Github 鏈接:
- https://github.com/PaddlePaddle/Paddle-Lite
- Paddle Lite 的文檔鏈接:
- https://paddlepaddle.github.io/Paddle-Lite/
- Paddle Lite Demo 的鏈接:
- https://github.com/PaddlePaddle/Paddle-Lite-Demo
- PaddlePaddle 的 Github 鏈接:
- https://github.com/paddlepaddle
- 如果使用過(guò)程中遇到任何問(wèn)題,大家可通過(guò) Paddle Lite 官方 QQ 群與開(kāi)發(fā)人員進(jìn)行技術(shù)交流及問(wèn)題反饋,飛槳 Paddle Lite 官方 QQ 群(群號(hào)696965088)。