深度学习或机器学习的模型部署相关的初步了解及分析

news2024/12/23 13:13:54

机器学习-深度学习 部署相关资料文档

这是上班之后的第一个文档,由于项目原因需要去了解一些和模型部署相关的知识,所以就简单了解了一下相应的部署引擎和框架,也是刚刚开始学习,如果有什么写的不对的欢迎大家交流,看见基本就回。


文章目录

  • 机器学习-深度学习 部署相关资料文档
    • 一.模型部署简介
    • 二.模型部署的流程
    • 三.模型部署工具
      • TensorFlow.js TensorFlow Lite
        • 简介
        • 评估分析 推荐指数:⭐⭐⭐
      • TorchScript
        • 简介
        • 评估分析 推荐指数:⭐
      • ONNX (Open Neural Network Exchange)
        • 简介
        • 评估分析 推荐指数 ⭐⭐⭐⭐⭐
      • 其他框架
        • MXNet
        • PaddlePaddle
    • 总结
    • 引用

下文机器学习-深度学习 部署 简称模型部署

一.模型部署简介

机器学习-深度学习跨语言的部署是通过将主要由python实现的机器学习和深度度学习模型应用于实际的环境中,具体为部署在,手机,网页,PC等各类设备上。主要通过将模型保存成一种格式的文件,然后通过推理引擎进行读取。

机器学习 Machine Learning:机器学习包括深度学习,但是在研究中,机器学习方法主要代指,SVM,KNN,聚类,决策树,随机森林,等传统机器学习方法。

深度学习 Deep Learning :深度学习主要指,使用神经网络反向传播技术的,CNN(卷积神经网络),RNN(循环神经网络),GAN(对抗生成网络),DQN(强化学习网络等)

推理引擎 Inference Engine :推理引擎在机器学习和深度学习领域中,是一个软件库或框架,用于运行经过训练的模型以进行预测或分类。它主要用于模型的部署阶段,即在实际应用环境中执行模型来进行推理的过程。

二.模型部署的流程

下文机器学习-深度学习 部署 简称模型部署

在这里插入图片描述

  • 流程图补充解释
    • 同语言同平台:训练模型在PC端使用python,实际应用中也在PC端使用python,如果在Web上那就是不同平台,如果使用C#就是不同语言(在实际应用中几乎不会出现这种情况)
    • 将模型转换成通用的中间格式: 例如将python中使用sklearn的机器学习库,pytroh,TensorFlow的深度学习库写的训练好的模型,转换中间格式文件,该文件类型可以被目标平台上的语言读取调用。
    • 各种语言调用中间格式文件:使用目标平台支持的推理引擎,读取中间格式文件

主流模型部署流程示意图

三.模型部署工具

在目前的机器学习和深度学习任务中,目前最常用,知名度最高的的有三个库,sklearn机器学习库,以及两个深度学习框架Pytorch 和 TensorFlow 框架,下面的分析主要基于对以上三个常用库进行分析,其他值得一提的框架会在该章结尾进行简单盘点。

TensorFlow.js TensorFlow Lite

简介

在三个常用的库当中其中TensorFlow专属的推理引擎最为成熟(只能转换TensorFlow框架的模型),为TensorFlow.js 和 TensorFlow Lite

TensorFlow提供了TensorFlow.js,和TensorFlow Lite 来部署现有模型其中TensorFlow.js用于使用JavaScript在网页上部署模型,TensorFlow Lite(推理引擎)在手机上或者树莓派上部署模型,其中其,最后介绍的TFX为 TensorFlow Extended 是一个谷歌开发的管理平台,包括数据处理,模型训练,验证,部署和监控。

TensorFlow官网地址www.tensorflow.org

TensorFlow部署框架相关文档https://www.tensorflow.org/learn?hl=zh-cn#deploy-models

在这里插入图片描述

