在生产环境中部署R模型的选项

46

目前似乎并没有太多部署预测模型到生产环境的选择,这令人惊讶,考虑到大数据的爆炸。

我了解可以使用开源PMML将模型导出为XML规范。然后可以用于数据库内部评分/预测。 但是,似乎要使此项工作正常运行,您需要使用Zementis的PMML插件,这意味着该解决方案并非真正的开源。是否有一种更简单的开放方式将PMML映射到SQL以进行打分?

另一个选项是使用JSON而不是XML来输出模型预测。但在这种情况下,R模型将位于何处? 我假设它总是需要映射到SQL ...除非R模型可以坐落在相同的服务器上作为数据并使用R脚本对该传入数据运行?

还有其他选择吗?


1
因为“大数据”只是数据仓库2.0 - 人们并不会在真正的大数据上进行分类等花哨的操作。那么你就不会使用R,因为它太慢了。 - Has QUIT--Anony-Mousse
2
请查看http://yhathq.com/。 - Ramnath
https://gist.github.com/shanebutler/5456942 用于将R GBM转换为SQL https://gist.github.com/shanebutler/96f0e78a02c84cdcf558 用于将R随机森林转换为SQL - YCR
6个回答

24
以下是我迄今为止发现的部署R模型的替代方案列表。请注意,使用这些产品的工作流程彼此之间存在显着差异,但它们都以某种方式定位于简化将训练好的R模型作为服务公开的过程:

3
请注意,AzureML 除非数据在某种表格中,否则不允许您分析日期。这是一个非常令人沮丧的工具,并且在您没有漂亮的 CSV 文件并且只需要使用基本包时非常有限。安装许多有用的包很困难,因为R版本为3.1,只预安装了400个包。其他包必须通过降级本地R、安装兼容的包、导出它们为双重压缩文件并具有特殊名称才能安装,但有时仍然无法正常运行。如果您可以避免使用AzureML,那就尽量避免吧。 - Esben Eickhardt

16
The answer really depends on what your production environment is. If your "big data" are on Hadoop, you can try this relatively new open source PMML "scoring engine" called Pattern. Otherwise you have no choice (short of writing custom model-specific code) but to run R on your server. You would use save to save your fitted models in .RData files and then load and run corresponding predict on the server. (That is bound to be slow but you can always try and throw more hardware at it.)
如何实现这一点,实际上取决于您的平台。通常有一种方法可以添加用R编写的“自定义”函数。该术语为UDF(用户定义函数)。在Hadoop中,您可以将这些函数添加到Pig中(例如https://github.com/cd-wood/pigaddons),或者使用RHadoop编写简单的map-reduce代码,该代码将加载模型并在R中调用predict。如果您的数据存储在Hive中,则可以使用Hive TRANSFORM来调用外部的R脚本。
此外,还有特定供应商的方法可以将用R编写的函数添加到各种SQL数据库中。同样,请查看文档中的UDF。例如,PostgreSQL具有PL/R

8

2
几年前就提出了这个问题。
对于快速原型,我认为目前最简单的方法是使用Jupyter Kernel Gateway。这允许您向Jupyter笔记本中的任何单元格添加REST端点。这适用于R和Python,具体取决于您使用的内核。
这意味着您可以通过Web界面轻松调用任何R或Python代码。与Docker一起使用时,它适用于部署和扩展应用程序的微服务方法。
这里有一篇文章,从头到尾带您快速设置Jupyter Notebook和Jupyter Kernel Gateway。 学习构建机器学习服务、原型应用程序并将其部署给用户 “将解决方案移动到生产环境”是2019年的主流方法,而使用Kubeflow是最佳选择。Kubeflow由谷歌创建和维护,并使“扩展机器学习(ML)模型并将其部署到生产环境尽可能简单”。根据他们的网站:您可以适应配置来选择每个ML工作流程阶段要使用的平台和服务:数据准备,模型训练,预测服务和服务管理。您可以选择将工作负载部署在本地或云环境中。

2

一种常见的做法是在R中对新/更新的数据集进行评分,然后只将结果(ID、分数、概率、其他必要字段)移动到生产环境/数据仓库中。

我知道这种方法有其局限性(刷新不频繁、依赖于IT、数据集大小/计算能力限制),可能并不是许多人(包括你的老板)正在寻找的前沿答案;但对于许多用例来说,这种方法效果很好(而且成本友好!)。


1

我是 Yhat 的 Elise。

像 @Ramnath 和 @leo9r 提到的那样,我们的软件允许您通过 REST API 端点将任何 R(或 Python)模型直接投入生产。

我们处理实时或批量处理,以及与此过程相关的所有模型测试、版本控制和系统管理。

如果您正在考虑如何将 R 模型投入生产(他们的数据科学团队在使用 Yhat 之前进行 PHP 重新编码),则我们与 VIA SMS 共同撰写的 案例研究 可能会有所帮助。

干杯!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接