文档
  • 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 上部署 ML 应用
      • 在 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 将 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 提供支持
在此页面
  • 使用 Docker 容器在云端部署机器学习管道
  • 回顾
  • 👉 本教程的学习目标
  • 💻 本教程的工具箱
  • PyCaret
  • Flask
  • Docker
  • Microsoft Azure
  • 什么是容器,为什么我们需要它?
  • 设定业务背景
  • 目标
  • 任务
  • 👉 开发机器学习管道
  • 👉 构建 Web 应用
  • 在 docker 容器中部署 ML 管道的 10 个步骤
  • 下一个教程
  • 重要链接
  • PyCaret 1.0.1 即将发布!
  • 想了解某个特定模块吗?
  • 另请参阅
  • 您想贡献吗?

这有帮助吗?

  1. 学习 PYCARET
  2. 博客

使用 Docker 在云端部署机器学习管道

上一篇在 AWS Fargate 上部署机器学习管道下一篇使用 PyCaret 在 Power BI 中进行聚类分析

最后更新于 2 年前

这有帮助吗?

使用 Docker 容器在云端部署机器学习管道

作者:Moez Ali

回顾

为了在 Microsoft Azure 上部署机器学习管道,我们需要将管道容器化到一个名为 “Docker” 的软件中。如果您不知道容器化是什么意思,没问题 — 本教程就是关于这个的。

👉 本教程的学习目标

  • 什么是容器?什么是 Docker?为什么我们需要它?

  • 使用我们上传到 ACR 的容器在 Azure 上部署 Web 服务。

  • 查看正在运行的 Web 应用,它使用训练好的机器学习管道对新数据点进行实时预测。

本教程将涵盖整个工作流程:从本地构建容器到将其推送到 Azure Container Registry,然后将我们预训练的机器学习管道和 Flask 应用部署到 Azure Web Services。

💻 本教程的工具箱

PyCaret

pip install **pycaret**

Flask

Docker

Microsoft Azure

什么是容器,为什么我们需要它?

你是否遇到过这样的问题:你的 Python 代码(或任何其他代码)在你的电脑上运行正常,但当你的朋友尝试运行完全相同的代码时,却无法运行?如果你的朋友遵循完全相同的步骤,他们应该得到相同的结果,对吗?对此的简短回答是:**环境。**你朋友的 Python 环境与你的不同。

环境包括什么?→ Python(或你使用的任何其他语言)以及构建和测试应用程序时使用的所有库和依赖项及其精确版本。

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

“当你想到容器时,就去思考集装箱。”

这是理解数据科学中容器最直观的方式。它们**就像船上的集装箱**一样,目标是将一个集装箱的内容与其他的隔离开来,以免混淆。这正是容器在数据科学中的用途。

既然我们理解了容器背后的比喻,接下来看看为我们的应用程序创建独立环境的其他选项。一个简单的替代方案是为你的每个应用程序配备一台独立的机器。

(1 台机器 = 1 个应用程序 = 无冲突 = 一切顺利)

使用独立的机器很直接,但它并不能超过使用容器的好处,因为为每个应用程序维护多台机器既昂贵,又维护起来困难重重,而且难以扩展。简而言之,在许多现实场景中,它并不实用。

创建独立环境的另一个替代方案是**虚拟机**。容器在这里再次成为首选,因为它们需要的资源更少,非常便携,并且启动速度更快。

你能找出虚拟机和容器之间的区别吗?当你使用容器时,不需要访客操作系统。想象一下 10 个应用程序运行在一台虚拟机上。这将需要 10 个访客操作系统,而使用容器时则不需要。

我理解容器了,但 Docker 是什么?

在本教程中,我们将使用 **Windows 版 Docker Desktop** 来创建一个容器,然后将其发布到 Azure Container Registry。之后,我们将使用该容器部署一个 Web 应用。

Docker 镜像 vs. Docker 容器

Docker 镜像和 Docker 容器有什么区别?这是迄今为止最常见的问题,所以让我们立即澄清。有很多技术定义,但直观地可以将 Docker 镜像想象成一个模具,容器是根据它创建出来的。镜像本质上是容器的一个快照。

如果您喜欢更具技术性的定义,可以这样理解:Docker 镜像在 Docker Engine 上运行时会变成容器。

打破神话

归根结底,Docker 只是一个包含几行指令的文件,保存到你的项目文件夹中,文件名为“Dockerfile”。

另一种理解 Dockerfile 的方式是,它们就像你在自家厨房里发明的食谱。当你把这些食谱分享给其他人,他们遵循完全相同的步骤,就能做出同样的菜肴。类似地,你可以与其他人分享你的 Dockerfile,他们就可以根据这个 Dockerfile 创建镜像并运行容器。

现在您已经理解了容器、Docker 以及为什么应该使用它们,让我们快速设定一下业务背景。

设定业务背景

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

目标

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

