文档
  • PyCaret 3.0
  • 入门
    • 💻安装
    • 🚀快速入门
    • ⭐教程
    • 📶模块
    • ⚙️数据预处理
      • 数据准备
      • 缩放与转换
      • 特征工程
      • 特征选择
      • 其他设置参数
    • 💡函数
      • 初始化
      • 训练
      • 优化
      • 分析
      • 部署
      • 其他
  • 学习 PYCARET
    • 📖博客
      • 发布 PyCaret 1.0
      • 发布 PyCaret 2.0
      • 关于 PyCaret 你不知道的 5 件事
      • 构建并部署你的第一个机器学习 Web 应用
      • 使用 PyCaret 在 Power BI 中构建你自己的 AutoML
      • 在 Google Kubernetes 上部署 ML 流水线
      • 在 AWS Fargate 上部署 PyCaret 和 Streamlit
      • 使用 PyCaret 在 Power BI 中进行异常检测
      • 在 Google Kubernetes 上部署 ML 应用
      • 在 GKE 上部署机器学习流水线
      • 在 AWS Fargate 上部署机器学习流水线
      • 使用 Docker 将 ML 流水线部署到云端
      • 使用 PyCaret 在 Power BI 中进行聚类分析
      • 使用 ONNX Runtime 将 PyCaret 模型部署到边缘设备
      • GitHub 是你永远需要的最佳 AutoML
      • 在 AWS Fargate 上部署 PyCaret 和 Streamlit
      • 使用 PyCaret 和 MLflow 轻松实现 MLOps
      • 使用 PyCaret 在 Power BI 中进行聚类分析
      • 使用 PyCaret 在 Alteryx 中进行机器学习
      • 使用 PyCaret 在 KNIME 中进行机器学习
      • 使用 PyCaret 在 SQL 中进行机器学习 第一部分
      • 使用 PyCaret 在 Power BI 中进行机器学习
      • 使用 PyCaret 在 Tableau 中进行机器学习
      • 使用 PyCaret 进行多时间序列预测
      • 使用 PyCaret 预测客户流失
      • 使用 PyCaret 预测潜在客户得分(正确方法)
      • 使用 PyCaret 在 Python 中进行 NLP 文本分类
      • 使用 PyCaret 预测潜在客户得分(正确方法)
      • 使用 PyCaret 预测黄金价格暴跌
      • 使用机器学习预测黄金价格
      • PyCaret 2.1 功能总结
      • 使用 PyCaret 将 ML 模型部署到 SQL Server
      • 使用 PyCaret 和 Gradio 加速你的 ML
      • 时间序列 101 - 适合初学者
      • 使用 PyCaret 进行时间序列异常检测
      • 使用 PyCaret 回归进行时间序列预测
      • 使用 PyCaret 在 Power BI 中进行主题建模
      • 使用 PyCaret 编写和训练自定义 ML 模型
      • 使用 PyCaret 和 Streamlit 构建并部署 ML 应用
      • PyCaret 2.3.6 发布啦!看看有什么新功能?
    • 📺视频
    • 🛩️速查表
    • ❓常见问题
    • 👩‍💻示例
  • 重要链接
    • 🛠️发布说明
    • ⚙️API 参考
    • 🙋 讨论
    • 📤问题
    • 👮 许可
  • 媒体
    • 💻Slack
    • 📺YouTube
    • 🔗LinkedIn
    • 😾GitHub
    • 🔅Stack Overflow
由 GitBook 提供支持
本页内容
  • 在 Google Kubernetes Engine 上部署机器学习流水线
  • 回顾
  • 👉 本教程的学习目标
  • 💻 本教程的工具箱
  • PyCaret
  • Flask
  • Google Cloud Platform
  • 让我们开始吧。
  • 什么是 Kubernetes?
  • 特性
  • 如果你已经有了 Docker,为什么还需要 Kubernetes?
  • 什么是 Google Kubernetes Engine?
  • 最后再问一遍,你理解了吗?
  • 设置业务背景
  • 目标
  • 任务
  • 👉 开发机器学习流水线
  • 👉 构建 Web 应用
  • 在 Google Kubernetes Engine 上部署 ML 流水线的 10 个步骤
  • PyCaret 1.0.1 即将发布!
  • 想了解特定模块吗?
  • 另请参阅
  • 你想贡献吗?

这有帮助吗?

  1. 学习 PYCARET
  2. 博客

在 GKE 上部署机器学习流水线

上一页在 Google Kubernetes 上部署 ML 应用下一页在 AWS Fargate 上部署机器学习流水线

上次更新于 2 年前

