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

news2024/12/22 19:55:50

飞桨目前为开发者提供了涵盖多种领域的模型套件,开发者可以使用这些套件基于自身数据集快速完成深度学习模型的训练。但在实际产业部署环境下,开发者在部署模型到不同硬件和不同场景时面临以下三个痛点问题。

97378106c318cef2091a20795a7969c0.png

  • 碎片化。在部署过程中,由于深度学习框架、硬件与平台的多样化,开源社区以及各硬件厂商存在大量分散的工具链,很难通过一款产品,同时满足开发者在服务端、移动端和边缘端,以及服务化场景部署的需求。

  • 成本高。这与部署工具链碎片化的现状相关。开发者在不同推理引擎、不同硬件上部署的流程、代码API形态和体验都不尽相同,这带来了很高的学习成本。

  • 速度慢。部署中最大的问题是如何将模型在特定的硬件上实现高性能的优化。尽管当前模型套件提供各种轻量级的模型,或开源社区各类推理引擎不断优化模型的推理速度。但在实际部署中,开发者更关注的是模型端到端的优化,包括预处理加速、模型压缩、量化等等。而目前的推理产品都缺少这种端到端的体验。

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

fc296b76a6e1c8675c170a2d90c29c2d.png

  • 目前FastDeploy底层包含了飞桨的推理引擎、开源社区硬件厂商的推理引擎,结合飞桨统一硬件适配技术可以满足开发者将模型部署到主流AI硬件的需求。

  • 模型压缩与转换工具使得开发者通过统一的部署API实现多框架模型的推理,同时,飞桨自研的PaddleSlim为大家提供更易用、性能更强的模型自动化压缩功能。

  • 而在统一的部署API之上,我们还提供了丰富的多场景部署工程,满足开发者对于服务端、移动端、网页端的端到端部署需求

FastDeploy三大特点

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

4e019f440cc9724502af143112371059.png

全场景

全场景是指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集成了X2PaddlePaddle2ONNX两款模型转换工具。截至目前,飞桨的转换工具支持多种深度学习框架及ONNX的交换格式。在百度公司内部以及开源社区,我们支持了不同领域300多种模型的转换,目前也在根据用户的需求持续迭代。

1ec6937f1ee0a198310a7e43a75e1902.png

在FastDeploy1.0正式版本中,飞桨统一了模型转换的功能入口。开发者只需要一行命令就可以完成其他深度学习框架到飞桨的转换,以及飞桨模型与ONNX交换格式的互转,帮助开发者使用FastDeploy快速体验飞桨的模型压缩,以及推理引擎端到端的优化效果。

多硬件适配

4245ad4c1effc95ca1c4499ff2544610.png飞桨硬件适配统一方案

在多硬件适配上,FastDeploy基于飞桨硬件适配统一方案进行扩展,实现最大化AI模型部署通路。

在最新版本中,FastDeploy和英特尔、英伟达、瑞芯微和GraphCore等硬件厂商完成了硬件适配。期待更多硬件生态伙伴使用FastDeploy拓展更多领域,完成更多模型的端到端推理部署。

70e9b033ec47833b6c3ac840d9c9b44f.png

简单易用

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

4e85941821766ddaa3299e2cf95e283a.png

在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,确保在不同端和不同开发语言下,开发者能够拥有统一的开发体验,并且使用尽可能少的代码实现模型端到端的高性能推理。

8b9fe78868d66ecc2da2eae24a3aa92e.gif

0c0ed417ab70a0d5ae6bbd6761cee5d5.gif

7906496e404e09e13bbea479d13d8026.gif

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

49d8154c129462a0027cdff8a707b166.png

极致高效

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

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

3744bdcc3914d8aada684d84a0714eb2.png

FastDeploy集成了飞桨压缩和推理的特色,实现了自动化压缩与推理引擎深度联动,为开发者提供更高效的量化推理部署体验。以PP-LCNetV2和ERNIE 3.0模型为例,传统的KL离线量化会明显降低模型压缩后的精度,但在FastDeploy的最新版本中,飞桨通过集成PaddleSlim最新的ACT自动压缩技术,实现模型几乎无损的压缩功能。

