构建和公开机器学习模型 REST api 的最佳方法是什么?

har*_*028 5 python java rest machine-learning scikit-learn

我一直致力于使用 springframework 设计 REST api 并将它们部署在 Tomcat 等 Web 服务器上。我还致力于构建机器学习模型,并使用该模型在 Python 中使用 sklearn 进行预测。现在我有一个用例,我想公开一个构建机器学习模型的 REST api 和另一个进行预测的 REST api。什么架构应该帮助我实现同样的目标。(同样的例子可能是亚马逊机器学习。他们已经公开了用于生成模型和进行预测的 REST api)

我在网上搜索了一下,找到了以下方法:

  1. 用 Java 编写整个内容 - ML 模型 + REST api
  2. 用 Python 编写整个内容 - ML 模型 + REST api

但是,与 Java 相比,使用 sklearn 等库在 Python 中使用机器学习、其模型和预测确实更容易、更受支持。我真的很想使用 python 进行机器学习部分

我正在考虑使用 JAVA 编写 REST api 但使用子进程进行 python ML 调用的方法。那行得通吗?

有人可以帮助我了解我可以采取的可能的架构方法吗?还请建议最可行的解决方案。

提前致谢。

Lui*_*eal 2

根据我过去所做的,我建议 2 个选项(也许还有更多,但这是我已经实现的选项)

  1. 如果您有云服务的访问权限和预算,Azure ML 是您的最佳选择,具有出色的 ML 框架和环境,并且要创建您的 REST API,您只需单击 2 次即可公开它,然后使用任何语言的 JSON 来使用它。
  2. 使用 scikit-learn 并用 python 编写 REST API,但可以从任何语言使用,此选项不像 Azure ML 那样简单和用户友好,因为您必须手动编写所有内容并使用 scikit 的模型持久化功能,但是一旦公开,您就可以在 java(或其他任何东西)中使用它。我以此作为参考:https://loads.pickle.me.uk/2016/04/04/deploying-a-scikit-learn-classifier-to-product/
  3. Spark MLlib:我还没有尝试过这个选项,但我在堆栈溢出中问了自己一个问题,并得到了一些有趣的答案:如何提供 Spark MLlib 模型?