这有帮助吗?

在 Google Kubernetes Engine 上部署机器学习流水线

作者:Moez Ali

将 ML 流水线容器化并部署到 Google Kubernetes Engine 的分步初学者指南

回顾

在本教程中,我们将使用之前构建和部署的相同机器学习流水线和 Flask 应用。这次我们将演示如何在 Google Kubernetes Engine 上将机器学习流水线容器化并部署。

👉 本教程的学习目标

  • 了解什么是容器、什么是 Docker、什么是 Kubernetes 以及什么是 Google Kubernetes Engine?

  • 构建 Docker 镜像并将其上传到 Google Container Registry (GCR)。

  • 创建集群并将带 Flask 应用的机器学习流水线部署为 Web 服务。

  • 查看一个正在运行的 Web 应用,该应用使用经过训练的机器学习流水线实时预测新的数据点。

本教程将涵盖从构建 docker 镜像、将其上传到 Google Container Registry,然后将预训练的机器学习流水线和 Flask 应用部署到 Google Kubernetes Engine (GKE) 的整个工作流程。

💻 本教程的工具箱

PyCaret

pip install pycaret

Flask

Google Cloud Platform

让我们开始吧。

在我们深入了解 Kubernetes 之前,先来了解一下什么是容器以及为什么我们需要它?

你是否曾遇到过这样的问题:你的代码在你的电脑上运行良好,但当你的朋友尝试运行完全相同的代码时,却无法运行?如果你的朋友重复完全相同的步骤,他或她应该得到相同的结果,对吗?这个问题的简短答案就是**环境**。你朋友的环境与你的不同。

环境包括什么?→ 编程语言(如 Python)以及构建和测试应用程序时使用的所有具有确切版本的库和依赖项。

如果我们能创建一个可以转移到其他机器(例如:你朋友的电脑或像 Google Cloud Platform 这样的云服务提供商)的环境,我们就可以在任何地方重现结果。因此,***容器***是一种将应用程序及其所有依赖项打包在一起的软件类型,以便应用程序能够在不同的计算环境中可靠地运行。

那么 Docker 是什么?

既然你已经具体了解了容器和 Docker,那么让我们来了解一下 Kubernetes 是怎么回事。

什么是 Kubernetes?

Kubernetes 是 Google 在 2014 年开发的一个强大的开源系统,用于管理容器化应用程序。简单来说,Kubernetes 是一个用于在机器集群中运行和协调容器化应用程序的系统。它是一个旨在完全管理容器化应用程序生命周期的平台。

特性

✔️ **负载均衡:**自动分配容器之间的负载。

✔️ **扩缩容:**当需求变化时(如高峰时段、周末和节假日),通过添加或删除容器自动扩缩容。

✔️ **存储:**使应用程序的多个实例保持存储一致性。

✔️ 自我修复 自动重启失败的容器,并终止不响应用户定义健康检查的容器。

✔️ **自动化发布 **你可以自动化 Kubernetes 为你的部署创建新容器,删除现有容器并将所有资源转移到新容器。

如果你已经有了 Docker,为什么还需要 Kubernetes?

想象一下这样的场景:你必须在多台机器上运行多个 Docker 容器来支持一个企业级 ML 应用程序,并且该应用程序在白天和夜晚的工作负载变化很大。这听起来可能很简单,但手动操作起来却非常费力。

你需要及时启动正确的容器,弄清楚它们如何相互通信,处理存储注意事项,并应对失败的容器或硬件。这就是 Kubernetes 正在解决的问题,它允许大量容器协同工作,减轻了操作负担。

将 **Docker 与 Kubernetes** 进行比较是错误的。这是两种不同的技术。Docker 是一种允许你将应用程序容器化的软件,而 Kubernetes 是一种容器管理系统,允许创建、扩缩和监控成百上千个容器。

在任何应用程序的生命周期中,Docker 用于在部署时打包应用程序,而 Kubernetes 则用于后续的应用程序管理。

什么是 Google Kubernetes Engine?

Google Kubernetes Engine 是 Google 在 Google Cloud Platform 上实现的谷歌开源 Kubernetes。就这么简单!

最后再问一遍,你理解了吗?

  • **容器**是一种将应用程序及其所有依赖项打包在一起的软件类型,以便应用程序能够在不同的计算环境中可靠地运行。

  • **Docker** 是一种用于构建和管理容器的软件。

  • **Kubernetes** 是一个开源系统,用于在集群环境中管理容器化应用程序。

  • Google Kubernetes Engine 是在 Google Cloud Platform 上实现的开源 Kubernetes 框架。

设置业务背景

