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

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

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


文章目录

  • 机器学习-深度学习 部署相关资料文档
    • 一.模型部署简介
    • 二.模型部署的流程
    • 三.模型部署工具
      • 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Git 储藏(stash)用法

储藏的基本用法 保存当前的更改 1、查看储藏 git stash list2、更改保存到一个储藏中: git stash save "info"其中,“info” 是可选的注释信息,可以简要描述这个储藏的内容。 3、恢复之前保存的更改 可以使用下面的命令将之前…

微信小程序动态导航栏(uniapp + vant)

本文使用到vant的van-tabbar组件来实现 一、uniapp整合vant ui vant小程序版本:https://vant-contrib.gitee.io/vant-weapp/#/home 注:vant并没有uniapp的版本,所以此处是引入小程序版本的ui 1. 下载vant编译后代码 https://github.com/you…

新手上路:自动驾驶行业快速上手指南

文章目录 1.自动驾驶技术的发展1.1 工业革命驱动自动驾驶技术发展1.2 想象中的未来:科幻作品中的自动驾驶汽车1.3 自动驾驶技术萌芽与尝试1.4 百花争鸣:自动驾驶科技巨头与创业公司并进 2.个人开发者,如何玩转自动驾驶?2.1 灵活易…

开源 AI 研发提效方案 Unit Mesh 总结

回顾 2023 年,可以明显地看到生成式 AI 带给软件工程带来的新思考,每个组织也在探索结合生成式 AI 的可能性。Unit Mesh (https://github.com/unit-mesh) GitHub 组织正是基于我与我的同事的研究,所构建的一系列围绕于生成式 AI 应用于软件研…

基于ssm国外摇滚乐队交流和周边售卖系统论文

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对国外摇滚乐队交流和周边售卖信息管理混乱,出错率高&…

CUMT-Java复习--抽象类和接口

目录 一、抽象类 1、定义抽象类 2、实现一个抽象类 二、接口 1、定义接口 2、实现接口 3、接口继承 4、接口和抽象类的相似之处 5、接口和抽象类的区别 三、instanceof关键字 一、抽象类 1、定义抽象类 抽象类是对于一类相同的具体概念的抽象。 抽象类和抽象方法都…

密码强度的提升与网络安全意识

随着互联网的快速发展,网络安全问题日益突出,其中密码安全作为网络世界的第一道防线,其重要性不言而喻。本文将从密码强度的提升和网络安全意识普及两个方面,探讨如何在日益复杂的网络环境中保障个人信息安全。 随机密码生成器 |…

【2023 英特尔On技术创新大会直播 |我与英特尔的初次相遇】—— AIPC探索下一代的物联网时代

🌈个人主页: Aileen_0v0 🔥系列专栏:英特尔技术学习专栏 💫个人格言:"没有罗马,那就自己创造罗马~" 目录 硅谷经济的发展与挑战 Intel开发者云与AI技术的应用 AI压缩技术的发展与应用 英特尔与阿里巴巴在AI领域的合作 AIPC时代的…

RocketMQ系统性学习-RocketMQ原理分析之消息的可靠性以及有序性如何保证

文章目录 消息的可靠性如何保证?消息的有序性如何保证? 消息的可靠性如何保证? 要保证消息的可靠性,先来思考一下从哪些方面保证呢? 这要看消息的生命周期,既然保证可靠性,那么就是要保证 A 发…

理解并在虚拟化策略中实施 QEMU

● QEMU 是一种流行的开源机器模拟器。 ● QEMU 支持硬件虚拟化扩展(Intel VT-x 和 AMD-V)。 ● QEMUCare 为基于 QEMU 的虚拟化系统提供实时修补解决方案。 虚拟化现已成为现代 IT 基础设施的支柱,使组织能够实现前所未有的灵活性、可扩展…

pycharm运行正常,但命令行执行提示module不存在的多种解决方式

问题描述 在执行某个测试模块时出现提示,显示自定义模块data不存在,但是在PyCharm下运行正常。错误信息如下: Traceback (most recent call last):File "/run/channelnterface-autocase/testcases/test_chanel_detail.py", line 2…

直播种类之VR全景直播

VR全景直播是一种结合虚拟现实技术和直播的全新体验。通过全景相机拍摄,观众可以身临其境地感受直播现场的氛围和真实感,提供逼真的观看体验。 VR全景直播的优势在于: 1.身临其境的观看体验:观众可以像真的在现场一样,通过虚拟现实设备探索…

基于python的leetcode算法介绍之递归

文章目录 零 算法介绍一 简单示例 辗转相除法Leetcode例题与思路[509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/)解题思路:题解: [206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/)解题思路:题解&…

OpenHarmony开发环境快速搭建(无需命令行)

一. 搭建Windows环境 在嵌入式开发中,很多开发者习惯于使用Windows进行代码的编辑,比如使用Windows的Visual Studio Code进行OpenHarmony代码的开发。但当前阶段,大部分的开发板源码还不支持在Windows环境下进行编译,如Hi3861、H…

数字助听器如何处理声音?

数字助听器如何处理声音? 助听器的作用不仅仅是放大声音。为了创建可改进语音识别的自定义声音配置文件,他们以多种方式处理声音。 麦克风 与人耳一样,数字助听器不直接处理声波。首先是麦克风。它们充当换能器,捕获机械波能并将…

Verilog 仿真可视化

Verilog 仿真可视化 飞多学堂 飞多学堂 2023-12-11 09:37 Posted on 山东 DigitalJS 是一个基于 JavaScript 实现的开源数字电路模拟器,旨在模拟由硬件设计工具(如 Yosys)合成的电路。由弗罗茨瓦夫大学的Marek Materzok开发,源文…

手机数码品牌网站建设的作用是什么

手机数码产品几乎已经成为成年人必备的,包括手机、电脑、摄像机、键盘配件等,同时市场中相关企业也非常多,消费者可供选择的商品类型也很多样,而对企业来讲,只有不断提升品牌形象、获客拉新等才能不断提升企业地位&…

easyexcel常见注解

easyexcel常见注解 一、依赖 <!--阿里巴巴EasyExcel依赖--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.10</version></dependency>二、常见注解 ExcelProperty 注解中…

绝地求生什么游戏?

绝地求生是一款由蓝洞公司开发并发行的多人在线生存竞技游戏&#xff0c;也是一款备受玩家热爱和追捧的射击游戏。游戏灵感源自于日本电影《葛洛历亚号》&#xff0c;玩家将扮演一名跳伞降落在荒岛上的幸存者&#xff0c;通过收集资源、与其他玩家进行战斗来生存到最后一名&…

FastApi-快速入门FastApi框架(1)

前言 本文是该专栏的第1篇&#xff0c;后面会持续分享FastApi以及项目实战的各种干货知识&#xff0c;值得关注。 FastApi是一个现代、快速&#xff08;高性能&#xff09;的基于Python3.6的web框架&#xff0c;用于构建API。它旨在使API开发更快&#xff0c;更简单&#xff0…