目前机器学习模型线上部署的总结分类为
1、离线预测+不跨语言
这种最简单,就是用什么语言训练的就用什么语言预测,而且不用考虑多并发和响应时间等问题
2、离线预测+跨语言
用一种语言训练,另一种语言预测,但是不用考虑多并发和响应时间等问题
3、在线预测+不跨语言
用同一种语言训练和预测,同时要考虑多并发和响应时间等问题,
像scala和java这种都是跑在jvm上的,以及tf自己实现了java库的,可以认为是同一种语言
4、在线预测+跨语言
用不同的语言训练和预测,目前没有用到
实战:
目前在我们没有grpc,或者thrift 这种 rpc的跨语言调用方式,
所以对于机器学习模型的部署, 要么采用官方提供的jpmml来实现跨语言调用,
要么则采用将模型的预测部分代码 变成java的形式来实现
这两种方法,通过实际测试发现性能上java版预测模型的速度是官方提供的jpmml的五倍左右
在没有grpc这种方式之前,实现预测模型的java版本的性能最好