20+移動端硬件,Int8推理,端側推理引擎Paddle Lite 2.0 發佈

機器之心發佈

今年 8 月,飛槳(PaddlePaddle)對外發布面向終端和邊緣設備的端側推理引擎 Paddle Lite Beta 版。經過近兩個多月的迭代和發展,2019 Wave Summit+ 深度學習開發者峰會上 Paddle Lite 2.0 正式版發佈。

Paddle Lite 的 Github 鏈接:

https://github.com/PaddlePaddle/Paddle-Lite

Paddle Lite 致力於提供一套功能完整、易用、高性能的端側推理引擎,方便廣大開發者將應用部署到任何端側設備之上。對比最初的 beta 版本,正式版在編譯、文檔、性能、硬件支持、平臺支持等方面都有了較大的改進提升。

而飛槳團隊也透露,將在今年內繼續推進若干小版本的升級,並期待和歡迎開發者加入社區並給出反饋。

在 AI 技術落地中,推理階段與實際應用相關聯,直接關係到用戶的體驗,是非常具有挑戰性的一環。

20+移動端硬件,Int8推理,端側推理引擎Paddle Lite 2.0 發佈

圖 1 .典型端側 AI 應用部署場景

Paddle Lite 是飛槳產品棧中用於端側高性能輕量化 AI 應用部署的推理引擎,核心用途是將訓練出的模型在不同硬件平臺場景下快速部署,根據輸入數據,執行預測推理得到計算結果,支持實際的業務應用。

20+移動端硬件,Int8推理,端側推理引擎Paddle Lite 2.0 發佈

圖 2 . Paddle Lite 功能定位

Paddle Lite 自 Beta 版發佈以來,在如下核心功能上進行升級:

  • 多框架支持:原生支持 PaddlePaddle 的模型,同時通過 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。官方已經驗證如下主流模型的適配情況:

20+移動端硬件,Int8推理,端側推理引擎Paddle Lite 2.0 發佈

除了上述主流模型以外,ARM CPU FP32 新增如下 3 個模型支持:

-transformer

-facebox

-blazeface

ARM CPU INT8 量化預測支持如下模型:

-shufflenetv2

-mobilenet-ssd

-vgg16

-googlenet

-mobilenetv1

-mobilenetv2

-Resnet50


多硬件支持

在 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 支持如下三種模型:

-Yolov3

-Alexnet

-Unet

在 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/

20+移動端硬件,Int8推理,端側推理引擎Paddle Lite 2.0 發佈

圖3

20+移動端硬件,Int8推理,端側推理引擎Paddle Lite 2.0 發佈

圖4

測試條件:batchsize=1,單線程

更加完備的功能

  • 支持 python API

為了簡化 ARM Linux 相關硬件上的預測部署,Paddle Lite 增加了 Python API 的預測接口,目前在樹莓派和 Jetson TX2 等卡上做了應用驗證。

  • 優化編譯流程

Paddle Lite 支持兩種模式的編譯:

  1. tiny_publish:用於對部署體積有嚴格要求的平臺,對應 MobileConfig 預測接口。
  2. 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;此外,還發布了根據單個模型做定製裁剪的功能,即生成一個只包含該模型必需算子的預測庫,效果如下圖所示:

20+移動端硬件,Int8推理,端側推理引擎Paddle Lite 2.0 發佈

圖5

更加完善的文檔和 DEMO

完善文檔內容,主要包括

  • 增加支持硬件的列表,參考: https://paddlepaddle.github.io/Paddle-Lite/v2.0.0/support_hardware/
  • 增加根據模型裁剪算子的方法,參考: https://paddlepaddle.github.io/Paddle-Lite/v2.0.0/library_tailoring/
  • 更新最新 Benchmark,參考: https://paddlepaddle.github.io/Paddle-Lite/v2.0.0/benchmark/

為了實際地展示 Paddle Lite 的部署能力,Paddle Lite 增加了 Paddle-Lite-Demo (https://github.com/PaddlePaddle/Paddle-Lite-Demo)GitHub 官方 DEMO 庫,目前包含

-Android ARM CPU

-Android Huawei NPU

-iOS ARM CPU

-ARM Linux 樹莓派

等多種平臺,包括分類、檢測等模型的功能演示。

以 ARM Linux 樹莓派為例,Paddle Lite 驅動樹莓派 3B 調用攝像頭進行識別任務,整體效果如圖 6 所示:

20+移動端硬件,Int8推理,端側推理引擎Paddle Lite 2.0 發佈

圖 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

5.如果使用過程中遇到任何問題,大家可通過Paddle Lite官方QQ群與開發人員進行技術交流及問題反饋,飛槳Paddle Lite官方QQ群(群號696965088)。


分享到:


相關文章: