模型部署流程

神经网络部署流程

工业界应用神经网络时,往往要对学术界产出的模型进行优化,才能在推理设备/服务器上实现更高的效率,从而降低成本,这整个过程也一般称之为模型部署Deployment)。

部署的目的

模型部署目标有多种,云部署提供了可扩展性和易访问性;边缘部署通过使模型更接近数据源来减少延迟;本地部署则确保了隐私和可控性。

云部署非常适合需要快速扩展和处理大量数据的应用程序。 一些平台可以轻松管理从训练到部署的模型,不过,使用云计算的成本可能会很高,尤其是在数据用量大的情况下,如果用户远离数据中心,还会面临延迟问题。

边缘部署非常适合需要实时响应和低延迟的应用,尤其是在互联网接入有限或没有互联网接入的地方。 在智能手机或物联网小工具等边缘设备上部署模型可确保快速处理并保持本地数据,从而提高隐私性。 然而,边缘设备的处理能力往往有限,因此您需要优化模型。

本地部署适用于当数据隐私至关重要或互联网访问不可靠或无法访问时。 在本地服务器或台式机上运行模型可完全控制并保证数据安全。

神经网络的计算本质

神经网络一般可以表示为如下图所示的由算子组成的有向无环图,算子表示一个独立的计算过程,输入的数据就在这个图上进行传播,直到输出。
在这里插入图片描述

一个算子数学上是函数空间到函数空间的映射,实际上就是(大型)矩阵的加法、乘法等计算。比如卷积操作就需要卷积核在特征图上不断地进行element-wise的乘法并求和,又比如ReLU这样的激活函数需要对输入的每个值计算激活值。

根据算子计算的方式,一般会分为计算密集型算子核访存密集型算子。像矩阵乘法、卷积这种算子就是计算密集型算子,单独拿出某个值,它需要不断计算与其它值的乘法和加法;而像激活函数这些算子就是访存密集型算子,每个值的计算比较简单,但是要从内存中拿出所有数据去进行这个计算。

神经网络中用到的矩阵计算基本都是大型的运算,计算两个1024x1024的矩阵相乘是常态,对这些矩阵进行计算会消耗大量能源和时间,模型部署时需要尽可能地减少这些的消耗。

部署的技术架构

如下图所示,模型部署从上到下大致需要经历三个阶段。

绿色的是模型开发阶段,一般用到PyTorch、TensorFlow、PaddlePaddle等框架,此时还是神经网络还是动态图,比较灵活,并且一般都是在高性能的服务器上进行。

橙色的是模型部署阶段,会把训练出的模型编译为对应的格式,将计算流程固定成一个确定的有向无环图,并且进行一定的优化以适应下游任务。此时就有非常多公司有对应的技术,比如Nvidia的TensorRT、开源的Onnx、Pytorch的TorchScript、Paddle的PaddleLite等。

蓝色的是模型运行阶段,一个程序最终还是要在硬件上运行的,这就有各家不同的硬件处理器实现了。不同的处理器的计算能力不同,消耗的功率也不同。在移动平台上的硬件会更注重功率,在大型服务器上的硬件则可能会兼顾算力和功率。

在这里插入图片描述

第二阶段有的时候也会细分为两部分。

一部分更接近底层,直接作用于硬件。比如Nvidia的cuDNN,这是在CUDA的基础上开发的用来进行深度学习网络计算的库,使用cuDNN可以让模型在Nvidia的GPU上高效运行。

另一部分则更抽象,作用于计算图。这一部分一般会对算子进行融合,通过运算方式来进行加速。

部分则更抽象,作用于计算图。这一部分一般会对算子进行融合,通过运算方式来进行加速。

在这里插入图片描述

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

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

相关文章

vue2中使用vue-awesome-swiper实现轮播

swiper官方文档:Swiper中文网-轮播图幻灯片js插件,H5页面前端开发 1.安装 注意:swiper和vue-awesome-swiper的版本一定一定一定要相对应,版本对应如下: Swiper 5-6 vue-awesome-swiper4.1.1(vue2) Swiper 4.x vue-awesome-swi…

less解决function中return写法在浏览器被识别成Object导致样式失败的问题

问题描述: 一开始写的是: baseFontSize: 37.5px;//基于屏幕尺寸/10得出的基准font-size// return失败,浏览器显示为[object Object],[object Object] .pxToRem(px){value: px / baseFontSize * 1rem;return value; } 使用height: .pxToRem(40px);之后浏览器却是这…

【04】【Maven项目热部署】将Maven项目热部署到远程tomcat服务器上

1.虽然现在Maven中央仓库中支持的tomcat插件只支持到tomcat7这个版本,但是可以利用这个插件对Web项目进行热部署,热部署到远程服务器的tomcat服务器上,远程服务器上的tomcat版本可以是更高的版本,比如说tomcat8、9、10或更高的版本…

开源一款前后端分离的企业级网站内容管理系统,支持站群管理、多平台静态化,多语言、全文检索的源码

大家好,我是一颗甜苞谷,今天分享一款前后端分离的企业级网站内容管理系统,支持站群管理、多平台静态化,多语言、全文检索的源码。 前言 在当今的数字化时代,企业网站和个人博客已成为信息传播和品牌建设的重要渠道。…

mfc | mfc集成opencv,实现摄像头监控、拍照、视频图像处理(亮度、对比度、色调、饱和度)功能