如果压缩后的模型想达到更高的推理性能,需要后端推理引擎的软硬件协同优化工作。基于最新版本的Paddle Inference,在CPU上通过英特尔VNNI指令集以及GPU上深度融合和优化,性能全面领先ONNX Runtime。在移动端上,Paddle Lite对ARM v9指令集进行了全面适配,INT8推理性能相对比同类的产品有更大幅度的性能提升。

端到端全流程优化

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

e76e5091ce0e4393364f9a46ce76dda5.png

在CPU上,对预处理操作进行融合,减少数据预处理过程中内存创建、拷贝和计算量。在GPU上,飞桨引入了自定义的CUDA预处理算子优化,实现了服务端上模型端到端部署性能的大幅提升。在移动端,飞桨与百度视觉技术部合作,通过百度在业务实践中自研打磨的高性能图像预处理库FlyCV,显著提升图像数据预处理的性能。

总体而言,本次全新发布的FastDeploy部署套件可以满足开发者全场景的高性能部署需求,大幅提升在AI产业部署中的开发效率。FastDeploy的目标和使命是让开发者简单高效地将AI模型部署到任何场景。目前,开源项目仍在高效迭代中,每月都会有新版本和新部署功能升级发布。欢迎大家点击阅读原文访问下方链接关注。

  • FastDeploy开源项目地址
    https://github.com/PaddlePaddle/FastDeploy

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/190490.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

投资中的不可能三角

投资中避不开这个不可能三角! 而这“三个角”指的是高收益、低风险、高流动性,“不可能三角”则指的是“三角”难以同时满足。 因为这三角的关系是相互制衡的! ①若要追求较低风险条件下的较高收益,需要以时间换取空间&#xff0…

认识现有的频谱监测方案

摘要随着频谱监测行业的不断发展,频谱仪已经不仅局限于频谱监测与获取,随着5G的逐渐普及,在垂直领域的各种应用中都有其价值。针对不同的应用场景与行业,现有的市场上主要存在三种频谱监测方案,我们将在本文中进行总结…

【AI-NLP】Transformer浅记

文章目录提出背景总体结构EncoderDecoder细节再探源码阅读主函数部分主模型定义参考资料提出背景 改进了RNN的训练慢的缺点,利用self-attention机制实现并行计算。并且Transformer可以增加到非常深的深度,充分发掘DNN模型的特性,提升模型准确…

2022 IoTDB Summit:中冶赛迪工业互联网平台与CISDigital-TimeS(基于IoTDB)在钢铁行业的实践...

12 月 3 日、4日,2022 Apache IoTDB 物联网生态大会在线上圆满落幕。大会上发布 Apache IoTDB 的分布式 1.0 版本,并分享 Apache IoTDB 实现的数据管理技术与物联网场景实践案例,深入探讨了 Apache IoTDB 与物联网企业如何共建活跃生态&#…

即时通讯开发之详解TCP/IP中的DNS 域名系统

前面已经提到了访问一台机器要靠 IP 地址和 MAC 地址,其中,MAC 地址可以通过 ARP 协议得到,所以这对用户是透明的,但是 IP 地址就不行,无论如何用户都需要用一个指定的 IP 来访问一台计算机,而 IP 地址又非常不好记,于是就出现了 DNS 系统。DNS 系统介绍DNS 的全称是 Domain Na…

MYSQL作业

MySQL 作业一、填空题 1、交叉连接查询返回的结果是被连接的两张数据表中所有数据行的_笛卡尔积___ 。2、左连接查询的结果包括 LEFT JOIN 子句中左表的_所有记录___,以及右表中满足连接条件的记录。3、内连接查询的语法中,ON 用于指定查询的__匹配条件_…

从0开始学python -16

Python3 列表-1 序列是 Python 中最基本的数据结构。 序列中的每个值都有对应的位置值,称之为索引,第一个索引是 0,第二个索引是 1,依此类推。 Python 有 6 个序列的内置类型,但最常见的是列表和元组。 列表都可以…

六西格玛,为质量人的职业发展保驾护航

常常会有做质量的人来问优思学院:在质量界混,应学什么好? 大部分时候,我都会提议他們:有空就要学六西格玛吧! 他会回应:六西格玛感觉太难懂了,学了也没什么用啊,哪有那…

