【问题标题】:Options for deploying R models in production在生产中部署 R 模型的选项
【发布时间】:2014-04-14 02:11:51
【问题描述】:

在生产中部署预测模型似乎没有太多选择,鉴于大数据的爆炸式增长,这令人惊讶。

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

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

还有其他选择吗?

【问题讨论】:

标签: r deployment machine-learning classification pmml


【解决方案1】:

这个问题最初被问到已经有几年了。

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

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

这篇文章将引导您从头到尾快速设置使用 Jupyter 内核网关的 Jupyter Notebook。

Learn to Build Machine Learning Services, Prototype Real Applications, and Deploy your Work to Users

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

来自他们的网站:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 您必须知道,AzureML 不允许您分析日期,除非它位于某种表格中。这是一个非常令人沮丧的工具,并且非常有限,除非你有漂亮的 CSV 文件并且只需要使用非常基本的包。安装许多有用的包非常困难,因为 R 是 3.1 版,并且只预装了 400 个包。必须通过降级本地 R、安装兼容包、将它们导出为需要具有特殊名称的双压缩文件来安装其他备份,但它有时只能工作。如果你能避免 AzureML,我会的。
    【解决方案3】:

    您可以使用管道工 (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。

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        这里是来自 Yhat 的 Elise。

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

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

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

        干杯!

        【讨论】:

          【解决方案6】:

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

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

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

          您如何做到这一点实际上取决于您的平台。通常有一种方法可以添加用 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

          【讨论】:

            猜你喜欢
            • 2019-06-11
            • 2017-08-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-09-09
            • 2019-07-07
            相关资源
            最近更新 更多