一家保险公司希望通过在住院时使用人口统计学和基本患者健康风险指标更准确地预测患者费用来改善其现金流预测。

目标

构建和部署一个 Web 应用,在该应用中将患者的人口统计和健康信息输入到基于 Web 的表单中,然后输出预测的费用金额。

任务

  • 训练和开发用于部署的机器学习流水线。

  • 使用 Flask 框架构建一个 Web 应用。它将使用经过训练的 ML 流水线实时生成新数据点的预测。

  • 构建 docker 镜像并将容器上传到 Google Container Registry (GCR)。

  • 创建集群并将应用部署到 Google Kubernetes Engine。

👉 开发机器学习流水线

我们使用 Python 中的 PyCaret 来训练和开发机器学习流水线,该流水线将作为我们 Web 应用的一部分使用。机器学习流水线可以在集成开发环境 (IDE) 或 Notebook 中开发。我们使用 Notebook 运行以下代码

当你在 PyCaret 中保存模型时,会创建基于 **setup()** 函数中定义配置的整个转换流水线。所有相互依赖关系都会自动协调。查看存储在 ‘deployment_28042020’ 变量中的流水线和模型

👉 构建 Web 应用

本教程的重点不是构建 Flask 应用程序,在此提及仅为完整性考虑。现在我们的机器学习流水线已准备就绪,我们需要一个可以连接到我们训练好的流水线并实时生成新数据点预测的 Web 应用程序。我们使用 Python 中的 Flask 框架创建了这个 Web 应用程序。该应用程序包含两个部分

  • 前端(使用 HTML 设计)

  • 后端(使用 Flask 开发)

这是我们的 Web 应用的外观

现在我们有了一个功能齐全的 Web 应用程序,我们可以开始将其容器化并部署到 Google Kubernetes Engine 上了。

在 Google Kubernetes Engine 上部署 ML 流水线的 10 个步骤

👉 第 1 步 — 在 GCP 控制台中创建新项目

登录到你的 GCP 控制台并转到“管理资源”

点击创建新项目

👉 第 2 步 — 导入项目代码

点击控制台窗口顶部的“**激活 Cloud Shell**”按钮以打开 Cloud Shell。

在 Cloud Shell 中执行以下代码以克隆本教程中使用的 GitHub 仓库。

git clone https://github.com/pycaret/pycaret-deployment-google.git

👉 第 3 步 — 设置项目 ID 环境变量

执行以下代码设置 PROJECT_ID 环境变量。

export PROJECT_ID=**pycaret-kubernetes-demo**

pycaret-kubernetes-demo 是我们在上面第 1 步中选择的项目名称。

👉 第 4 步 — 构建 docker 镜像

通过执行以下代码构建应用程序的 docker 镜像并为其添加标签以进行上传

docker build -t gcr.io/${PROJECT_ID}/insurance-app:v1 .

通过运行以下代码可以检查可用的镜像

docker images

👉 第 5 步 — 上传容器镜像

  1. gcloud auth configure-docker

  2. 执行以下代码将 docker 镜像上传到 Google Container Registry

    docker push gcr.io/${PROJECT_ID}/insurance-app:v1

👉 第 6 步 — 创建集群

容器上传完成后,你需要一个集群来运行容器。集群由运行 Kubernetes 的 Compute Engine VM 实例池组成。

  1. 为 gcloud 工具设置你的项目 ID 和 Compute Engine 区域选项

    gcloud config set project $PROJECT_ID gcloud config set compute/zone us-central1

  2. 通过执行以下代码创建一个集群

    gcloud container clusters create insurance-cluster --num-nodes=2

👉 第 7 步 — 部署应用程序

要在 GKE 集群上部署和管理应用程序,你必须与 Kubernetes 集群管理系统通信。执行以下命令部署应用程序

kubectl create deployment insurance-app --image=gcr.io/${PROJECT_ID}/insurance-app:v1

👉 第 8 步 — 将你的应用程序暴露到互联网

默认情况下,你在 GKE 上运行的容器无法从互联网访问,因为它们没有外部 IP 地址。执行以下代码将应用程序暴露到互联网

kubectl expose deployment insurance-app --type=LoadBalancer --port 80 --target-port 8080

👉 第 9 步 — 检查服务

执行以下代码获取服务状态。EXTERNAL-IP 是你可以在浏览器中用于查看已发布应用程序的网址。

kubectl get service

注意:本文发表时,该应用程序将从公共地址移除以限制资源消耗。

PyCaret 1.0.1 即将发布!

想了解特定模块吗?

