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