业界已有的解决方法
模型部署.png
各种方法分析
RServer
基本上我们用Rserver方式,针对一次1000条或者更少请求的预测,可以控制95%的结果在100ms内返回结果,100ms可以满足工程上的实践要求。更大的数据量,比如10000/次,100000/次的预测,我们目前评估下来满足不了100ms的要求,建议分批进行调用或者采用多线程请求的方式来实现。
机器学习算法线上部署方法 https://zhuanlan.zhihu.com/p/23382412
PFA
PFA太新,开源支持太少
PMML
PCA,归一化可以封装成preprocess转换成PMML
特征处理支持比较少
mleap
优点:使用Spark和Scikit-learn, 如果不希望在API堆栈中使用Python,很难将ML /数据 pipeline模型部署到生产API服务。 MLeap提供简单的接口来执行整个ML pipeline,从特征变换到分类,回归,聚类算法和神经网络。
http://mleap-docs.combust.ml/core-concepts/mleap-bundles.html#bundle-structure
H2O
H2O.AI ,H2O.ai,提供了MOJO和POJO的方式;
H2O是一个完全开源的分布式内存机器学习平台,具有线性可扩展性。 H2O支持最广泛使用的统计和机器学习算法,包括梯度增强机器,广义线性模型,深度学习等。 H2O还具有业界领先的AutoML功能,可自动运行所有算法及其超参数,以生成最佳模型的排行榜。 H2O平台被全球14,000多家组织使用,并且在R&Python社区中非常受欢迎。
优点:使用Java(POJO)和二进制格式(MOJO)快速轻松地将模型部署到生产中。满足了pipeline部署到生产环境
缺点:离线训练需要基于H2O的分布式系统、学习维护成本比较高。
preditionIO
preditionIO,Welcome to Apache PredictionIO™!,可以基于spark和hbase来提供相应的API服务,还是很方便的
缺点:与Apache Spark,MLlib,HBase,Spray和Elasticsearch捆绑在一起,不能单独部署,不够灵活
结合我们现在的技术栈,综合下来采用MLeap是个不错的选择,相对于我们现在的框架优点明显,随后对MLeap进行一些基础测试。
作者:jacksu在简书
链接:https://www.jianshu.com/p/ed5ae4cb4bd3