当前位置: 首页 > 科技观察

20+移动硬件,Int8速度推理,端侧推理引擎PaddleLite2.0正式发布

时间:2023-03-13 00:42:34 科技观察

今年8月,PaddlePaddle发布了面向终端和边缘设备的端侧推理引擎PaddleLite测试版。经过近两个月的迭代开发,PaddleLite2.0正式版在2019WaveSummit+深度学习开发者峰会上正式发布。PaddleLite的Github链接:https://github.com/PaddlePaddle/Paddle-LitePaddleLite致力于提供一套功能齐全、易用、高性能的端到端推理引擎,方便开发人员可以将应用程序部署到设备之上的任何端侧。与原来的测试版相比,正式版在编译、文档、性能、硬件支持、平台支持等方面都有了很大的改进。飞桨团队也透露,他们将在今年内继续升级几个小版本,看看转发并欢迎开发者加入社区并给予反馈。在AI技术的落地过程中,推理阶段与实际应用相关,直接关系到用户体验,是非常具有挑战性的部分。图1:典型端侧AI应用部署场景PaddleLite是Paddle产品栈中用于端侧高性能轻量级AI应用部署的推理引擎。核心目的是将训练好的模型快速部署到不同的硬件平台场景。根据输入数据,进行预测推理,得到计算结果,支持实际业务应用。图2:PaddleLite功能定位自Beta版本发布以来,PaddleLite在以下核心功能上进行了升级:多框架支持:原生支持PaddlePaddle模型,通过X2Paddle工具支持。多硬件支持:除ARMCPU、移动GPU、华为NPU外,新增支持NvidiaGPU和X86CPU。更好的性能:更新基准以提高ARMCPU的性能,尤其是int8。功能更完备:支持pythonAPI,优化编译流程,增加预测库极度裁剪等功能。更完整的文档和demo:提供完善的文档和多平台demo,包括Android、iOS、RaspberryPi。多框架支持PaddleLite不仅可以支持Paddle格式的模型,还可以支持Caffe、TensorFlow、ONNX等第三方格式的模型,具体请参考X2Paddle。官方验证了以下主流机型的适配:ARMCPUFP32除了上述主流机型外,新增了以下三种机型:transformerfaceboxblazefaceARMCPUINT8量化预测支持以下机型:shufflenetv2mobilenet-ssdvgg16googlenetmobilenetv1mobilenetv2Resnet50多硬件支持在v2.0版本中,PaddleLite增加了两种硬件支持,NvidiaGPU和X86CPU。在NvidiaGPU方面,为了充分利用GPU的高性能,PaddleLite开发了相应的Kernel,带有CUDA相关的软件栈,在服务器端支持Nvidia各类型的GPU硬件,如P4、T4等,以及嵌入式端的JetsonTX2、TX1、Nano等。目前CUDAGPU支持以下三种模型:Yolov3AlexnetUnet在X86CPU方面,PaddleLite加入了MKL相关的Kernels,目前可以驱动inceptionv4、googlenet、resnet50等三种模型的高效执行。相应的算子适用于大多数其他CV类模型是通用的。更好的性能改进了ARMCPU(v7、v8)上float32和int8计算模式的预测性能(见图3、图4)。详情请参考最新的Benchmark,链接如下:https://paddlepaddle。github.io/Paddle-Lite/v2.0.0/benchmark/图3图4测试条件:batchsize=1,单线程功能更全①支持pythonAPI为了简化在ARMLinux相关硬件上的预测部署,PaddleLite增加PythonAPI的预测接口已经在RaspberryPi、JetsonTX2等卡上进行了验证。②优化编译流程PaddleLite支持两种编译模式:tiny_publish:用于对部署量要求严格的平台,对应MobileConfig预测接口。full_publish:用于不需要部署量的平台,简单易用,对应CxxConfig预测接口。编译方面,除了docker之外,增加了对Linux(推荐Ubuntu)、Mac等编译平台的支持,修复了编译(full_publish)时git子模块下载缓慢的问题。统一编译脚本下,目前支持:androidARMCPU、GPUiOSX86NVGPU/CUDAHuaweiNPUARMLinux等硬件平台预测库编译。③预测库的极致剪裁PaddleLite进一步压缩了现有的移动端预测库,ARMV8因此从1.4M压缩到1.3M;此外,还发布了基于单个模型的自定义裁剪功能,即生成一个只包含模型所需算子的预测库的模型,效果如下图:更完整的文档和DEMO完善了文档内容,主要包括:添加支持的硬件列表,参考:https://paddlepaddle.github.io/Paddle-Lite/v2.0.0/support_hardware/添加operator根据裁剪的方法模型,参考:https://paddlepaddle.github.io/Paddle-Lite/v2.0.0/library_tailoring/更新最新的Benchmark,参考:https://paddlepaddle.github。io/Paddle-Lite/v2.0.0/benchmark/为了实际演示PaddleLite的部署能力,PaddleLite增加了Paddle-Lite-Demo:https://github.com/PaddlePaddle/Paddle-Lite-DemoGitHub官方DEMO库,目前包括:AndroidARMCPUAndroidHuaweiNPUiOSARMCPUARMLinuxRaspberryPi等平台,包括分类和检测模型的功能演示。以ARMLinux树莓派为例,PaddleLite驱动树莓派3B调用摄像头执行识别任务。以树莓派3B为例:https://github.com/PaddlePaddle/Paddle-Lite-Demo/blob/master/PaddleLite-armlinux-demo/enable-camera-on-raspberry-pi.md如果你想知道更多关于PaddleLite的相关内容,请参考以下相关链接。参考链接:PaddleLite的Github链接:https://github.com/PaddlePaddle/Paddle-LitePaddleLite的文档链接:https://paddlepaddle.github.io/Paddle-Lite/PaddleLite演示链接:https://github.com/PaddlePaddle/Paddle-Lite-DemoPaddlePaddle的Github链接:https://github.com/paddlepaddle如果您在使用过程中遇到任何问题,可以通过PaddleLite官方QQ群与开发者交流和问题反馈,PaddleLite官方QQ群(群号696965088)。