关于paddle:FastDeploy全场景高性能AI部署工具加速打通AI模型产业落地的最后一公里

51次阅读

共计 3483 个字符,预计需要花费 9 分钟才能阅读完成。

  • 碎片化。在部署过程中,因为深度学习框架、硬件与平台的多样化,开源社区以及各硬件厂商存在大量扩散的工具链,很难通过一款产品,同时满足开发者在服务端、挪动端和边缘端,以及服务化场景部署的需要。
  • 老本高。这与部署工具链碎片化的现状相干。开发者在不同推理引擎、不同硬件上部署的流程、代码 API 状态和体验都不尽相同,这带来了很高的学习老本。
  • 速度慢。部署中最大的问题是如何将模型在特定的硬件上实现高性能的优化。只管以后模型套件提供各种轻量级的模型,或开源社区各类推理引擎一直优化模型的推理速度。但在理论部署中,开发者更关注的是模型端到端的优化,包含预处理减速、模型压缩、量化等等。而目前的推理产品都短少这种端到端的体验。

因而飞桨全新公布新一代部署产品——FastDeploy 部署工具,为产业实际中须要推理部署的开发者提供最优解。

  • 目前 FastDeploy 底层蕴含了飞桨的推理引擎、开源社区硬件厂商的推理引擎,联合飞桨对立硬件适配技术能够满足 开发者将模型部署到支流 AI 硬件的需要。
  • 模型压缩与转换工具使得开发者通过对立的部署 API 实现多框架模型的推理,同时,飞桨自研的 PaddleSlim 为大家提供 更易用、性能更强的模型自动化压缩性能。
  • 而在对立的部署 API 之上,咱们还提供了丰盛的多场景部署工程,满足开发者对于 服务端、挪动端、网页端的端到端部署需要。

FastDeploy 三大特点:
作为全场景高性能部署工具,FastDeploy 致力于打造三个特点,与上述提及的三个痛点绝对应,别离是 全场景、简略易用和极致高效。

01 全场景

全场景是指 FastDeploy 的多端多引擎减速部署、多框架模型反对和多硬件部署能力。

多端部署

FastDeploy 反对模型在多种推理引擎上部署,底层的推理后端,包含服务端 Paddle Inference、挪动端和边缘端的 Paddle Lite 以及网页前端的 Paddle.js,并且在下层提供对立的多端部署 API。这里以 PaddleDetection 的 PP-YOLOE 模型部署为例,用户只须要一行代码,便可实现在不同推理引擎后端间的灵便切换。
应用 Paddle Inference 部署:

import fastdeploy as fd
import cv2

im = cv2.imread("test.jpg")

# 通过 RuntimeOption 配置后端
option = fd.RuntimeOption()
option.use_paddle_infer_backend()

# 加载飞桨 PPYOLOE 检测模型
model = fd.vision.detection.PPYOLOE(“model.pdmodel”,“model.pdiparams”,“infer_cfg.yml”,
                                    runtime option=option)
result = model.predict(im)

应用 OpenVINO 部署:

import fastdeploy as fd
import cv2

im = cv2.imread("test.jpg")

# 通过 RuntimeOption 配置后端
option = fd.RuntimeOption()
option.use_openvino_backend()

# 加载飞桨 PPYOLOE 检测模型
model = fd.vision.detection.PPYOLOE(“model.pdmodel”,“model.pdiparams”,“infer_cfg.yml”,
                                    runtime option=option)
result = model.predict(im)

多框架反对

在多框架模型部署的反对上,FastDeploy 集成了 X2Paddle 和 Paddle2ONNX 两款模型转换工具。截至目前,飞桨的转换工具反对多种深度学习框架及 ONNX 的替换格局。在百度公司外部以及开源社区,咱们反对了不同畛域 300 多种模型的转换,目前也在依据用户的需要继续迭代。

在 FastDeploy1.0 正式版本中,飞桨对立了模型转换的性能入口。开发者只须要一行命令就能够实现其余深度学习框架到飞桨的转换,以及飞桨模型与 ONNX 替换格局的互转,帮忙开发者应用 FastDeploy 疾速体验飞桨的模型压缩,以及推理引擎端到端的优化成果。

多硬件适配