评估分析 推荐指数:⭐⭐⭐
  • 优点
    1. 可在网页端训练模型:TensorFlow.js 可以在Web 上搭建模型进行训练,可以利用客户端的计算资源(理论上可以让网页上的模型自主训练个更新)
  • 缺点
    1. 性能降低:TensorFlow.js 在网页上部署之后性能往往不如原生服务器
    2. 设备依赖:TensorFlow Lit 使用不同的设备部署性能可能不一致
    3. 资源相对偏少:由于TensorFlow在动态计算图和语法简洁易懂的表现上略弱于Pytorch,因此导致Pytorch更受研究者青睐,从而使得大量的开源模型首先都选择Pytoch框架进行编写(例如Yolo目标检测系列代码)因此再研究新的模型结构和训练策略时,找到的资源不如Pytorch丰富。
    4. 单一框架局限性:当TensorFlow框架无法满足项目需求时候,无法更改为其他框架的好用模型

TorchScript

简介

TorchScript是目前在研究领域最常用的深度学习框架Pytorch的专属推理引擎,可以使用Pytoch的C++ API 进行读取

TorchScript官网文档TorchScriptTorchScript地址https://pytorch.org/docs/stable/jit.html

Pytorh C++部署框架相关文档https://pytorch.org/cppdocs/
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

评估分析 推荐指数:⭐
  • 优点
    1. 对C++支持较高
  • 缺点
    1. 适配语言单一:目前除了python以外,几乎只能找到使用C++调用的资料,其他语言调用基本停留在理论上
    2. 教程资源非常少:几乎找不到浏览或收藏量较大的博客,或者GitHub代码,几乎只能靠看文档来调试
    3. 单一框架局限性:同TensorFlow,当Pytorch框架无法满足项目需求时候,无法更改为其他框架的好用模型

ONNX (Open Neural Network Exchange)

简介

ONNX(Open Neural Network Exchange)是一个用于机器学习模型互操作性的开放格式。它定义了一组通用操作符和文件格式,使不同框架、工具、运行时和编译器之间的模型使用更加便捷。

ONNX官网地址https://onnx.ai/index.html

下面是官网给出的支持的框架的清单
在这里插入图片描述

评估分析 推荐指数 ⭐⭐⭐⭐⭐
  • 优点
    1. 运行速度提升:将模型转换为ONNX格式后,会将pytroch模型的性能提升5倍左右(CPU,GPU 都可以提升)
    2. 实用性极广:包括了市面几乎所有能支持的框架和包,除了Kears,TensorFlow,Pytorh,sklearn之外,甚至还支持Matlab,可以将这些框架或者语言的模型转换为onnx格式
    3. 兼容的推理引擎丰富:例如 Microsoft 的 ONNX Runtime NVIDIA 的TensorRT (针对NVIDIA GPU进行优化),以及一些其他的推理库
    4. 资源丰富:由于其出色广泛的适用性和出色的兼容性,其在部署工具的地位超然,由此网络资源非常丰富,易于寻求技术支持
    5. 行业领先:使用ONNX格式结合推理引擎之后模型的运行速度包括上诉TensorFlow和Pytorch的两种工具中,其性能表现在绝大多数情况下都是最好的
  • 缺点
    1. 不可避免的略微存在大量框架模型之间寻找适配版本的问题

其他框架

MXNet

MXNet官网地址https://mxnet.apache.org/versions/1.9.1/

除了上诉工具,MXNet也是一个由亚马逊公司研发的推理引擎的框架,支持Python,C++,R等语言

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其部署的推理引擎也是专属于这个框架的,且其本身也支持被转换成onnx格式,且其不如TensorFlow,以及Pytorch等应用广泛,导致其知名度和使用率略低,放弃Pytorch,和TensorFlow,学习MXNet意义不大,因此不对其进行优缺点分析。

PaddlePaddle

PaddlePaddle百度飞桨,目前中国最知名的国产深度学习框架,其也有自研的推理引擎Paddle Lite

