文档
  • 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 Home 的 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

上一篇GitHub 是你唯一需要的 AutoML下一篇使用 PyCaret 和 MLflow 轻松实现 MLOps

最后更新于 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 Home 的 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,该 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 Home)

下载并运行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 Home上安装旧版 Docker Toolbox (v19.03.1)。在中,我们介绍了如何在Windows 10 Pro 版上安装 Docker Desktop。

Amazon Web Services (AWS) 是亚马逊提供的一个全面且广泛采用的云平台。它在全球拥有 175 多项功能齐全的服务。如果您之前没有使用过 AWS,您可以免费注册一个账户。

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

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

Photo by 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 位:Pro、Enterprise 或 Education(Build 15063 或更高版本),您可以从以下链接下载 Docker Desktop:.

但是,如果您使用的是 Windows 10 Home,则需要从以下链接安装旧版 Docker Toolbox (v19.03.1) 的最新版本:.

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 Request)需包含单元测试。

如果您喜欢 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