服务器部署 — Paddle Inference

Paddle Inference 是飞桨的原生推理库, 作用于服务器端和云端,提供高性能的推理能力。

由于能力直接基于飞桨的训练算子,因此Paddle Inference 可以通用支持飞桨训练出的所有模型。

Paddle Inference 功能特性丰富,性能优异,针对不同平台不同的应用场景进行了深度的适配优化,做到高吞吐、低时延,保证了飞桨模型在服务器端即训即用,快速部署。

一些常见的文档链接如下:

与主框架model.predict区别

飞桨推理产品paddle inference和主框架的Model.predict均可实现推理预测,Paddle Inference 是飞桨的原生推理库, 作用于服务器端和云端,提供高性能的推理能力,主框架的Model 对象是一个具备训练、测试、推理的神经网络。相比于Model.predict,inference可使用MKLDNN、CUDNN、TensorRT进行预测加速,同时支持用 X2Paddle 工具从第三方框架(TensorFlow、Pytorh 、 Caffe 等)产出的模型,可联动PaddleSlim,支持加载量化、裁剪和蒸馏后的模型部署。Model.predict适用于训练好的模型直接进行预测,paddle inference适用于对推理性能、通用性有要求的用户,针对不同平台不同的应用场景进行了深度的适配优化,保证模型在服务器端即训即用,快速部署。

预测流程图

../../../_images/inference.png

高性能实现

内存/显存复用提升服务吞吐量

在推理初始化阶段,对模型中的OP输出Tensor 进行依赖分析,将两两互不依赖的Tensor在内存/显存空间上进行复用,进而增大计算并行量,提升服务吞吐量。

细粒度OP横向纵向融合减少计算量

在推理初始化阶段,按照已有的融合模式将模型中的多个OP融合成一个OP,减少了模型的计算量的同时,也减少了 Kernel Launch的次数,从而能提升推理性能。目前Paddle Inference支持的融合模式多达几十个。

内置高性能的CPU/GPU Kernel

内置同Intel、Nvidia共同打造的高性能kernel,保证了模型推理高性能的执行。

多功能集成

集成TensorRT加快GPU推理速度

Paddle Inference采用子图的形式集成TensorRT,针对GPU推理场景,TensorRT可对一些子图进行优化,包括OP的横向和纵向融合,过滤冗余的OP,并为OP自动选择最优的kernel,加快推理速度。

集成oneDNN CPU推理加速引擎

一行代码开始oneDNN加速,快捷高效。

支持PaddleSlim量化压缩模型的部署

PaddleSlim是飞桨深度学习模型压缩工具,Paddle Inference可联动PaddleSlim,支持加载量化、裁剪和蒸馏后的模型并部署,由此减小模型存储空间、减少计算占用内存、加快模型推理速度。其中在模型量化方面,Paddle Inference在X86 CPU上做了深度优化,常见分类模型的单线程性能可提升近3倍,ERNIE模型的单线程性能可提升2.68倍。

支持X2Paddle转换得到的模型

除支持飞桨训练的模型外,也支持用 X2Paddle 工具从第三方框架(比如 TensorFlow、Pytorch 或者 Caffe 等)产出的模型。

多场景适配

主流软硬件环境兼容适配

支持服务器端X86 CPU、NVIDIA GPU芯片,兼容Linux/Mac/Windows系统,同时对飞腾、鲲鹏、曙光、昆仑等国产CPU/NPU进行适配。。支持所有飞桨训练产出的模型,完全做到即训即用。

主流、国产操作系统全适配

适配主流操作系统Linux、Windows、MacOS,同时适配麒麟OS、统信OS、普华OS、中科方德等国产操作系统

多语言接口支持

支持C++、Python、C、Go、Java和R语言API,对于其他语言,提供了ABI稳定的C API,提供配套的教程、API文档及示例。

交流与反馈

  • 欢迎您通过Github Issues来提交问题、报告与建议

  • 微信公众号:飞桨PaddlePaddle

  • 微信群: 部署交流群

服务器部署 — Paddle Inference - 图2     服务器部署 — Paddle Inference - 图3

   微信公众号                官方技术交流微信群