44

考虑到大数据的爆炸式增长,在生产中部署预测模型似乎没有太多选择。

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

另一种选择是使用 JSON 而不是 XML 来输出模型预测。但在这种情况下,R 模型会放在哪里?我假设它总是需要映射到 SQL...除非 R 模型可以与数据位于同一服务器上,然后使用 R 脚本针对传入的数据运行?

还有其他选择吗?

4

6 回答 6

24

以下是迄今为止我发现的在生产中部署 R 模型的替代方案列表。请注意,使用这些产品的工作流程彼此之间存在很大差异,但它们都以某种方式面向促进将经过训练的 R 模型公开为服务的过程:

于 2014-11-23T19:59:11.867 回答
16

答案实际上取决于您的生产环境是什么。

如果您的“大数据”在 Hadoop 上,您可以尝试这个相对较新的开源 PMML“评分引擎”,称为Pattern

否则,您别无选择(除了编写自定义模型特定代码),只能在您的服务器上运行 R。您将使用save将拟合模型保存在 .RData 文件中,然后在服务器上load运行相应的模型。predict(这肯定会很慢,但你总是可以尝试投入更多的硬件。)

你如何做到这一点实际上取决于你的平台。通常有一种方法可以添加用 R 编写的“自定义”函数。术语是 UDF(用户定义函数)。在 Hadoop 中,您可以将此类函数添加到 Pig(例如https://github.com/cd-wood/pigaddons),或者您可以使用RHadoop编写简单的 map-reduce 代码来加载模型并predict在 R 中调用。如果您的数据在 Hive 中,您可以使用Hive TRANSFORM来调用外部 R 脚本。

还有一些特定于供应商的方法可以将用 R 编写的函数添加到各种 SQL 数据库中。再次在文档中查找 UDF。例如,PostgreSQL 有PL/R

于 2014-03-11T01:09:21.400 回答
8

您可以使用管道工 ( https://github.com/trestletech/plumber )为您的 R 脚本创建 RESTful API 。

我以部署信用模型为例写了一篇关于它的博客文章(http://www.knowru.com/blog/how-create-restful-api-for-machine-learning-credit-model-in-r/ ) .

一般来说,我不推荐 PMML,因为您使用的包可能不支持转换为 PMML。

于 2017-03-02T21:25:21.817 回答
2

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

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

于 2016-11-16T14:57:02.383 回答
2

自从最初提出这个问题以来已经有几年了。

对于快速原型设计,我认为目前最简单的方法是使用Jupyter Kernel Gateway。这允许您将 REST 端点添加到 Jupyter 笔记本中的任何单元格。这适用于 R 和 Python,具体取决于您使用的内核。

这意味着您可以通过 Web 界面轻松调用任何 R 或 Python 代码。当与 Docker 结合使用时,它适用于一种微服务方法来部署和扩展您的应用程序。

这是一篇文章,将带您从头到尾快速设置您的 Jupyter Notebook 与 Jupyter Kernel Gateway。

学习构建机器学习服务、原型真实应用程序并将您的工作部署给用户

为了将解决方案转移到 生产中,2019 年的主要方法是使用Kubeflow。Kubeflow 由 Google 创建和维护,它使“扩展机器学习 (ML) 模型并将其部署到生产环境中尽可能简单”。

从他们的网站:

您可以调整配置以选择要用于ML 工作流每个阶段的平台服务:数据准备、模型训练、预测服务和服务管理。您可以选择将工作负载部署到本地或云环境

于 2018-10-16T19:39:40.027 回答
1

来自 Yhat 的 Elise。

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

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

如果您正在考虑如何将 R 模型投入生产(他们的数据 sci 团队在使用 Yhat 之前将其重新编码为 PHP),我们与 VIA SMS 共同撰写的这个案例研究可能会很有用。

干杯!

于 2016-10-06T17:08:07.003 回答