服务器部署 — Paddle Inference
Paddle Inference 是飞桨的原生推理库, 作用于服务器端和云端,提供高性能的推理能力。
由于能力直接基于飞桨的训练算子,因此Paddle Inference 可以通用支持飞桨训练出的所有模型。
Paddle Inference 功能特性丰富,性能优异,针对不同平台不同的应用场景进行了深度的适配优化,做到高吞吐、低时延,保证了飞桨模型在服务器端即训即用,快速部署。
一些常见的文档链接如下:
完整使用文档位于:Paddle Inference文档
代码示例位于inference demo
与主框架model.predict区别
飞桨推理产品paddle inference和主框架的Model.predict均可实现推理预测,Paddle Inference 是飞桨的原生推理库, 作用于服务器端和云端,提供高性能的推理能力,主框架的Model 对象是一个具备训练、测试、推理的神经网络。相比于Model.predict,inference可使用MKLDNN、CUDNN、TensorRT进行预测加速,同时支持用 X2Paddle 工具从第三方框架(TensorFlow、Pytorh 、 Caffe 等)产出的模型,可联动PaddleSlim,支持加载量化、裁剪和蒸馏后的模型部署。Model.predict适用于训练好的模型直接进行预测,paddle inference适用于对推理性能、通用性有要求的用户,针对不同平台不同的应用场景进行了深度的适配优化,保证模型在服务器端即训即用,快速部署。
预测流程图
高性能实现
内存/显存复用提升服务吞吐量
在推理初始化阶段,对模型中的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
微信群: 部署交流群
微信公众号 官方技术交流微信群