概述
目前比较流行的4类机器学习模型上线的形式:
1、离线预测 + 不跨语言
这种形式最简单,就是用什么语言训练的就用什么语言预测,而且不用考虑高并发和响应时间等问题。
案例1:python训练 + airflow调度
使用python训练好模型,并用joblib.dumps()保存模型文件,然后我们在python文件中使用joblib.load()加载模型文件,最后再使用airflow离线调度(简单的任务使用Linux自带cron即可,复杂的再考虑airflow)。
2、离线预测 + 跨语言
用一种语言训练,另一种语言预测,但是不用考虑多高并发和响应时间等问题。
案例2:R + pmml + spark + airflow调度
使用R语言训练模型并转为pmml文件,然后我们使用spark将这个pmml文件封装为jar,使用airflow提交到yarn。
val is: InputStream = fs.open(path)
val pmml: PMML = PMMLUtil.unmarshal(is)
modelEvaluator = ModelEvaluatorFactory.newInstance.newModelEvaluator(pmml)
3、在线预测 + 不跨语言
训练和预测都使用同一种语言,同时要考虑高并发和响应时间等问题。
案例3:使用分布式spark版的xgboost,训练好的模型直接保存为二进制文件model.booster.saveModel(hdfsOutStream),然后xgboost4j加载该文件XGBoost.loadModel(is)实现线上实时预测。
4、在线预测 + 跨语言
训练和预测都使用不同的语言,同时要考虑高并发和响应时间等问题。
案例3:python + pmml + spark版的xgboost
目前这种场景比较少。就是案例2和3变一下的情景。
总结:
不跨平台(语言)的时候,就不需要使用PMML ,因为任何中间格式都会牺牲掉独有的优化。 而其他跨平台的模型要转为java能使用的类(因为我们的业务大部分是java实现的),这个工具就是jpmml-evaluator。
最后
以上就是冷傲乌龟为你收集整理的机器学习模型线上部署方法的全部内容,希望文章能够帮你解决机器学习模型线上部署方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复