这里是引用 文章目录 一、开发环境二、MFC项目创建三、集成opencv3.1 opencv安装3.2 添加项目属性3.3 测试OpenCV(打开摄像头)3.4 OPENCV视频嵌入到弹框中 四、关闭摄像头、拍照功能实现4.1 添加按钮4.2 添加全局静态变量4.3 关闭摄像头功能实现4.4 拍照…

Rust 力扣 - 289. 生命游戏

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们记录上一行和当前行转换之后的状态,当前行转换之后的状态计算完毕后调整上一行状态,直至最后一行状态计算完毕后调整最后一行状态 题解代码 pub fn game_of_life(board: &mut V…

【eNSP】华为ensp快速入门实验

一、安装准备 1. 检查和卸载已安装的软件 检查是否已经安装 eNSP 和依赖软件: 打开控制面板,点击“程序和功能”。 搜索列表中是否存在 eNSP 或依赖软件(如 WinPcap、Wireshark)。 卸载已安装的软件: 如果找到 e…

一:Linux学习笔记(第一阶段)-- 安装软件 vmware workstation 虚拟机软件 centos系统

目录 学习计划: 资源准备 虚拟机软件:就别自己找了 现在换网站了 下载比较费劲 Centos8: 阿里云镜像地址下载(下载比较版 但是有不同版本):centos安装包下载_开源镜像站-阿里云 百度网盘地址&#xff…

Java项目:165 springboot人事管理系统

作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 人事管理系统分为管理员和用户两部分操作角色 本次开发的人事管理系统实现了财务报销管理、字典管理、试卷表管理、试题表管理、考试记录表管理、答题…

单臂路由实现不同VLAN之间设备通信

转载请注明出处 本实验为单臂路由配置,目的为让不同VLAN之间的设备能够互相通信。 1.首先,按照要求配置两个pc的ip地址,以pc0为例子: 2在交换机创建vlan10和vlan20 3.划分vlan,pc0为vlan10的设备,pc1为vla…

【FL0013】基于SpringBoot和微信小程序的机电公司管理信息系统

🧑‍💻博主介绍🧑‍💻 全网粉丝10W,CSDN全栈领域优质创作者,博客之星、掘金/知乎/b站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战,以及程序定制化开发…

2024保姆级微信 AI 机器人教程:如何打造私人和群聊助手

欢迎点击领取 -《前端开发面试题进阶秘籍》:前端登顶之巅-最全面的前端知识点梳理总结 *分享一个使用比较久的🪜 大家好,我是SunnyRun 微信 AI 机器人-人工智能技术,为用户提供服务的自动化系统:具备自然语言处理能…

HyperWorks进阶教程:Altair及其软件介绍

1.1 Altair 简介 Allair是一家全球技术公司,在产品开发、高性能计算和数据智能领域提供软件和云解决方案自1985年成立以来一直致力于为企业的决策者和技术的执行者开发用于仿真分析、优化、信息可视化、流程自动化和云计算的高端技术。Altair 公司的总部位于美国密…

Halcon3D image_points_to_world_plane详解

分三个部分来聊聊这个算子 一,算子的参数介绍 二,算法的计算过程 三,举例实现 第一部分,算子的介绍 image_points_to_world_plane( : : CameraParam, WorldPose, Rows, Cols, Scale : X, Y) 参数介绍: CameraParam,:相机内参 WorldPose 世界坐标系,也叫物体坐标系(成…

使用GetX实现GetPage中间件

前言 GetX 中间件(Middleware)是 GetX 框架中的一种机制,用于在页面导航时对用户进行权限控制、数据预加载、页面访问条件设置等。通过使用中间件,可以有效地控制用户的访问流程,并在适当条件下引导用户到所需页面。 这…

[java][基础]HTTPTomcatServlet

1,Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网,也称为万维网(www),能够通过浏览器访问的网站。 在我们日常的生活中,经常会使用浏览器去访问百度、京东、传智官网等这些网站,这些网站统称为Web网站。如下就是通…

CUDA环境安装终极指南——Linux(其它系统也一样)

文章目录 前言检查驱动配置nvcc安装cudnn完活 前言 不用看其它文章了,这篇文章保你不踩任何坑,安装方法简单快速 检查驱动 检查驱动是否安装,输入以下命令 nvidia-smi如果驱动已经安装,则可跳过此步,否则&#xff…

基于MATLAB的身份证号码识别系统

课题介绍 本课题为基于连通域分割和模板匹配的二代居民身份证号码识别系统,带有一个GUI人机交互界面。可以识别数十张身份证图片。 首先从身份证图像上获取0~9和X共十一个号码字符的样本图像作为后续识别的字符库样本,其次将待测身份证图像…

OpenCV—calcHist()函数

void calcHist( const Mat* images, int nimages,const int* channels, InputArray mask,SparseMat& hist, int dims,const int* histSize, const float** ranges,bool uniform true, bool accumulate false ); images 输入的数据指针,要具备相同的尺寸和数…

小米内外衣双区洗双洗烘洗衣机:洗出健康,还是洗出“噱头”

大家好,我是小悟。 在我们生活的这个科技飞速发展的时代,没有什么是一成不变的,就连洗衣机都在不断地推陈出新,生怕自己被时代的洪流甩在后面。这不,前不久,小米就又给我们带来了一款“划时代”的产品——…