PaddlePaddle官网地址https://www.paddlepaddle.org.cn/

Paddle Lite官网地址https://www.paddlepaddle.org.cn/paddle/paddlelite
在这里插入图片描述

在实际使用中,继承了一部分Pytorch的语法和继承了一部分TensorFlow的的语法,调试的方便程度在Pytorch之下,作为一个国产框架,联系技术支持能方便一些,其自己研的Paddle Lite 也无法超过ONNX的兼容性和性能,在性能全面超越ONNX之前详细分析意义不大。

总结

  • 综合考虑学习成本和性能以及泛用性应选择ONNX
  • 如果选择传统机器学习只能选择ONNX
  • 如果考虑最优适配性,在TensorFlow,PaddlePaddle,MXNet三个有自己较为成熟的部署引擎中,选择TensorFlow
  • 如需合作国产选择百度飞桨

引用

TensorFlow官网地址www.tensorflow.org

TensorFlow部署框架相关文档https://www.tensorflow.org/learn?hl=zh-cn#deploy-models

TorchScript官网文档TorchScriptTorchScript地址https://pytorch.org/docs/stable/jit.html

ONNX官网地址https://onnx.ai/index.html

MXNet官网地址https://mxnet.apache.org/versions/1.9.1/

PaddlePaddle官网地址https://www.paddlepaddle.org.cn/

Paddle Lite官网地址https://www.paddlepaddle.org.cn/paddle/paddlelite

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

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

相关文章

2024年3月电子学会青少年编程等级考试时间安排

1考试方式 1. 在线居家考试(全国); 2. 对于符合线下考试要求的考试服务网点,经地方实地调研报学会总部批准后,可组织线下考试。 2报名时间 报名时间:2023年12月21日-2024年3月12日16:00; 考…

Web API ------- requestAnimationFrame

官方文档 requestAnimationFrame 是什么 window.requestAnimationFrame() 告诉浏览器——你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画。该方法需要传入一个回调函数作为参数,该回调函数会在浏览器下一次重绘之前执行 …

HTML输出特殊字符详细方法

以下是部分特殊字符代码表,它们的完整应用代码格式为:&#;用下面的四位数字替换,将得到对应的符号。(注意:应用这些代码,编辑器应该切换到HTML模式) ☏260f ☎260e ☺263a ☻263b ☼263c ☽…

【UML】第6篇 用例图(1/3)

目录 一、什么是用例图 二、参与者 2.1 什么是参与者 2.2 如何识别参与者 2.3 参与者之间的关系 从今天开始,就到了最干的各种的图的梳理和学习了,未来AI就能编码了,把业务建模和设计的基本功打好,也许能和AI和平相处呢。 一…

第三节TypeScript 基础类型

1、typescript的基础类型 如下表: 数据类型 关键字 描述 任意类型 any 生命any的变量可以赋值任意类型的值 数字类型 number 整数或分数 字符串类型 string 使用单引号(‘’)或者双引号(“”)来表示字符串…

nodejs微信小程序+python+PHP购物商城网站-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

3D模型格式转换工具如何实现高性能数据转换?请看CAE系统开发实例!

​ 客户背景 DP Technology是全球知名的CAM的供应商,在全球8个国家设有18个办事处。DP Technology提供的CAMESPRIT系统是一个用于数控编程,优化和仿真全方面的CAM系统。CAMESPRIT的客户来自多个行业,因此支持多种CAD工具和文件格式显得格外重…

区块链技术与应用 【全国职业院校技能大赛国赛题目解析】第一套区块链系统部署与运维

第一套区块链系统部署与运维题目 环境 : ubuntu20 fisco : 2.8.0 子任务1-2-1: 搭建区块链系统并验证 题意: 要求搭建一条四节点的区块链系统,我们选择使用fisco作为此次测试的链子 我们使用build_chain.sh进行构建单机四节点,并且使用官方的默认端口【正式比赛大概率不…

java使用面向对象实现图书管理系统

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