任务

  • 训练并开发一个用于部署的机器学习管道。

  • 使用 Flask 框架构建一个 Web 应用。它将使用训练好的 ML 管道对新数据点进行实时预测。

  • 创建一个 docker 镜像和容器。

  • 将容器发布到 Azure Container Registry (ACR)。

  • 通过发布到 ACR,将 Web 应用部署到容器中。部署后,它将公开可用,并可通过 Web URL 访问。

👉 开发机器学习管道

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

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

👉 构建 Web 应用

本教程的重点不是构建 Flask 应用。在此讨论只是为了完整性。现在我们的机器学习管道已经准备好了,我们需要一个 Web 应用来连接到我们训练好的管道,以便对新数据点进行实时预测。我们使用 Python 中的 Flask 框架创建了 Web 应用。该应用由两部分组成:

  • 前端(使用 HTML 设计)

  • 后端(使用 Flask 开发)

这是我们的 Web 应用的界面:

现在我们已经有一个功能齐全的 Web 应用,可以开始使用 Docker 对其进行容器化。

在 docker 容器中部署 ML 管道的 10 个步骤

👉 步骤 1 — 安装适用于 Windows 的 Docker Desktop

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

👉 步骤 2 — 安装 Kitematic

下载完成后,只需将文件解压到指定位置即可。

👉 步骤 3 — 创建 Dockerfile

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

👉 步骤 4 — 创建 Azure Container Registry

  • 点击创建资源。

  • 搜索 Container Registry 并点击创建。

  • 选择订阅、资源组和注册表名称(在我们的例子中:pycaret.azurecr.io 是我们的注册表名称)

👉 步骤 5 — 构建 Docker 镜像

在 Azure 门户中创建注册表后,第一步是使用命令行构建 Docker 镜像。导航到项目文件夹并执行以下代码。

docker build -t pycaret.azurecr.io/pycaret-insurance:latest . 
  • pycaret.azurecr.io 是你在 Azure 门户上创建资源时获得的注册表名称。

  • pycaret-insurance 是镜像名称,latest 是标签。这可以是任何你想要的名字。

👉 步骤 6 — 从 Docker 镜像运行容器

现在镜像已创建,我们将在将其推送到 Azure Container Registry 之前先在本地运行一个容器并测试应用程序。要在本地运行容器,请执行以下代码:

docker run -d -p 5000:5000 pycaret.azurecr.io/pycaret-insurance

此命令成功执行后,将返回所创建容器的 ID。

👉 步骤 7 — 在本地机器上测试容器

打开 Kitematic,您应该能看到一个正在运行的应用程序。

通过在您的网络浏览器中访问 localhost:5000,您可以看到应用程序正在运行。它应该会打开一个 Web 应用。

完成后,请务必使用 Kitematic 停止该应用程序,否则它将继续占用您计算机上的资源。

👉 步骤 8 — 验证 Azure 凭据

在将容器上传到 ACR 之前,最后一个步骤是在本地机器上验证 Azure 凭据。在命令行中执行以下代码来完成:

docker login pycaret.azurecr.io

系统将提示您输入用户名和密码。用户名是您的注册表名称(在本例中,用户名为“pycaret”)。您可以在创建的 Azure Container Registry 资源的访问密钥下找到密码。

👉 步骤 9 — 将容器推送到 Azure Container Registry

既然您已通过 ACR 认证,就可以通过执行以下代码将您创建的容器推送到 ACR:

docker push pycaret.azurecr.io/pycaret-insurance:latest

根据容器的大小,推送命令可能需要一些时间才能将容器传输到云端。

👉 步骤 10 — 创建 Azure Web 应用并查看模型运行情况

要在 Azure 上创建 Web 应用,请按照以下步骤操作:

  • 点击创建资源。

  • 搜索 Web App 并点击创建。

  • 将您在(上述步骤 9 中)推送的 ACR 镜像链接到您的应用。

成功!!您的应用现在已在 Azure Web Services 上启动并运行。

下一个教程

在下一篇关于部署机器学习管道的教程中,我们将深入探讨如何使用 Google Cloud 和 Microsoft Azure 上的 Kubernetes 服务部署机器学习管道。

重要链接

PyCaret 1.0.1 即将发布!

想了解某个特定模块吗?

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

另请参阅

PyCaret Notebook 入门教程

您想贡献吗?

在我们的中,我们演示了如何使用 PyCaret 和 Python 中的 Flask 框架开发机器学习管道并将其部署为 Web 应用。如果您之前没有听说过 PyCaret,请阅读此文以了解更多信息。

在本教程中,我们将使用之前构建和部署的相同机器学习管道和 Flask 应用。这次,我们将演示如何使用以下方式将机器学习管道部署为 Web 应用:.

在本地计算机上构建 Docker 文件并发布到.

在上一篇文章中,我们介绍了模型部署的基础知识以及为什么需要它。如果您想了解更多关于模型部署的信息,阅读我们的上一篇文章。