tensorflow框架之会话、张量、变量OP

2.3 会话、张量、变量OP 学习目标 目标 应用sess.run或者eval运行图程序并获取张量值应用feed_dict机制实现运行时填充数据应用placeholder实现创建占位符知道常见的TensorFlow创建张量知道常见的张量数学运算操作说明numpy的数组和张量相同性说明张量的两种形状改变特点应用…

前言技术之OAuth2.0

1、什么是OAuth2.0 OAuth2.0是目前使用非常广泛的授权机制,用于授权第三方应用获取用户的数据。 举例说明: 用户可以通过选择其他登录方式来使用gitee,这里就使用到了第三方认证。 OAuth 引入了一个授权层,用来分离两种不同的角…

记录--手把手教学,实现一个优雅的图片预览

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 在我们开发项目中,经常会遇到预览图片的需求。也就是点击图片,会全屏显示该图片。需求很简单,但是如何让实现更优雅就需要花点心思了。 最终效果图 基础版本 实现方…

从 Issue 看 El-Table 源码,给 Element+ 提 Pr 的背后竟如此坎坷

Element Plus大家应该都不陌生,用过 el-table 的伙伴更是多数,毕竟搞ToB业务 table 必不可少,但是真正翻看过源码的应该还是少数,有没有对其内部实现怀揣着一点点好奇呢?笔者就是因为怀揣着好奇,所以才走上…

什么是Intel Elkhart Lake?专用于物联网的处理器系列

随着世界向工业4.0过渡,边缘计算应用程序对实时推理、连接和数据遥测的更高性能和更低功耗处理的需求激增,并加强了加固。物联网和边缘计算的爆炸性增长造成了上一代处理器无法维持的性能瓶颈和限制。英特尔最新推出的Atom x6000 E系列、奔腾和赛扬N&…

IDEA无法使用Git Pull的问题

一、问题描述 我们开发项目时,经常会和第三方接口打交道,有些第三方项目为了安全起见,会把项目部署在"内网"环境,不对外暴露,通常会提供VPN代理才能访问到资源。 而在项目中我就因为这个而遇到了一个问题&am…

RK3568平台开发系列讲解(Linux系统篇)什么是Linux文件

🚀返回专栏总目录 文章目录 一、文件描述符二、常用文件 I/O 操作和函数2.1、open2.2、close2.3、read2.4、write沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 Linux 把大部分系统资源当作文件呈现给用户,用户只需按照文件 I/O 的方式,就能完成数据的输入输出。…

Diffusion 扩散模型(DDPM)详解及torch复现

文章目录torch复现第1步:正向过程噪声调度器Step 2: 反向传播 U-NetStep 3: 损失函数采样Training我公众号文章目录综述:https://wangguisen.blog.csdn.net/article/details/127065903 保姆级讲解 Diffusion 扩散模型(DDPM) ht…

python面向对象:入门

python面向对象:入门 文章目录python面向对象:入门一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤1.创建类和对象2.构造方法3.类中的实例方法一、实验目的 掌握类的基本使用 二、实验原理 面向过程:根据业务逻辑从上到下写…

Win10 BCD文件损坏怎么修复?

在Windows 10操作系统中,BCD代表引导配置数据(Boot Configuration Data),Windows运行时BCD将告诉Windows引导加载程序在哪里查找引导信息, 因此,它对成功地加载和运行操作系统是非常重要的。哪些情况下会导…

二叉树的前序遍历

题目144. 二叉树的前序遍历 - 力扣(LeetCode)本章我们来探讨运用二叉树中所学的知识解决本题。对二叉树仍有疑问的小伙伴可以点击下方链接哦。参考文献:(1条消息) 二叉树(三)_染柒_GRQ的博客-CSDN博客原理首先我们来回…

CyberBattleSim-(内网自动化渗透)研究分析

**01 **背景知识介绍 CyberBattleSim介绍 CyberBattleSim是一款微软365 Defender团队开源的人工智能攻防对抗模拟工具,来源于微软的一个实验性研究项目。该项目专注于对网络攻击入侵后横向移动阶段进行威胁建模,用于研究在模拟抽象企业网络环境中运行的…