截至 1.0.0 首个版本,PyCaret 提供以下可用模块。点击下方链接查看文档和 Python 中的工作示例。

另请参阅

Notebook 中的 PyCaret 入门教程

你想贡献吗?

在我们的关于在云端部署机器学习流水线,我们演示了如何在 PyCaret 中开发机器学习流水线,使用 Docker 将其容器化并使用 Microsoft Azure Web App Services 提供 Web 应用服务。如果你之前没听说过 PyCaret,请阅读这篇了解更多信息。

之前我们演示了和

是一个开源的低代码 Python 机器学习库,用于训练和部署机器学习流水线和模型到生产环境。可以使用 pip 轻松安装 PyCaret。

是一个允许你构建 Web 应用程序的框架。Web 应用程序可以是商业网站、博客、电子商务系统,或者是一个使用训练好的模型实时从提供的数据中生成预测的应用程序。如果你没有安装 Flask,可以使用 pip 进行安装。

Google Cloud Platform (GCP) 由 Google 提供,是一套云计算服务,运行在 Google 内部用于其终端用户产品(如 Google Search、Gmail 和 YouTube)的相同基础设施上。如果你没有 GCP 账户,可以注册。如果你是首次注册,将获得 1 年的免费额度。

https://www.freepik.com/free-photos-vectors/cargo-ship

Docker 是一家提供软件(也称为 Docker)的公司,该软件允许用户构建、运行和管理容器。虽然 Docker 的容器最常用,但还有其他不太知名的替代方案,例如和提供容器解决方案。

Photo by chuttersnap on Unsplash
通过 Kubernetes / Docker 部署的应用程序生命周期

GKE 的其他流行替代方案有和.

在本教程中,我们将使用 Google Kubernetes Engine。要跟着做,你必须拥有一个 Google Cloud Platform 账户。免费注册。

()

由于我们已经在初始教程中涵盖了前两个任务,我们将快速回顾一下,然后重点关注上面列表中的剩余项目。如果你有兴趣了解更多关于如何使用 Python 中的 PyCaret 开发机器学习流水线以及使用 Flask 框架构建 Web 应用的信息,请阅读.

使用 PyCaret 创建的机器学习流水线
本地机器上的 Web 应用程序

如果你还没跟上,没关系。你可以直接 fork 这个从 GitHub。你的项目文件夹此时应如下所示

https://www.github.com/pycaret/pycaret-deployment-google.git
Google Cloud Platform 控制台 → 管理资源
Google Cloud Platform 控制台 → 管理资源 → 创建新项目
Google Cloud Platform(项目信息页面)
git clone https://github.com/pycaret/pycaret-deployment-google.git
docker 构建成功时返回的消息
在 Cloud Shell 上运行 “docker images” 命令的输出

验证到(你只需要运行一次)

Google Cloud Platform → Kubernetes Engine → 集群
通过 kubectl 创建部署时返回的输出
Cloud Shell → kubectl get service

👉 第 10 步 — 在...上查看正在运行的应用程序

最终应用程序已上传到 http://34.71.77.61:8080

我们收到了社区压倒性的支持和反馈。我们正在积极改进 PyCaret 并准备下一个版本。PyCaret 1.0.1 将更强大、更好用。如果你想分享你的反馈并帮助我们进一步改进,你可以在网站上或在我们的或页面上留言。

关注我们的并订阅我们的频道,了解更多关于 PyCaret 的信息。

PyCaret 是一个开源项目。欢迎所有人贡献。如果你想贡献,请随时在上工作。带有单元测试的 Pull Request 在 dev-1.0.1 分支上接受。

如果你喜欢 PyCaret,请在我们的给我们 ⭐️。

Medium

LinkedIn

Twitter

📖
最新博文
公告
如何在 Heroku PaaS 上部署 ML 流水线
如何使用 Docker 容器将 ML 流水线部署到 Azure Web Services。
PyCaret
Flask
此处
LXD
LXC
Amazon ECS
Microsoft Azure Kubernetes Service
点击此处
数据源
本教程
仓库
Container Registry
http://34.71.77.61:8080
本教程的 GitHub 仓库链接
Microsoft Azure 部署的 GitHub 仓库链接
Heroku 部署的 GitHub 仓库链接
填写此表单
GitHub
LinkedIn
LinkedIn
YouTube
分类
回归
聚类
异常检测
自然语言处理
关联规则挖掘
聚类
异常检测
自然语言处理
关联规则挖掘
回归
分类
未解决问题
GitHub 仓库
https://medium.com/@moez_62905/
https://www.linkedin.com/in/profile-moez/
https://twitter.com/moezpycaretorg1