飞桨硬件适配对立计划
在多硬件适配上,FastDeploy 基于飞桨硬件适配对立计划进行扩大,实现最大化 AI 模型部署通路。

最大化 AI 模型部署通路
在最新版本中,FastDeploy 和英特尔、英伟达、瑞芯微和 GraphCore 等硬件厂商实现了硬件适配。期待更多硬件生态搭档应用 FastDeploy 拓展更多畛域,实现更多模型的端到端推理部署。

02 简略易用

FastDeploy 提供支流产业场景和 SOTA 模型端到端的部署,以及多端部署的对立开发体验。

在 FastDeploy 的部署套件中,飞桨提供笼罩 20 多个支流 AI 场景,以及 150 多个 SOTA 产业模型的端到端部署示例,让开发者从场景动手,疾速通过自行训练或预训练模型实现部署工作。
Python 部署:

import fastdeploy.vision as vision

model = vision.detection.PPYOLOE(“model.pdmodel”,“model.pdiparams”,“infer_cfg.yml”)
result = model.predict(im)

C++ 部署:

#include“fastdeploy/vision.h”namespace vision = fastdeploy::vision;

int main(int argc, char* argv[]) {
  ...
  auto model = vision::detection::PPYOLOE(“model.pdmodel”,”model.pdiparams”,”infer_cfg.yml”)
  vision::DetectionResult result;
  model.Predict(image, &result);
  ...

在开发体验上,FastDeploy 从对立的角度设计了部署的 API,确保在不同端和不同开发语言下,开发者可能领有对立的开发体验,并且应用尽可能少的代码实现模型端到端的高性能推理。

此外,飞桨联动 EasyEdge 提供了 10 多个端到端的部署工程 Demo,帮忙开发者疾速体验 AI 模型成果,满足开发者产业应用中疾速集成需要。同时 EasyEdge 提供了更易用的开发平台,便于开发者体验。

03 极致高效

FastDeploy 的极致高效,包含模型无损量化压缩、推理部署软硬协同减速和模型端到端全流程的部署性能优化。

无损量化压缩,软硬协同减速

FastDeploy 集成了飞桨压缩和推理的特色,实现了自动化压缩与推理引擎深度联动,为开发者提供更高效的量化推理部署体验。以 PP-LCNetV2 和 ERNIE 3.0 模型为例,传统的 KL 离线量化会明显降低模型压缩后的精度,但在 FastDeploy 的最新版本中,飞桨通过集成 PaddleSlim 最新的 ACT 主动压缩技术,实现模型简直无损的压缩性能。
如果压缩后的模型想达到更高的推理性能,须要后端推理引擎的软硬件协同优化工作。基于最新版本的 Paddle Inference,在 CPU 上通过英特尔 VNNI 指令集以及 GPU 上深度交融和优化,性能全面当先 ONNX Runtime。在挪动端上,Paddle Lite 对 ARM v9 指令集进行了全面适配,INT8 推理性能绝对比同类的产品有更大幅度的性能晋升。

端到端全流程优化

但也正如上文提到,模型推理只是端到端部署中的一个环节,所以 FastDeploy 在端到端的全流程部署上做了大量优化工作,并且对于此前飞桨的 CV 模型部署代码进行了全面优化降级。

在 CPU 上,对预处理操作进行交融,缩小数据预处理过程中内存创立、拷贝和计算量。在 GPU 上,飞桨引入了自定义的 CUDA 预处理算子优化,实现了服务端上模型端到端部署性能的大幅晋升。在挪动端,飞桨与百度视觉技术部单干,通过百度在业务实际中自研打磨的高性能图像预处理库 FlyCV,显著晋升图像数据预处理的性能。
总体而言,本次全新公布的 FastDeploy 部署套件能够满足开发者全场景的高性能部署需要,大幅晋升在 AI 产业部署中的开发效率。FastDeploy 的指标和使命是让开发者简略高效地将 AI 模型部署到任何场景。目前,开源我的项目仍在高效迭代中,每月都会有新版本和新部署性能降级公布。欢送大家点击 浏览原文 拜访下方链接关注
FastDeploy 开源我的项目地址:https://github.com/PaddlePadd…

正文完
 0