这是上班之后的第一个文档,由于项目原因需要去了解一些和模型部署相关的知识,所以就简单了解了一下相应的部署引擎和框架,也是刚刚开始学习,如果有什么写的不对的欢迎大家交流,看见基本就回。
下文机器学习-深度学习 部署 简称模型部署
机器学习-深度学习跨语言的部署是通过将主要由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专属的推理引擎最为成熟(只能转换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
TorchScript是目前在研究领域最常用的深度学习框架Pytorch的专属推理引擎,可以使用Pytoch的C++ API 进行读取
TorchScript官网文档TorchScriptTorchScript地址https://pytorch.org/docs/stable/jit.html
Pytorh C++部署框架相关文档https://pytorch.org/cppdocs/
ONNX(Open Neural Network Exchange)是一个用于机器学习模型互操作性的开放格式。它定义了一组通用操作符和文件格式,使不同框架、工具、运行时和编译器之间的模型使用更加便捷。
ONNX官网地址https://onnx.ai/index.html
下面是官网给出的支持的框架的清单
MXNet官网地址https://mxnet.apache.org/versions/1.9.1/
除了上诉工具,MXNet也是一个由亚马逊公司研发的推理引擎的框架,支持Python,C++,R等语言
其部署的推理引擎也是专属于这个框架的,且其本身也支持被转换成onnx格式,且其不如TensorFlow,以及Pytorch等应用广泛,导致其知名度和使用率略低,放弃Pytorch,和TensorFlow,学习MXNet意义不大,因此不对其进行优缺点分析。
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之前详细分析意义不大。
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