如何将 Scikit-learn 模型部署到云端?

数据挖掘 scikit-学习
2021-09-27 22:10:34

我已经为文本分类生成了一个通用的 Sklearn 模型,我希望它可以作为 API 在云中访问(没有提供者偏好)。

到目前为止,我设法找到的最接近的解决方案是在本教程中,但它似乎相当复杂(例如,在开始时获取 venv.zip 依赖包尚不清楚)和具体(在我的情况下,涉及 NLTK 和外部斯坦福分段器用于预处理,我无法弄清楚将所有这些模块放在哪里以及如何调用它们)。

有没有一种体面而强大的方法来解决这个挑战?

3个回答

如果您想将 scikit-learn 模型部署到云并能够通过 API 访问它,我猜您会想要访问该predict方法。

API

要使用 python 构建 API,最简单的方法是使用 Flask 或 Django。对于这些类型的任务,我更喜欢 Flask,因为它具有更简单的界面。然而,Django 为您提供了更多较低级别的控制。

您必须创建一些客户端将通过向您发送输入数据来调用的路由,一旦您在服务器端收到它,您只需将其传递给您的 Sklearn 模型,然后将输出发送回客户端.

在云端运行 sklearn

您需要注意的另一件事是在您将使用的任何云解决方案上运行 Python。为了部署您的 Flask/Django 应用程序,我可能会使用 Docker,因为它在许多平台上都得到了很好的支持。这是一个关于如何在 Azure 上部署 Docker 容器的示例

您还可以使用clipper.ai创建一个简单的标准 REST API 进行预测。它适用于任何容器化模型(不仅仅是 scikit-learn)并且具有可扩展性,您只需要 Docker。

Flask 是一个基于python 的包,用于开发restful api 服务(api services)。当您运行应用程序(直接从命令窗口)时,您将收到一条消息,告诉您不应将此应用程序用作生产环境。从 cmd 运行应用程序并使用它是非常危险且不可靠的。那么如何使用使用烧瓶开发的应用程序(Web 服务)?

答案是:你可以使用 IIS 来托管一个烧瓶应用程序,但是如何做到这一点呢?

1- 安装 IIS:您需要确保 IIS 已安装并配置了 CGI 角色服务(这也启用了 FastCGI)。

2-午餐IIS,确保以管理员身份运行它。- 单击是启动 Microsoft Web 平台

  • 如果您没有收到此消息,则需要安装平台安装程序

  • 搜索 WFastCGI

  • 选择适当的 Python 版本(3.4 或 2.7.9)。单击“添加”,然后单击“安装”。

  • 如果您在查找 WFastCGI 时遇到问题,您需要从这个页面wfastcgi下载它,您可以运行以下命令:pip install wfastcgi

3- 将 wfastcgi.py 从 C:\Python34(如果你有一个现有的 Python34 目录,可以命名为 C:\Python34_x86)复制到你的 Flask 应用程序根目录。

4- 双击“处理程序映射”(在 IIS 中)

5-单击“添加模块映射”

6- 单击“请求限制”。确保“仅当请求映射到时才调用处理程序:”复选框未选中。

7- 转到根服务器设置并单击“FastCGI 设置”。

8- 双击它,然后单击环境变量集合的“...”以启动环境变量集合编辑器。

9- 设置 PYTHONPATH 变量: - 名称:PYTHONPATH,值:您的站点目录

10-设置 WSGI_HANDLER (我的 Flask 应用程序名为 app.py,因此值为 app.app - 如果您的名为 site.py,则为 site.app 或类似名称

11-那一套。

归功于此页面,您将找到更多详细信息。 在 IIS 上部署 Flask