Paddle Inference推理部署
Paddle Inference推理部署
飞桨(PaddlePaddle)是集深度学习核心框架、工具组件和服务平台为一体的技术先进、功能完备的开源深度学习平台,已被中国企业广泛使用,深度契合企业应用需求,拥有活跃的开发者社区生态。提供丰富的官方支持模型集合,并推出全类型的高性能部署和集成方案供开发者使用。
技术优势
- 开发便捷的深度学习框架
飞桨深度学习框架基于编程一致的深度学习计算抽象以及对应的前后端设计,拥有易学易用的前端编程界面和统一高效的内部核心架构,对普通开发者而言更容易上手并具备领先的训练性能。飞桨自然完备兼容命令式和声明式两种编程范式,并可以一行命令实现动静转换,兼顾灵活开发、高效训练和便捷部署三大特点。此外,飞桨深度学习框架还提供了领先的深度学习自动化技术,网络结构自动设计的模型效果可以媲美人类专家设计的模型效果。
- 超大规模深度学习模型训练技术
飞桨突破了超大规模深度学习模型训练技术,领先其它框架实现了千亿特征、万亿参数、数百节点并行训练的能力,解决了超大规模深度学习模型的在线学习和部署难题,实现了超万亿规模参数模型的实时更新。此外,飞桨还覆盖支持包括模型并行、流水线并行在内的最广泛并行模式和加速策略,引领了大规模分布式训练技术的发展趋势。
- 多端多平台部署的高性能推理引擎
飞桨对推理部署提供全方位支持,可以将模型便捷地部署到云端服务器、移动端以及边缘端等不同平台设备上,并拥有全面领先的推理速度,同时兼容其它开源框架训练的模型。飞桨推理引擎支持广泛的AI芯片,特别是对国产硬件做到了最全面的适配。
- 产业级开源模型库
飞桨建设了大规模的官方模型库,算法总数达到140多个,包含经过产业实践长期打磨的主流模型以及在国际竞赛中的夺冠模型;同时提供面向语义理解、图像分类、目标检测、图像分割、语音合成等场景的多个端到端开发套件,满足企业低成本开发和快速集成的需求。
开发套件
ERNIE
飞桨语义理解套件, 基于持续学习语义理解预训练框架,使用多任务学习增量式构建预训练任务,支持各类训练任务的Fine-tuning,保证极速推理的Fast-Inference API,兼具灵活部署的ERNIE Service和具备轻量方案的ERNIE Tiny系列工具集。
PaddleClas
飞桨图像分类套件,目的是为工业界和学术界提供便捷易用的图像分类任务预训练模型和工具集,打通模型开发、训练、压缩、部署全流程,辅助其它高层视觉任务组网并提升模型效果,助力开发者训练更好的图像分类模型和应用落地。
PaddleSeg
飞桨图像分割套件PaddleSeg覆盖了U-Net、DeepLabv3+、ICNet、PSPNet和HRNet等主流的分割模型。通过模块化的设计,以配置化方式驱动模型组合,帮助开发者更便捷地完成从训练到部署的全流程图像分割应用。
PaddleDetection
飞桨目标检测开发套件,旨在帮助开发者更快更好地完成检测模型的训练、精度速度优化到部署全流程。PaddleDetection以模块化的设计实现了多种主流目标检测算法,并且提供了丰富的数据增强、网络组件、损失函数等模块,集成了模型压缩和跨平台高性能部署能力。目前基于PaddleDetection已经完成落地的项目涉及工业质检、遥感图像检测、无人巡检等多个领域。
PaddleOCR
飞桨文字识别套件,旨在打造一套丰富、领先、实用的文字检测、识别模型/工具库,开源了超轻量级中文OCR模型和通用中文OCR模型,提供了数十种文本检测、识别模型训练方法,助力使用者训练出更好的模型,并应用落地。
ElasticCTR
飞桨弹性计算推荐套件,可以实现分布式训练CTR预估任务和基于Paddle Serving的在线个性化推荐服务。Paddle Serving服务化部署框架具有良好的易用性、灵活性和高性能,可以提供端到端的CTR训练和部署解决方案。ElasticCTR具备产业实践基础、弹性调度能力、高性能和工业级部署等特点。
PLSC
飞桨海量类别分类套件,为用户提供了大规模分类任务从训练到部署的全流程解决方案。提供简洁易用的高层API,通过数行代码即可实现千万类别分类神经网络的训练,并提供快速部署模型的能力。
Parakeet
飞桨语音合成套件,提供了灵活、高效、先进的文本到语音合成工具,帮助开发者更便捷高效地完成语音合成模型的开发和应用。
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适用于对推理性能、通用性有要求的用户,针对不同平台不同的应用场景进行了深度的适配优化,保证模型在服务器端即训即用,快速部署。
预测流程图
高性能实现
内存/显存复用提升服务吞吐量
在推理初始化阶段,对模型中的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文档及示例。
飞桨推理产品简介
作为飞桨生态重要的一部分,飞桨提供了多个推理产品,完整承接深度学习模型应用的最后一公里。
整体上分,推理产品主要包括如下子产品
各产品在推理生态中的关系如下
用户使用飞桨推理产品的工作流如下
- 获取一个飞桨的推理模型,其中有两种方法
- 利用飞桨训练得到一个推理模型
- 用 X2Paddle 工具从第三方框架(比如 TensorFlow 或者 Caffe 等)产出的模型转化
- (可选)对模型进行进一步优化, PaddleSlim 工具可以对模型进行压缩,量化,裁剪等工作,显著提升模型执行的速度性能,降低资源消耗
- 将模型部署到具体的推理产品上
Paddle Inference 简介
Paddle Inference 是飞桨的原生推理库, 作用于服务器端和云端,提供高性能的推理能力。
由于能力直接基于飞桨的训练算子,因此Paddle Inference 可以通用支持飞桨训练出的所有模型。
Paddle Inference 功能特性丰富,性能优异,针对不同平台不同的应用场景进行了深度的适配优化,做到高吞吐、低时延,保证了飞桨模型在服务器端即训即用,快速部署。
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,加快推理速度。
子图集成Paddle Lite轻量化推理引擎
Paddle Lite 是飞桨深度学习框架的一款轻量级、低框架开销的推理引擎,除了在移动端应用外,还可以使用服务器进行 Paddle Lite 推理。Paddle Inference采用子图的形式集成 Paddle Lite,以方便用户在服务器推理原有方式上稍加改动,即可开启 Paddle Lite 的推理能力,得到更快的推理速度。并且,使用 Paddle Lite 可支持在百度昆仑等高性能AI芯片上执行推理计算。
支持加载PaddleSlim量化压缩后的模型
PaddleSlim是飞桨深度学习模型压缩工具,Paddle Inference可联动PaddleSlim,支持加载量化、裁剪和蒸馏后的模型并部署,由此减小模型存储空间、减少计算占用内存、加快模型推理速度。其中在模型量化方面,Paddle Inference在X86 CPU上做了深度优化,常见分类模型的单线程性能可提升近3倍,ERNIE模型的单线程性能可提升2.68倍。
Paddle Inference的通用性
主流软硬件环境兼容适配
支持服务器端X86 CPU、NVIDIA GPU芯片,兼容Linux/Mac/Windows系统。支持所有飞桨训练产出的模型,完全做到即训即用。
多语言环境丰富接口可灵活调用
支持C++, Python, C,接口简单灵活,20行代码即可完成部署。对于其他语言,提供了ABI稳定的C API, 用户可以很方便地扩展。
- 2020年2月,开源框架 v1.7发布:
训练框架:增加自动混合精度训练AMP接口和新控制流接口;优化Tensor使用方式和显存分配策略;新增支持NVIDIA DALI GPU数据预处理库;持续优化基础OP的功能和性能;动态图的功能进一步完善,性能大幅提升,对Data Independent的动态图模型提供转为静态图可预测部署模型的功能;框架调试分析功能和易用性全面提升。
预测部署:服务器端预测库的Python API大幅优化,新增R语言、Go语言的预测API,并增加相关的使用方法和示例,强化了量化支持能力;Paddle Lite支持无校准数据的训练后量化方法生成的模型,加强对OpenCL的支持,支持昆仑XPU的预测;模型压缩库PaddleSlim重构裁剪、量化、蒸馏、搜索接口,与模型库充分打通,新增大规模可扩展知识蒸馏框架Pantheon。
分布式训练:参数服务器模式下统一了Transpiler半异步、全异步和GEO的实现模式,后端实现上统一到Communicator中,前端接口统一到fleet中,通过fleet strategy灵活选择不同模式;发布大规模分类库PLSC,通过模型并行支持超多类别的分类任务。
基础模型库:发布语音合成库Parakeet,包括多个前沿合成算法;PaddleCV新增14个图像分类预训练模型,3D和跟踪方向模型持续丰富;PaddleNLP的分词和词性标注模型支持jieba分词;PaddleRec增加多任务模型MMoE;模型库整体增加了广泛的动态图模型实现。模型库整体层次结构做了调整优化。
端到端开发套件:PaddleDetection和PaddleSeg新增大量模型实现及预训练模型,提升了典型模型的训练速度和精度,大幅提高模型压缩和部署能力,使用体验得到了全面优化;发布ElasticRec推荐排序系统,通过K8S进行部署,支持流式训练和在线预测服务。
工具组件:PaddleHub新增52个预训练模型,总数超过100,功能和体验持续优化;多任务学习框架PALM升级内核,开放API调用,支持更多的任务类型;联邦学习PaddleFL新增了公开数据集;深度强化学习框架PARL和飞桨图学习框架PGL也对应版本升级,支持更多功能,开放更多算法和基线。
- 2020年5月,开源框架 v1.8发布:
训练框架:深度优化了命令式编程(动态图)功能、性能和体验,特别是增强了动静转换的能力,能支持依赖数据的控制流的动态图实现进行静态存储部署,也可以转为静态图模式训练;Data Loader的功能和梯度裁剪的使用方式进一步优化;声明式编程模式下多卡运行时fetch不定长Tensor等问题得到解决,混合精度配合重计算显示出支持大Batch训练很好的成效。新增了大量API,并新增 ComplexVariable,支持复数张量的表示和常见的复数运算。
预测部署:Paddle Inference 新增CUDA下多线程多流支持、TRT子图对动态shape输入的支持,强化量化推理,性能显著优化;Paddle Serving 全面升级,功能完善,易用性显著提升;Paddle Lite进一步优化编译安装体验,全面提升对支持芯片的覆盖度(包括RK、MTK、百度昆仑、寒武纪、比特大陆、华为NPU等等)以及对应的模型数量和性能;PaddleSlim量化、裁剪和NAS功能持续强化;发布国内首个开源JavaScript深度学习前端推理引擎Paddle.js,可以帮助用户实现网页端深度学习模型部署。
开发套件:全新发布PaddleClas,包含23个图像分类网络实现,117个图像预训练模型,并添加了数据增广、SSLD蒸馏等辅助策略,以及特色应用案例;PaddleSeg人像分割系列模型全面升级,新增多种遥感相关的策略方案;PaddleDetection、PaddleOCR和语音合成套件Parakeet算法覆盖更全面,速度显著提升。
工具组件:PaddleHub新增包括一系列视觉预训练模型在内更多的模型,模型总数120+; PaddleFL发布1.0版本,开源基于Mulit-party Computation (MPC)的联邦学习,支持横向、纵向等多个联邦学习场景;PGL发布业界首个结合语义信息与结构信息的图神经网络模型ERNIESage;PARL开源工业界首个进化学习应用框架Evokit;全新发布量子机器学习框架量桨Paddle Quantum。