机器学习主要是用python来训练的模型,当前主要有以下情况:
一、单机部署方式
1、普通的模型
a)模型本身提供的部署方式:
自己封装一个restful服务,典型为采用:flask封装
b)第三方方式:PMML方式,将模型输出为 PMML格式,由第三方加载PMML模型提供输出,其中java的库很成熟,但PMML在深度学习方面上支持不足
2、深度模型
a)深度的模型,当前流行的为tensorflow,tensorflow提供serving的部署方式,具体来说就是:一个通用的model服务器框架,一个远程通用的model调用的rpc框架,python2中有对应的包,python3中需要引用
其他分布式深度学习框架也有自己的解决方案
b)第三方方式:ONNX--跨框架的模型中间表达框架,支持通用的神经网络的中间表达格式的方法,应该说是深度学习的PMML标准
二、分布式部署
1、简单方案:
对外采用http接口,http接口采用nginx做负载均衡即可,无需请求端做服务返现
2、复杂方案
采用服务发现,将提供服务的注册到一个地方,请求方做简单的服务发现,实现简单的rpc方法。当前docker、k8s、consul提供了不少的支撑
3、分布式运行平台
当前主要是云上的平台(重点在深度学习),开源的支撑分布式运行的平台还很少
三、部署自动化编排
直接将对应的model push到平台上运行,多版本管理和更新,当前除了云上有成熟的方案,其他没有看到。
四、参考文档
1、tensorflow serving方法
算法工程化系列––serving方法(1)
https://zhuanlan.zhihu.com/p/90559710
算法工程化系列––serving方法(2)
https://zhuanlan.zhihu.com/p/90564719
算法工程化系列——模型固化
https://zhuanlan.zhihu.com/p/89510893
Tensorflow Serving部署流程
https://zhuanlan.zhihu.com/p/42905085
Tensorflow Serving 生产环境部署介绍
https://zhuanlan.zhihu.com/p/113527219
2、ONNX Model和PMML Model
Inferencing MNIST ONNX Model using AI-Serving
https://github.com/autodeployai/ai-serving/blob/master/examples/AIServingMnistOnnxModel.ipynb
使用开源AI-Serving部署推理PMML和ONNX模型
https://blog.csdn.net/weixin_45626901/article/details/105815440
使用PMML部署机器学习模型
https://blog.csdn.net/weixin_45626901/article/details/100733053
ONNX--跨框架的模型中间表达框架
https://zhuanlan.zhihu.com/p/41255090
3、其他(分布式模型训练)
基于Hadoop分布式集群YARN模式下的TensorFlowOnSpark平台搭建
https://blog.csdn.net/u010159842/article/details/78604971