不仅要训练,还要部署:分步指南
最近,在机器学习领域运营的组织对大规模构建和部署数据驱动的智能系统产生了极大的兴趣。这不仅导致了高效和准确系统的快速发展,而且还通过使用智能嵌入式产品在改善整体最终用户体验方面做出了巨大贡献。
由于与智能嵌入式软件相关的各种好处,在部署阶段管理机器学习模型已成为当今机器学习工程师的一项基本技能。有时,这甚至可能需要单独的团队来发布和管理部署中的产品。
因此,这篇文章将详细介绍如何将经过训练的模型用于部署。具体来说,我将演示使用 Flask 创建 Web 应用程序,然后使用 Heroku 将机器学习模型部署到云端。
让我们开始!
什么是部署?
对于初学者来说,部署是将经过训练的机器学习模型集成到生产环境中的过程,通常旨在为最终用户服务。
部署通常是机器学习产品开发生命周期的最后阶段。下图描述了开发生命周期的简要概述:
上面的“模型部署”阶段由一系列步骤组成,如下图所示:
部署机器学习模型的三个主要步骤如下:
- 首先,我们开发机器学习模型。这包括收集相关数据并对其进行分析、生成特征、选择模型、执行超参数调整以及最后评估模型。
- 一旦我们对预测和准确度指标有信心,我们会将模型集成到 Web 应用程序中,例如 Flask、Django 等。这涉及创建应用程序的前端(或用户界面)以供用户交互和提供输入,然后与后端混合,将获得的数据馈送到机器学习模型进行预测。
- 最后,我们使用 Heroku、Google Cloud 等托管服务将应用程序部署到服务器。
出于本教程的目的,我将使用 Flask 来构建 Web 应用程序。继续前进,我将在 Heroku 服务器上部署应用程序。
第 1 步:开发机器学习模型
在本节中,让我们训练我们打算部署的机器学习模型。为简单起见且不偏离本文的主要目标,我将部署一个线性回归模型。
#1 生成虚拟数据点
我将在下面散点图中描述的一组虚拟数据点上训练线性回归模型:
从自变量到 x 到因变量 y 的映射实现如下:
#2 训练模型
接下来,我将使用 scikit-learn 来训练一个线性回归模型。 如下所示:
模型学习到的回归线如下图所示:
#3 将模型保存到 Pickle 文件
要将训练好的模型部署到 Heroku 服务器上,您应该将其保存为 pickle 文件,如下面的代码块所示:
第 2 步:使用 Flask 创建 Web 应用程序
Flask 是一个流行的 web 框架,用于在 python 中构建轻量级 web 应用程序。如上所述,在这个项目中使用 Flask 的目的是构建一个最终用户可以与之交互的 Web 应用程序。
在本节中,我将使用在步骤 1 中创建的模型 pickle 文件并将其集成到 Web 应用程序中。 Web 应用程序的前端将允许用户向模型提供输入。这将被提取并交付给在后端运行的模型以进行预测。最后,我们将检索模型的预测并将其显示给用户。
#1 项目要求
要在 Flask 中构建 Web 应用程序,您应该在 python 中安装 Flask 库。打开命令行并输入以下命令来安装 Flask:
pip install Flask
#2 Web 应用程序工作流程
暂时忽略技术实现,Web应用程序的逐步预期工作流程应该如下(通俗地说):
- 首先,我们显示一个带有表单的 HTML 页面,供用户提供输入。此外,用户应该点击“预测”按钮来知道相应的输出。
- 一旦用户点击“预测”,Web 应用程序应该获取输入值并将其带到后端进行进一步处理。
- 下一步是根据获取的值计算输入特征,并将它们作为输入提供给经过训练的模型以生成输出。
- 最后,应用程序应将预测值携带到 HTML 页面并将其显示给用户。
#3 实施
要在 Flask 中构建这个 Web 应用程序,我们需要编写两个文件并将它们集成在一起。这些是:
- app.py:此文件包含与网页交互的 Flask API。它负责获取输入值,加载模型后计算预测,并将其返回到 HTML 文件。
- new.html:顾名思义,此文件包含用户将看到的 Web 应用程序的前端。
应用程序的当前目录结构是:
Linear_Regression_Model├── templates│ ├── new.html├── app.py└── model.pickle
这两个文件的实现如下所示:
- app.py 文件定义了两个方法,new() 和 predict()。 new() 方法对应于应用程序的“/” URL,并返回 new.html 网页。
- predict() 方法用于计算模型的预测。 当用户点击网页上的“预测”按钮时,一个 POST 请求被发送到 predict() 方法。
- 一旦模型给出了它的预测,我们再次渲染 new.html 页面并发送一个显示给用户的 prediction_statement。
#4 应用程序演练
要执行该应用程序,请在项目目录中运行 python app.py。 服务器开始运行后,在任何本地浏览器中转到 http://127.0.0.1:5000/ 以打开应用程序。
此应用程序的演练如下所示:
如上面的 gif 所示,用户得到一个表单来输入一个值。 这被带到后端进行处理。 一旦模型做出预测,预测值就会显示给用户。
第 3 步:将应用程序部署到 Heroku 服务器
现在我们已经训练了机器学习模型并将其集成到 Web 应用程序中,我们的最后一步是将应用程序部署到 Heroku 服务器——一个免费的云即服务平台,用于部署任何 Web 应用程序。
支持的编程语言包括 Java、PHP、Python、Go 等。此外,大多数数据科学家使用 Heroku 来获得在云上部署模型的实践经验。 但是,在部署应用程序之前,您应该在 Heroku 上创建一个帐户。
为了将代码推送到 Heroku 服务器并进行部署,Heroku 提供了三种不同的方式:Heroku git、GitHub 和容器注册表。
我将在这篇文章中使用 Heroku Git 来部署模型。
现在,让我们从部署过程开始。
#1 安装要求
在包要求方面,您应该在python中安装gunicorn包,如下所示:
pip install gunicorn
接下来,您应该安装 Heroku 命令行界面 (Heroku-CLI)。 根据您的操作系统,您可以在此处找到说明。
#2 将 requirements.txt 和 Procfile 添加到目录
在将代码推送到部署之前,您应该在 requirements.txt 文件中指定项目的需求。 该项目的文件如下所示:
Flask==2.1.0Werkzeug==2.0.3numpy==1.21.5gunicorn==20.1.0jinja2Werkzeugitsdangerous
接下来,创建一个新文件并将其命名为 Procfile,并添加以下命令:
web: gunicorn app:new
本质上,该文件让生产环境知道应用程序文件中的哪个函数是主要方法。 此外,它还提供了应用程序在启动时运行的命令。 app:new 部分表示主文件是 app.py,其中 new() 方法是主要功能。
完成此步骤后,您的目录结构应如下所示:
Linear_Regression_Model├── templates│ ├── new.html├── app.py├── model.pickle├── requirements.txt└── Procfile
#3 在 Heroku 服务器上创建一个应用程序
导航到您的帐户仪表板并选择创建新应用程序。
接下来,为您的应用程序键入一个名称,然后选择创建应用程序。
创建应用程序后,您可以开始部署过程,这将在下一步中演示。
#4 将应用部署到 Heroku 服务器
首先,选择 Heroku Git 作为“部署方法”。
在本地计算机上打开终端并登录 Heroku。 确保您已安装 Heroku-CLI。
$ heroku login
接下来,导航到您的项目并初始化一个 git 存储库,如下所示:
$ cd my-project/$ git init$ heroku git:remote -a linearregressiontest
现在,将您的代码提交到存储库并使用 Git 将其部署到 Heroku。
$ git add .$ git commit -am "deployment step 1"$ git push heroku master
如果部署成功,您应该在命令行中看到以下日志:
至此,您的机器学习模型已成功部署! 该应用程序可通过以下地址访问:
https://your-app-name.herokuapp.com/
结论
最后,在这篇文章中,我详细介绍了如何从头开始部署机器学习模型。
具体来说,我首先演示了简单线性回归模型的训练,然后将其集成到使用 Flask 开发的 Web 应用程序中。
最后,我演示了使用 Heroku Git 将 Web 应用程序部署到 Heroku 服务器的分步过程。
关注七爪网,获取更多APP/小程序/网站源码资源!
版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除