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

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

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


文章目录

  • 机器学习-深度学习 部署相关资料文档
    • 一.模型部署简介
    • 二.模型部署的流程
    • 三.模型部署工具
      • 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 :推理引擎在机器学习和深度学习领域中,是一个软件库或框架,用于运行经过训练的模型以进行预测或分类。它主要用于模型的部署阶段,即在实际应用环境中执行模型来进行推理的过程。

二.模型部署的流程

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

深度学习或机器学习的模型部署相关的初步了解及分析_第1张图片

  • 流程图补充解释
    • 同语言同平台:训练模型在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

深度学习或机器学习的模型部署相关的初步了解及分析_第2张图片

评估分析 推荐指数:⭐⭐⭐
  • 优点
    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/
深度学习或机器学习的模型部署相关的初步了解及分析_第3张图片

评估分析 推荐指数:⭐
  • 优点
    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

下面是官网给出的支持的框架的清单
深度学习或机器学习的模型部署相关的初步了解及分析_第4张图片

评估分析 推荐指数 ⭐⭐⭐⭐⭐
  • 优点
    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等语言

深度学习或机器学习的模型部署相关的初步了解及分析_第5张图片

其部署的推理引擎也是专属于这个框架的,且其本身也支持被转换成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
深度学习或机器学习的模型部署相关的初步了解及分析_第6张图片

在实际使用中,继承了一部分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

你可能感兴趣的:(深度学习,机器学习,人工智能)