算法基础之筛质数

筛质数 核心思想:筛法求质数 埃氏筛法: 每次用 2 3 4…. p-1 筛 2 - p之间的数出现2 3 4 …的倍数时 去掉(4实际已经被去掉 不会用4去筛)当2~p-1的数都没有筛掉p 说明p是质数 优化: 只用2~p-1中质数筛 线性筛法: 核心: n只会被其最小质因子筛掉 每一个合数都只…

如何使用AI智能写作API接口批量处理数据

有大量的数据,想使用AI智能写作工具进行批量操作处理,有没什么好方法? 可以使用简数采集器,支持自动采集数据,也支持批量导入数据,然后调用第三方AI智能写作API接口进行批量处理(例如&#xff…

『 C++ 』二叉树进阶OJ题

文章目录 根据二叉树创建字符串 🦖🥩 题目描述🥩 解题思路🥩 代码 二叉树的层序遍历(分层遍历) 🦖🥩 题目描述🥩 解题思路🥩 代码 二叉树的层序遍历(分层遍历)Ⅱ 🦖&…

redis集群介绍

这里写自定义目录标题 redis集群是什么?redis集群方案1.节点2.槽指派3在集群中执行命令4.复制与故障转移5.消息 redis集群搭建参考文档 redis集群是什么? redis集群是一个由多个主从节点群组成的分布式服务集群,它具有复制、高可用和分片特性…

无锡算法大赛线下颁奖会,齐聚院士专家探讨前沿AI技术,大赛选手优秀获奖方案分享!

极市邀您参与“视界拓新知Al有所为 2023首届无锡国际人工智能算法大赛”,相聚美丽无锡! 举行地点:无锡君来洲际酒店君来厅 举行时间:2023年12月27日(周三) 此次大会齐聚多名院士专家,分享前沿…

Linux/Windows IP | Team基础管理

引言 IP(Internet Protocol) 定义: IP(Internet Protocol)是网络传输数据的协议,负责在网络中唯一标识和定位设备,并提供数据传输的基础。功能: 允许计算机在网络上相互通信和交换…

做一个家政预约小程序需要了解哪些功能?

随着科技的发展,人们的生活方式发生改变,家政服务在快节奏的时代成为家庭必备。为了满足人们对家政服务的需求,许多家政公司开始寻求线上发展机会。小程序作为轻量级应用,逐渐成为家政行业的重要载体。本文将详细介绍家政小程序的…

【数据结构和算法】---二叉树(1)--树概念及结构

目录 一、树的概念及结构1.1 树的概念1.2 树的相关概念1.3 树的表示1.4 树在实际中的运用 二、二叉树的概念及结构2.1 二叉树概念2.2 特殊的二叉树2.3 二叉树的性质2.4 二叉树的存储结构 三、树概念相关题目 一、树的概念及结构 1.1 树的概念 树是一种非线性的数据结构&#…

Python爬虫之两种urlencode编码发起post请求方式

背景 闲来无事想爬一下牛客网的校招薪资水平及城市分布,最后想做一个薪资水平分布的图表出来 于是发现牛客使用的是application/x-www-form-urlencoded的格式 测试 首先可以先用apipost等测试工具先测试一下是否需要cookie之类的,发现是不需要的&…

第五节TypeScript 运算符

一、描述 运算符用于执行程序代码运算。 二、运算符主要包括: 算术运算符逻辑运算符关系运算符按位运算符赋值运算符三元/条件运算符字符串运算符类型运算符 1、算术运算符 y5,对下面算术运算符进行解释: 运算符 描述 例子 x 运算结果…

Elasticsearch:什么是文本分类?

文本分类定义 - text classification 文本分类是一种机器学习,它将文本文档或句子分类为预定义的类或类别。 它分析文本的内容和含义,然后使用文本标签为其分配最合适的标签。 文本分类的实际应用包括情绪分析(确定评论中的正面或负面情绪&…