文档
  • PyCaret 3.0
  • 入门指南
    • 💻安装
    • 🚀快速入门
    • ⭐教程
    • 📶模块
    • ⚙️数据预处理
      • 数据准备
      • 缩放与转换
      • 特征工程
      • 特征选择
      • 其他设置参数
    • 💡函数
      • 初始化
      • 训练
      • 优化
      • 分析
      • 部署
      • 其他
  • 学习 PYCARET
    • 📖博客
      • 发布 PyCaret 1.0
      • 发布 PyCaret 2.0
      • 关于 PyCaret 你可能不知道的 5 件事
      • 构建并部署你的第一个机器学习 Web 应用
      • 使用 PyCaret 在 Power BI 中构建你自己的 AutoML
      • 在 Google Kubernetes 上部署机器学习管线
      • 在 AWS Fargate 上部署 PyCaret 和 Streamlit
      • 使用 PyCaret 在 Power BI 中进行异常检测
      • 在 Google Kubernetes 上部署机器学习应用
      • 在 GKE 上部署机器学习管线
      • 在 AWS Fargate 上部署机器学习管线
      • 使用 Docker 在云端部署机器学习管线
      • 使用 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 将机器学习模型部署到 SQL Server
      • 使用 PyCaret 和 Gradio 超越你的机器学习
      • 时间序列 101 - 针对初学者
      • 使用 PyCaret 进行时间序列异常检测
      • 使用 PyCaret 回归进行时间序列预测
      • 使用 PyCaret 在 Power BI 中进行主题建模
      • 使用 PyCaret 编写并训练自定义机器学习模型
      • 使用 PyCaret 和 Streamlit 构建并部署机器学习应用
      • PyCaret 2.3.6 来了!看看新功能?
    • 📺视频
    • 🛩️速查表
    • ❓常见问题
    • 👩‍💻示例
  • 重要链接
    • 🛠️发布说明
    • ⚙️API 参考
    • 🙋 讨论
    • 📤问题
    • 👮 许可证
  • 媒体
    • 💻Slack
    • 📺YouTube
    • 🔗LinkedIn
    • 😾GitHub
    • 🔅Stack Overflow
由 GitBook 提供支持
本页内容
  • 在 AWS Fargate 上部署机器学习管线
  • 回顾
  • 👉 本教程的学习目标
  • 💻 本教程工具箱
  • PyCaret
  • Flask
  • Windows 10 家庭版 Docker Toolbox
  • 亚马逊云服务 (AWS)
  • ✔️让我们开始吧……
  • 什么是容器?
  • 什么是 Docker?
  • 什么是 Kubernetes?
  • AWS 弹性容器服务 (ECS)
  • AWS Fargate — 适用于容器的无服务器计算
  • 设置业务背景
  • 目标
  • 任务
  • 👉 开发机器学习管线
  • 👉 构建 Web 应用
  • 使用 AWS Fargate 部署机器学习管线的 10 个步骤
  • PyCaret 2.0.0 即将推出!
  • 想了解某个特定模块?
  • 另请参阅
  • 您想贡献吗?

这有帮助吗?

  1. 学习 PYCARET
  2. 博客

在 AWS Fargate 上部署机器学习管线

上一篇在 GKE 上部署机器学习管线下一篇使用 Docker 在云端部署机器学习管线

最后更新时间 2 年前

这有帮助吗?

在 AWS Fargate 上部署机器学习管线

作者 Moez Ali

在 AWS Fargate 上将机器学习管线容器化并无服务器部署的分步初学者指南

回顾

在本教程中,我们将使用之前构建和部署的相同机器学习管线和 Flask 应用。这一次,我们将演示如何使用 AWS Fargate 将机器学习管线容器化并进行无服务器部署。

👉 本教程的学习目标

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

  • 什么是 Amazon Elastic Container Service (ECS)?

  • 什么是 AWS Fargate 和无服务器部署?

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

  • 使用 AWS 管理的基础设施(即 AWS Fargate)创建并执行任务定义。

  • 观看一个实际运行的 Web 应用,它使用训练好的机器学习管线实时预测新的数据点。

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

