Paddle-Lite的技术特点
Paddle-Lite是百度公司推出的轻量级推理框架,其基本特点如下:
01
轻量级:执行阶段和计算优化阶段实现良好解耦拆分,移动端可以直接部署执行阶段,无任何第三方依赖。包含完整的80个Op加85个Kernel的动态库,对于ARMV7只有800K,ARMV8下为1.3M,并可以裁剪到更低。在应用部署时,载入模型即可直接预测,无需额外分析优化。
02
多硬件支持:Paddle-Lite 架构已经验证和完整支持从Mobile到Server多种硬件的支持需求,包括ARM CPU, ARM GPU, Huawei NPU, Intel X86 CPU, NV GPU等。得益于对不同硬件适度的抽象,在Paddle-Lite 框架本身清晰的同时支持不同硬件的特殊调度需求,使得Paddle Lite架构在框架的清晰程度和硬件的特定调度优化上达到很好的平衡,比如Nvidia GPU上复杂的stream, event分配,在 Paddle-Lite 中可以清晰表示。
03
高性能:高性能来源于两方面,一是Kernel优化;二是框架执行。Kernel 方面,我们对相应硬件上的 Kernel 通过指令集、操作熔合、算法改写等方式进行了深入优化。
04
框架执行方面,通过简化Op和Kernel的功能,使得执行期的框架开销极低;此外,框架极大的灵活性可以支持各种硬件的特定调度优化以提升整体效率。
05
混合调度:Paddle-Lite支持系统可见任意硬件的混合调度,目前已经支持ARM CPU和ARM GPU的Kernel自动混合调度,并验证了X86 CPU和Nvidia GPU 间的混合调度。
Paddle-Lite的框架
Paddle-Lite是轻量级推理引擎,全面硬件支持(ARM,GPU,NPU,FPGA),多种操作系统支持(Windows,iOS,Linux),多训练架构支持(TensorFlow,Caffe,PaddlePaddle,ONNX),以及全面模型支持。
英特尔® Cyclone® V片上系统
Cyclone® V片上系统(SoC)由单核/双核Cortex-A9硬核系统(HPS)和FPGA两部分组成,其硬件框图如下。
下图是基于Cyclone® V的测试板
Paddle-Lite环境配置
编译环境要求
01
gcc、g++、git、make、wget、python、pip、python-dev、patchelf
02
cmake(建议使用3.10或以上版本)
安装软件部分以Ubuntu为例,其他Linux发行版类似。
安装基本的软件:
安装ARM GCC(GCC 5.4.0以上)工具链:
安装CMake,3.10以上版本:
Paddle-Lite编译
下载Paddle-Lite源码 并切换到release分支,如develop:
编译Paddle-Lite Linux(arm)预测库 (armv7hf, gcc编译):
最终的编译结果位于build.lite.linux.armv7hf.gcc下:
Paddle-Lite接口测试
Linux(ARM) demo示例基于C++ API开发,调用Paddle-Lite C++ API包括以下五步:
// 引入C++ API
// 1. 设置MobileConfig
// 2. 创建PaddlePredictor
// 3. 设置输入数据
// 4. 执行预测
// 5. 获取输出数据
结语
在Cyclone® V平台上,Paddle-Lite支持ARM和FPGA的混合调度。针对如卷积,池化,全连接等复杂的运算可以部署到FPGA上执行,其它的算子可以在ARM上实现并执行。
全部0条评论
快来发表一下你的评论吧 !