文档
  • PyCaret 3.0
  • 入门
    • 💻安装
    • 🚀快速入门
    • ⭐教程
    • 📶模块
    • ⚙️数据预处理
      • 数据准备
      • 缩放和转换
      • 特征工程
      • 特征选择
      • 其他设置参数
    • 💡函数
      • 初始化
      • 训练
      • 优化
      • 分析
      • 部署
      • 其他
  • 学习 PYCARET
    • 📖博客
      • 宣布 PyCaret 1.0
      • 宣布 PyCaret 2.0
      • 关于 PyCaret 你不知道的 5 件事
      • 构建和部署你的第一个机器学习 Web 应用
      • 使用 PyCaret 在 Power BI 中构建你自己的 AutoML
      • 在 Google Kubernetes 上部署 ML Pipeline
      • 在 AWS Fargate 上部署 PyCaret 和 Streamlit
      • 使用 PyCaret 在 Power BI 中实现异常检测
      • 在 Google Kubernetes 上部署 ML 应用
      • 在 GKE 上部署机器学习 Pipeline
      • 在 AWS Fargate 上部署机器学习 Pipeline
      • 使用 Docker 在云上部署 ML Pipeline
      • 使用 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 提供支持
本页内容
  • 使用 AWS Fargate(无服务器基础设施)部署 PyCaret 和 Streamlit 应用
  • 回顾
  • 👉 本教程的学习目标
  • 💻 本教程工具箱
  • PyCaret
  • Streamlit
  • 适用于 Windows 10 家庭版的 Docker Toolbox
  • Amazon Web Services (AWS)
  • ✔️开始吧...
  • 什么是容器?
  • 什么是 Docker?
  • 什么是 Kubernetes?
  • AWS Elastic Container Service (ECS)
  • AWS Fargate — 适用于容器的无服务器计算
  • 设置业务背景
  • 目标
  • 任务
  • 👉 任务 1 — 模型训练与验证
  • 👉 任务 2 — 构建前端 Web 应用
  • 页眉 / 布局
  • 👉 任务 3 — 创建 Dockerfile
  • 👉 任务 4 — 在 AWS Fargate 上部署
  • 👉 恭喜!你已在 AWS Fargate 上无服务器地发布了你的应用。使用公网 IP 地址和端口 8501 访问应用。
  • PyCaret 2.0.0 即将到来!
  • 想了解特定模块吗?
  • 另请参阅
  • 你想贡献吗?

这有帮助吗?

  1. 学习 PYCARET
  2. 博客

在 AWS Fargate 上部署 PyCaret 和 Streamlit

上一篇在 Google Kubernetes 上部署 ML Pipeline下一篇使用 PyCaret 在 Power BI 中实现异常检测

最后更新于 2 年前

这有帮助吗?

使用 AWS Fargate(无服务器基础设施)部署 PyCaret 和 Streamlit 应用

作者:Moez Ali

在 AWS Fargate 上实现 ML pipeline 无服务器容器化和部署的分步初学者指南

回顾

在本教程中,我们将使用之前构建的相同的 Web 应用和机器学习 pipeline,并演示如何使用 AWS Fargate(适用于容器的无服务器计算)对其进行部署。

学完本教程后,你将能够在 AWS 上构建并托管一个功能齐全的容器化 Web 应用,而无需预置任何服务器基础设施。

👉 本教程的学习目标

  • 什么是容器?什么是 Docker?什么是 Kubernetes?

  • 什么是 Amazon Elastic Container Service (ECS)、AWS Fargate 和无服务器部署?

  • 构建 Docker 镜像并将其推送到 Amazon Elastic Container Registry。

  • 使用无服务器基础设施(即 AWS Fargate)部署 Web 应用。

本教程将涵盖从本地构建 docker 镜像,上传到 Amazon Elastic Container Registry,创建集群,然后使用 AWS 管理的基础设施定义和执行任务的整个工作流程。

过去,我们已经介绍了在其他云平台(如 Azure 和 Google)上的部署。如果你有兴趣了解更多信息,可以阅读以下教程

💻 本教程工具箱

PyCaret

pip install pycaret

Streamlit

pip install streamlit

适用于 Windows 10 家庭版的 Docker Toolbox

Amazon Web Services (AWS)

✔️开始吧...

什么是容器?

在使用 AWS Fargate 进行实现之前,让我们先了解什么是容器以及为什么我们需要容器?

你是否遇到过这样的问题:你的代码在你的电脑上运行良好,但朋友尝试运行完全相同的代码时却无法工作?如果你的朋友重复完全相同的步骤,他们应该会得到相同的结果,对吗?这个问题的答案是一个词:**环境。**你朋友的环境和你的不同。