过去,我们已经介绍了在 Azure 和 Google 等其他云平台上进行部署。如果您有兴趣了解更多信息,可以阅读以下文章

💻 本教程工具箱

PyCaret

pip install pycaret

Flask

Windows 10 家庭版 Docker Toolbox

亚马逊云服务 (AWS)

✔️让我们开始吧……

什么是容器?

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

您是否遇到过这样的问题:您的代码在您的计算机上运行正常,但当朋友尝试运行完全相同的代码时,却无法运行?如果您的朋友重复完全相同的步骤,他或她应该得到相同的结果,对吗?对此问题的简单回答是**环境。**您朋友的环境与您的不同。

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

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

什么是 Docker?

既然您已经从理论上理解了什么是容器以及如何使用 Docker 将应用程序容器化,让我们想象一个场景:您必须在一组机器上运行多个容器来支持具有昼夜不同工作负载的企业级机器学习应用程序。这在现实生活中非常常见,听起来可能很简单,但手动操作起来需要大量工作。

您需要在正确的时间启动正确的容器,弄清楚它们如何相互通信,处理存储方面的考虑,应对失败的容器或硬件,以及无数其他事情!

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

在这一点上,您必须认识到管理实际应用需要不止一个容器,并且管理所有基础设施以保持容器正常运行既繁琐又费力,还会带来管理负担。

这就引出了Kubernetes。

什么是 Kubernetes?

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

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

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

✔️ 容器

✔️ Docker

✔️ Kubernetes

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

