有好多种方法可以,需要根据你使用的框架来区分。

1、使用Flask直接加载sklearn、tf的model文件

就是将model用flask发布web api服务,java通过http调用即可

比如这个是把sklearn发布成flask服务:https://towardsdatascience.com/a-flask-api-for-serving-scikit-learn-models-c8bcdaa41daa​towardsdatascience.com

这个把tf model发布成flask服务:https://blog.csdn.net/wangjian1204/article/details/76732337​blog.csdn.net

2、如果是tf,tf本身支持一套tf serving的机制

流程大致是:导出model,用tf serving的docker镜像加载,然后提供grpc或者http服务

然后Java调用grpc服务或者Http服务都可以

参见:https://github.com/tensorflow/serving​github.com

3、使用jpmml将sklearn、tf的服务导出

pmml是一种模型定义语言,不过貌似没有使用起来,因为只能表达简单的模型,一些几百万参数的深度学习模型,这个pmml无能为力。

但是简单的模型可以用导出成pmml,然后java直接加载pmml文件即可;

jpmml已经提供了很多框架的导出功能,参见:Java PMML API​github.com

4、最笨的方法:将模型的参数导出成JSON等格式,JAVA直接加载

比如LR模型,直接把所有参数导出成JSON等格式,JAVA加载参数列表;

当新来的预测请求时,自己做乘法,把参数和变量相乘,然后做sigmoid等等处理,得到最终预测结果。

供参考,觉得不错的可以关注公众号:蚂蚁学Python,一起学习

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