环境包括什么? → 编程语言(例如 Python)以及用于构建和测试应用程序的所有库和依赖项,并且要使用准确的版本。

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

什么是 Docker?

现在你已经从理论上理解了什么是容器以及如何使用 Docker 对应用程序进行容器化,让我们想象一个场景:你必须在大量机器上运行多个容器来支持一个企业级的机器学习应用程序,该应用程序在白天和晚上的工作负载各不相同。这在现实生活中非常普遍,听起来可能很简单,但手动操作需要做大量工作。

你需要准时启动正确的容器,弄清楚它们如何相互通信,处理存储问题,应对容器或硬件故障,以及处理其他数百万件事!

管理成百上千个容器以保持应用程序正常运行的整个过程被称为容器编排。暂时不要纠结于技术细节。

此时,你必须认识到管理实际应用需要不止一个容器,而且管理所有基础设施以保持容器正常运行是繁琐、手动且管理负担沉重的工作。

这引出了Kubernetes。

什么是 Kubernetes?

Kubernetes 是一个由 Google 于 2014 年开发的开源系统,用于管理容器化应用程序。简单来说,Kubernetes 是一个用于在机器集群上运行和协调容器化应用程序的系统。

虽然 Kubernetes 是由 Google 开发的开源系统,但几乎所有主要的云服务提供商都将 Kubernetes 作为托管服务提供。例如:Amazon 提供的 **Amazon Elastic Kubernetes Service (EKS)**,Google 提供的 **Google Kubernetes Engine (GKE)**,以及 Microsoft 提供的 **Azure Kubernetes Service (AKS)**。

到目前为止,我们已经讨论并理解了

✔️ 容器

✔️ Docker

✔️ Kubernetes

在介绍 AWS Fargate 之前,只剩下一件事需要讨论,那就是亚马逊自己的容器编排服务 Amazon Elastic Container Service (ECS)。

AWS Elastic Container Service (ECS)

Amazon Elastic Container Service (Amazon ECS) 是亚马逊自家开发的容器编排平台。ECS 的理念与 Kubernetes 类似 (两者都是编排服务)。

ECS 是一种 AWS 原生服务,这意味着它只能在 AWS 基础设施上使用。另一方面,EKS 基于 Kubernetes,这是一个开源项目,可供在多云(AWS、GCP、Azure)甚至本地运行的用户使用。

亚马逊还提供了一种基于 Kubernetes 的容器编排服务,称为 **Amazon Elastic Kubernetes Service (Amazon EKS)。**尽管 ECS 和 EKS 的目的非常相似,即编排容器化应用程序,但在定价、兼容性和安全性方面存在不少差异。没有最好的答案,解决方案的选择取决于用例。

无论你使用哪种容器编排服务(ECS 或 EKS),都有两种方式来实现底层基础设施

  1. 手动管理集群和底层基础设施,例如虚拟机/服务器(也称为 EC2 实例)。

  2. 无服务器 — 完全无需管理任何东西。只需上传容器即可。← 这就是 AWS Fargate。

AWS Fargate — 适用于容器的无服务器计算

AWS Fargate 是一种适用于容器的无服务器计算引擎,它既可与 Amazon Elastic Container Service (ECS) 配合使用,也可与 Amazon Elastic Kubernetes Service (EKS) 配合使用。Fargate 让你能够轻松专注于构建应用程序。Fargate 消除了预置和管理服务器的需求,让你能够按应用程序指定和支付资源费用,并通过设计实现应用程序隔离来提高安全性。

Fargate 会分配适量的计算资源,无需选择实例和扩展集群容量。你只需为你运行容器所需的资源付费,因此不会出现过度预置和支付额外服务器费用的情况。

哪种方法更好没有最优解。选择无服务器还是手动管理 EC2 集群取决于用例。以下是一些有助于做出选择的要点

ECS EC2(手动方法)

  • 你完全依赖 AWS。

  • 你有一个专门的运维团队来管理 AWS 资源。

  • 你在 AWS 上已有现有足迹,即你已经在管理 EC2 实例

AWS Fargate

  • 你没有庞大的运维团队来管理 AWS 资源。

  • 你不想承担或希望减少运维职责。

  • 你的应用程序是无状态的 (无状态应用程序不会保存客户端在一个会话中生成的数据供与该客户端的下一个会话使用)。

设置业务背景

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

目标

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