AWS 弹性容器服务 (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. 手动管理集群和底层基础设施,例如虚拟机 / 服务器 /(在 AWS 中也称为 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 的表单中,然后输出预测的费用金额。

任务

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

  • 使用 Flask 框架构建一个 Web 应用。它将使用训练好的机器学习管线实时生成新数据点的预测。

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

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

👉 开发机器学习管线

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

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

👉 构建 Web 应用

本教程不专注于构建 Flask 应用。在此讨论仅为了完整性。现在我们的机器学习管线已准备就绪,我们需要一个 Web 应用程序,它可以连接到我们训练好的管线,以实时生成新数据点的预测。我们使用 Python 中的 Flask 框架创建了 Web 应用程序。此应用程序包含两部分

  • 前端(使用 HTML 设计)

  • 后端(使用 Flask 开发)

我们的 Web 应用程序看起来像这样

使用 AWS Fargate 部署机器学习管线的 10 个步骤

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

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

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

👉 步骤 2 — 创建 Dockerfile

创建 Docker 镜像的第一步是在项目目录中创建 Dockerfile。Dockerfile 只是一个包含一系列指令的文件。本项目使用的 Dockerfile 如下所示

👉 步骤 3 — 在 Elastic Container Registry (ECR) 中创建存储库

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

(b) 创建一个新的存储库

在此演示中,我们创建了“pycaret-deployment-aws-repository”。

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

(d) 复制推送命令

👉 步骤 4 — 执行推送命令

使用 Anaconda Prompt 导航到您的项目文件夹,并执行您在上述步骤中复制的命令。下面的代码仅用于演示,可能无法直接工作。要获取要执行的正确代码,您必须从存储库中的“查看推送命令”获取代码副本。

在执行这些命令之前,您必须位于 Dockerfile 和其余代码所在的文件夹中。

**Command 1**
aws ecr get-login-password --region ca-central-1 | docker login --username AWS --password-stdin 212714531992.dkr.ecr.ca-central-1.amazonaws.com

**Command 2**
docker build -t pycaret-deployment-aws-repository .

**Command 3**
docker tag pycaret-deployment-aws-repository:latest 212714531992.dkr.ecr.ca-central-1.amazonaws.com/pycaret-deployment-aws-repository:latest

**Command 4**
docker push 212714531992.dkr.ecr.ca-central-1.amazonaws.com/pycaret-deployment-aws-repository:latest

👉 步骤 5 — 检查您上传的镜像

点击您创建的存储库,您将看到在上述步骤中上传的镜像的镜像 URI。复制该镜像 URI(在下面的步骤 7 中会用到)。

👉 步骤 6 — 创建并配置集群

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

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

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

(d) 集群已创建

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

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

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

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

(c) 填写详细信息

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

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

👉 步骤 8 — 执行任务定义

在步骤 7 中,我们创建了一个启动容器的任务。现在,我们将通过点击 Actions 下的“运行任务”来执行该任务。

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

(b) 从下拉菜单中选择 VPC 和子网

(c) 点击右下角的“运行任务”

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

在我们能在公共 IP 地址上看到应用程序实际运行之前,最后一步是通过创建新规则来允许端口 5000。为此,请按照以下步骤操作

(a) 点击任务

(b) 点击 ENI Id

(c) 点击安全组

(d) 点击“编辑入站规则”

(e) 添加一个端口为 5000 的自定义 TCP 规则

👉 步骤 10 — 查看应用程序运行情况

使用公共 IP 地址和端口 5000 访问应用程序。

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

PyCaret 2.0.0 即将推出!

想了解某个特定模块?

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

另请参阅

PyCaret Notebook 入门教程

您想贡献吗?

在我们的关于在云端部署机器学习管线,我们演示了如何使用 PyCaret 开发机器学习管线,使用 Docker 将其容器化,并使用 Google Kubernetes Engine 将其作为 Web 应用程序提供服务。如果您之前没有听说过 PyCaret,请阅读此文以了解更多信息。

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

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

Docker 是一个旨在通过使用容器更轻松地创建、部署和运行应用程序的工具。容器用于将应用程序及其所有必需组件(例如库和其他依赖项)打包在一起,并作为一个包发布。如果您之前没有使用过 docker,本教程还涵盖了在Windows 10 家庭版上安装旧版 Docker Toolbox (v19.03.1)。在中,我们介绍了如何在Windows 10 专业版上安装 Docker Desktop。

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

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

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

图片由 chuttersnap 在 Unsplash 上提供
Amazon ECS 底层基础设施
AWS Fargate 工作原理 — https://aws.amazon.com/fargate/

()

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

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

如果您还没有跟上进度,没问题。您可以简单地 Fork 这个来自 GitHub 的仓库。此时您的项目文件夹应如下所示

为了在本地构建 docker 镜像,您需要在计算机上安装 Docker。如果您使用的是 Windows 10 64 位:专业版、企业版或教育版(内部版本 15063 或更高版本),您可以从这里下载 Docker Desktop.

但是,如果您使用的是 Windows 10 家庭版,则需要从这里安装旧版 Docker Toolbox (v19.03.1) 的最后一个发布版本.

https://github.com/docker/toolbox/releases
Anaconda Prompt 检查 docker

Dockerfile 是区分大小写的,并且必须与项目中的其他文件一起放在项目文件夹中。Dockerfile 没有扩展名,可以使用任何文本编辑器创建。您可以从这里下载本项目中使用的 Dockerfile.

AWS 控制台
在 Amazon Elastic Container Registry 上创建新存储库
pycaret-deployment-aws-repository
pycaret-deployment-aws-repository 的推送命令
创建集群 — 步骤 1
选择仅网络模板
配置集群
集群已创建
创建新的任务定义
选择启动类型兼容性
配置任务和容器定义(第一部分)
配置任务和容器定义(第二部分)
在任务定义中添加容器
执行任务定义
运行任务 — 第一部分
运行任务 — 第二部分
任务创建成功
任务定义日志
最终应用已上传至 http://35.182.227.98:5000

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

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

PyCaret 是一个开源项目。欢迎所有人贡献力量。如果您想贡献,请随时进行。dev-1.0.1 分支接受包含单元测试的 Pull Request。

请在我们的如果您喜欢 PyCaret。

Medium

LinkedIn

Twitter

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