工作流程:创建镜像 → 本地构建容器 → 推送到 ACR → 在云端部署应用

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

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

Docker 是一个旨在通过使用容器来简化应用程序创建、部署和运行的工具。容器用于将应用程序及其所有必要的组件(例如库和其他依赖项)打包在一起,并作为一个整体发布。如果您之前没有使用过 Docker,本教程也涵盖了在 Windows 10 上安装 Docker 的内容。

是一套云服务,用于在全球范围的大型网络上构建、管理和部署应用程序。其他常用于部署 ML 管道的云服务包括, , 和。我们将在未来的教程中介绍其中大部分服务。

如果您之前没有使用过 Microsoft Azure,您可以在此处注册免费帐户。首次注册时,您将在前 30 天获得免费额度。您可以利用该额度按照本教程构建您自己的 Web 应用。

https://www.freepik.com/free-photos-vectors/cargo-ship
虚拟机 vs. 容器

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

()

由于我们在上一篇教程中已经涵盖了前两个任务,我们将快速回顾一下,然后重点介绍上面列表中的剩余任务。如果您有兴趣学习更多关于使用 PyCaret 在 Python 中开发机器学习管道以及使用 Flask 框架构建 Web 应用程序的知识,可以阅读我们的.

使用 PyCaret 创建的机器学习管道
在本地机器上打开的 Web 应用

如果您想查看此 Web 应用的实际运行情况,打开部署在 Heroku 上的 Web 应用(可能需要几分钟才能打开)。

如果您没有跟着操作,没问题。您可以直接 fork 此从 GitHub。如果您不知道如何 fork 仓库,请查看官方 GitHub 教程。此时,您的项目文件夹应该看起来像这样:

https://github.com/pycaret/deployment-heroku

您可以在 Mac 和 Windows 上使用 Docker Desktop。根据您的操作系统,您可以从以下链接下载 Docker Desktop:。在本教程中,我们将使用适用于 Windows 的 Docker Desktop。

https://hub.docker.com/editions/community/docker-ce-desktop-windows/
命令提示符

Kitematic 是一个直观的图形用户界面 (GUI),用于在 Windows 或 Mac 上运行 Docker 容器。您可以从以下链接下载 Kitematic:.

https://github.com/docker/kitematic/releases

Dockerfile 区分大小写,并且必须与项目文件一起放在项目文件夹中。Dockerfile 没有文件扩展名,可以使用任何编辑器创建。我们使用了来创建它。

如果您没有 Microsoft Azure 帐户或之前没有使用过,您可以免费。首次注册时,您将在前 30 天获得免费额度。您可以利用该额度在 Azure 上构建和部署 Web 应用。注册后,请按照以下步骤操作:

登录.

https://portal.azure.com → 登录 → 创建资源 → Container Registry
使用 anaconda prompt 构建 docker 镜像
在本地运行 docker 容器
Kitematic — 用于在 Mac 和 Windows 操作系统上管理容器的 GUI
在本地容器上运行的应用程序 (localhost:5000)
portal.azure.com → Azure Container Registry → 访问密钥

登录.

portal.azure.com → Web App → 创建 → 基本信息
portal.azure.com → Web App → 创建 → Docker
https://pycaret-insurance2.azurewebsites.net

注意:本文发布时,来自以下链接的应用将会被移除以限制资源消耗。

**

(不使用 docker)**

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

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

PyCaret 是一个开源项目。欢迎大家贡献代码。如果您想贡献,请随时参与。dev-1.0.1 分支接受包含单元测试的拉取请求。

如果您喜欢 PyCaret,请在我们的给我们一个 ⭐️。

Medium

LinkedIn

Twitter

📖
上一篇文章
公告
Microsoft Azure Web 应用服务
Azure Container Registry (ACR)
点击此处
PyCaret
Flask
Docker
Microsoft Azure
Amazon Web Services (AWS)
Google Cloud
IBM Cloud
Alibaba Cloud
注册
LXD
LXC
数据源
上一篇教程
点击此处
仓库
阅读此文
此链接
Docker 的 GitHub 仓库
Visual Studio Code
注册
https://portal.azure.com
https://portal.azure.com
https://pycaret-insurance2.azurewebsites.net
**本教程的 GitHub 仓库链接。
**Heroku 部署的 GitHub 仓库链接。
LinkedIn
YouTube
用户指南 / 文档
GitHub 仓库
安装 PyCaret
Notebook 教程
参与 PyCaret 贡献
填写此表单
GitHub
LinkedIn
分类
回归
聚类
异常检测
自然语言处理
关联规则挖掘
聚类
异常检测
自然语言处理
关联规则挖掘
回归
分类
开放问题
GitHub 仓库
https://medium.com/@moez_62905/
https://www.linkedin.com/in/profile-moez/
https://twitter.com/moezpycaretorg1