任务

  • 使用 PyCaret 训练、验证和开发机器学习 pipeline。

  • 构建一个具有两种功能的前端 Web 应用:(i) 在线预测和 (ii) 批量预测。

  • 创建 Dockerfile

  • 创建并执行任务以使用 AWS Fargate 无服务器基础设施部署应用。

👉 任务 1 — 模型训练与验证

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

当你使用 PyCaret 保存模型时,会基于 **setup()** 函数中定义的配置创建完整的转换 pipeline。所有相互依赖关系都会自动编排。请参见存储在 'deployment_28042020' 变量中的 pipeline 和模型

👉 任务 2 — 构建前端 Web 应用

现在我们的机器学习 pipeline 和模型已准备就绪,可以开始构建一个前端 Web 应用,该应用可以在新数据点上生成预测。该应用将支持通过上传 csv 文件进行“在线”和“批量”预测。我们将应用代码分解为三个主要部分

页眉 / 布局

本部分导入库、加载训练好的模型,并创建一个基本布局,顶部有徽标、一张 jpg 图片和侧边栏上的一个下拉菜单,用于切换“在线”和“批量”预测。

在线预测

本节处理应用的初始功能,即在线一对一预测。我们使用 Streamlit 小部件,例如数字输入、文本输入、下拉菜单和复选框来收集用于训练模型的数据点,例如年龄、性别、BMI、子女数量、吸烟者、地区。

批量预测

批量预测是应用功能的第二层。Streamlit 中的 file_uploader 小部件用于上传 csv 文件,然后调用 PyCaret 的原生 **predict_model()** 函数来生成预测结果,这些结果通过 Streamlit 的 write() 函数显示。

**测试应用** 在将应用程序部署到 AWS Fargate 之前,最后一步是在本地测试应用。打开 Anaconda Prompt 并导航到你的项目文件夹,执行以下代码

streamlit run app.py

👉 任务 3 — 创建 Dockerfile

为了将我们的应用程序容器化以便部署,我们需要一个 Docker 镜像,它在运行时会成为一个容器。Docker 镜像使用 Dockerfile 创建。Dockerfile 只是一个包含一系列指令的文件。此项目的 Dockerfile 如下所示

此 Dockerfile 的最后一部分(从第 23 行开始)是 Streamlit 特定的。Dockerfile 区分大小写,并且必须与项目中的其他文件一起放在项目文件夹中。

👉 任务 4 — 在 AWS Fargate 上部署

按照以下 9 个简单步骤在 AWS Fargate 上部署应用

👉 步骤 1 — 安装 Docker Toolbox(适用于 Windows 10 家庭版)

下载并运行 DockerToolbox-19.03.1.exe 文件。

检查安装是否成功的简单方法是打开命令提示符并键入 'docker'。它应该会打印帮助菜单。

👉 步骤 2 — 在 Elastic Container Registry (ECR) 中创建仓库

(a) 登录你的 AWS 控制台并搜索 Elastic Container Registry

(b) 创建新仓库

点击“创建仓库”。

(c) 点击“查看推送命令”

👉 步骤 3 — 执行推送命令

使用 Anaconda Prompt 导航到你的项目文件夹,并执行你在上一步中复制的命令。在执行这些命令之前,你必须位于 Dockerfile 和其他代码所在的文件夹中。

这些命令用于构建 Docker 镜像,然后将其上传到 AWS ECR。

👉 步骤 4 — 检查你上传的镜像

点击你创建的仓库,你将看到上一步中上传镜像的镜像 URI。复制该镜像 URI(在下面的步骤 6 中会用到)。

👉 步骤 5 — 创建和配置集群

(a) 点击左侧菜单中的“集群”

(b) 选择“仅网络”,然后点击下一步

(c) 配置集群(输入集群名称)并点击创建

点击“创建”。

(d) 集群已创建

👉 步骤 6 — 创建新的任务定义

在 Amazon ECS 中运行 Docker 容器需要任务定义。你可以在任务定义中指定的一些参数包括:你的任务中每个容器要使用的 Docker 镜像。你的任务或任务内每个容器要使用的 CPU 和内存量。

(a) 点击“创建新的任务定义”

(b) 选择“FARGATE”作为启动类型

(c) 填写详细信息

(d) 点击“添加容器”并填写详细信息

点击右下角的“创建任务”。

👉 步骤 7 — 执行任务定义

上一步中我们创建了一个将启动容器的任务。现在我们将通过点击操作下的“运行任务”来执行任务。

(a) 点击“切换启动类型”将类型更改为 Fargate

(b) 从下拉列表中选择 VPC 和子网

点击右下角的“运行任务”。

👉 步骤 8 — 从网络设置中允许入站端口 8501

在通过公网 IP 地址查看我们的应用程序运行之前,最后一步是通过创建新规则来允许端口 8501(由 streamlit 使用)。要做到这一点,请按照以下步骤操作

(a) 点击任务

(b) 点击 ENI Id

(c) 点击安全组

(d) 向下滚动并点击“编辑入站规则”

(e) 添加端口 8501 的自定义 TCP 规则

👉 恭喜!你已在 AWS Fargate 上无服务器地发布了你的应用。使用公网 IP 地址和端口 8501 访问应用。

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

PyCaret 2.0.0 即将到来!

想了解特定模块吗?

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

另请参阅

PyCaret Notebook 入门教程

你想贡献吗?

在我们的中,我们演示了如何使用 PyCaret 开发机器学习 pipeline,并将其作为部署到 Google Kubernetes Engine 的 Streamlit Web 应用程序提供服务。如果你之前没有听说过 PyCaret,可以阅读这篇开始入门。

Web 应用

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

是一个开源的 Python 库,可以轻松构建精美的机器学习和数据科学自定义 Web 应用。Streamlit 可以使用 pip 轻松安装。

** **是一款旨在通过使用容器简化应用程序创建、部署和运行的工具。容器用于将应用程序及其所有必要组件(例如库和其他依赖项)打包在一起,并作为一个包全部交付。如果你以前没有使用过 docker,本教程也涵盖了在Windows 10 家庭版上安装 Docker Toolbox(旧版)的内容。在中,我们介绍了如何在Windows 10 专业版上安装 Docker Desktop。

Amazon Web Services (AWS) 是亚马逊提供的全面且广泛采用的云平台。它在全球拥有超过 175 项功能齐全的数据中心服务。如果你之前没有使用过 AWS,你可以获取免费账户。

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

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

图片来源:chuttersnap on Unsplash
Amazon ECS 底层基础设施
AWS Fargate 工作原理 — https://aws.amazon.com/fargate/

()

由于我们已经在中介绍了前两个任务,我们将快速回顾它们,然后重点关注上面列表中的其余项。如果你有兴趣了解更多关于使用 PyCaret 在 Python 中开发机器学习 pipeline 以及使用 Streamlit 框架构建 Web 应用程序的信息,请阅读.

使用 PyCaret 创建的机器学习 Pipeline
app.py — 代码片段 第 1 部分
app.py — 代码片段 第 2 部分
app.py — 代码片段 第 3 部分
Streamlit 应用程序测试 — 在线预测

为了在本地构建 Docker 镜像,你需要在电脑上安装 Docker。如果你使用的是 Windows 10 64 位:专业版、企业版或教育版(Build 15063 或更高版本),可以从.

然而,如果你使用的是 Windows 10 家庭版,则需要从.

https://github.com/docker/toolbox/releases
使用 Anaconda Prompt 检查 docker
AWS 控制台
在 Amazon Elastic Container Registry 上创建新仓库
创建仓库
pycaret-streamlit-aws 仓库的推送命令
创建集群 — 步骤 1
选择仅网络模板
配置集群
集群已创建
创建新的任务定义
选择启动类型兼容性
配置任务和容器定义(第 1 部分)
配置任务和容器定义(第 2 部分)
在任务定义中添加容器
应用已发布到 99.79.189.46:8501

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

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

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

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

Medium

LinkedIn

Twitter

📖
最新博文
公告
将 Streamlit 应用部署到 Google Kubernetes Engine
使用 PyCaret 和 Streamlit 构建和部署机器学习 Web 应用
在 AWS Fargate 上部署机器学习 Pipeline
在 Google Kubernetes Engine 上部署机器学习 Pipeline
在 AWS Web Service 上部署机器学习 Pipeline
在 Heroku PaaS 上构建和部署你的第一个机器学习 Web 应用
PyCaret
Streamlit
Docker
上一个教程
注册
LXD
LXC
数据源
上一个教程
本教程
DockerHub
Docker 的 GitHub 页面
本教程的 GitHub 仓库链接
Google Kubernetes 部署的 GitHub 仓库链接
Heroku 部署的 GitHub 仓库链接
填写此表单
GitHub
LinkedIn
LinkedIn
YouTube
分类
回归
聚类
异常检测
自然语言处理
关联规则挖掘
分类
回归
聚类
异常检测
自然语言处理
关联规则挖掘
开放问题
GitHub 仓库
https://medium.com/@moez_62905/
https://www.linkedin.com/in/profile-moez/
https://twitter.com/moezpycaretorg1