部署 MLOps 解决方案,在 AWS Lambda PlatoBlockchain Data Intelligence 中托管您的模型终端节点。 垂直搜索。 人工智能。

部署一个 MLOps 解决方案,在 AWS Lambda 中托管您的模型端点

2019年,亚马逊联合创立了 气候承诺. 该承诺的目标是到 2040 年实现净零碳排放。这比巴黎协议概述的时间早了 10 年。 注册的公司承诺定期报告、碳消除和可靠的抵消。 在撰写本文时,已有 377 家公司签署了气候承诺,而且这个数字还在不断增加。

由于 AWS 致力于通过云解决方案和机器学习 (ML) 帮助您实现净零目标,因此已经开发和部署了许多减少碳排放的项目。 制造业是可以从此类项目中受益匪浅的行业之一。 通过优化制造工厂中机器的能源管理,例如压缩机或冷却器,公司可以通过 ML 减少碳足迹。

有效地从 ML 实验阶段过渡到生产阶段具有挑战性。 自动化模型训练和再训练、拥有模型注册表以及跟踪实验和部署是一些关键挑战。 对于制造企业来说,还有另一层复杂性,即这些部署的模型如何在边缘运行。

在本文中,我们通过提供托管可持续能源管理解决方案的机器学习操作 (MLOps) 模板来应对这些挑战。 该解决方案与用例无关,这意味着您可以通过更改模型和数据来使其适应您的用例。 我们向您展示如何将模型集成到 Amazon SageMaker管道,一个用于构建 ML 管道的本地工作流编排工具,它运行一个训练作业,并可选地运行一个带有蒙特卡罗模拟的处理作业。 实验被跟踪 Amazon SageMaker实验. 模型在 Amazon SageMaker 模型注册表. 最后,我们提供用于部署最终模型的代码 AWS Lambda 功能。

Lambda 是一种计算服务,让您无需管理或配置服务器即可运行代码。 Lambda 的自动扩展、按请求付费和易用性使其成为数据科学团队的常见部署选择。 通过这篇文章,数据科学家可以将他们的模型转变为具有成本效益且可扩展的 Lambda 函数。 此外,Lambda 允许与 AWS IoT Greengrass,它可以帮助您构建软件,使您的设备能够在边缘处理它们生成的数据,就像可持续能源管理解决方案一样。

解决方案概述

我们部署的架构(见下图)是一种完全由 CI/CD 驱动的机器学习方法。 元素被解耦以避免拥有一个单一的解决方案。

让我们从图表的左上角开始。 这 处理 - 图像构建 组件是 CI/CD 驱动的 AWS 代码提交 帮助构建和推送的存储库 码头工人 容器到 Amazon Elastic Container注册 (亚马逊 ECR)。 这个处理容器是我们 ML 管道中的第一步,但它也被重新用于后处理步骤。 在我们的例子中,我们应用蒙特卡洛模拟作为后处理。 这 训练——图像构建 左下方概述的存储库具有与 处理中 挡在它上面。 主要区别在于它构建了用于模型训练的容器。

主管道, 模型构建(管道),是另一个自动运行 SageMaker 管道的 CodeCommit 存储库。 该管道自动化并连接 SageMaker Experiments 中的数据预处理、模型训练、模型指标跟踪、数据后处理以及 SageMaker 模型注册表中的模型编目。

最后一个组件在右下角: 模型部署. 如果您遵循中的示例 亚马逊 SageMaker 项目,您将获得一个模板,该模板使用 SageMaker 端点托管您的模型。 我们的部署存储库将模型托管在 Lambda 函数中。 我们展示了一种部署可运行实时预测的 Lambda 函数的方法。

先决条件

要成功部署我们的解决方案,您需要具备以下条件:

下载 GitHub 存储库

作为第一步,克隆 GitHub存储库 到您的本地机器。 它包含以下文件夹结构:

  • 部署 – 包含与部署相关的代码
  • 毫升库 — 包含用于预处理、训练、服务和模拟的 ML 代码
  • 测试 — 包含单元和集成测试

部署的关键文件是shell脚本 deployment/deploy.sh. 您使用此文件在您的账户中部署资源。 在运行 shell 脚本之前,请完成以下步骤:

  1. 打开 deployment/app.py 并更改下的 bucket_name SageMakerPipelineSourceCodeStack。 该 bucket_name 需要全球唯一(例如,添加您的全名)。
  2. In deployment/pipeline/assets/modelbuild/pipelines/energy_management/pipeline.py,改变 default_bucketget_pipeline 与步骤 1 中指定的名称相同。

使用 AWS CDK 部署解决方案

首先, 配置您的 AWS CLI 使用您要部署的帐户和区域。然后运行以下命令切换到部署目录,创建虚拟环境,激活它,安装所需的 pip 包指定 setup.py,然后运行 deploy.sh:

cd deployment
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pre-commit install
chmod u+x deploy.sh
./deploy.sh

deploy.sh 执行以下操作:

  1. 在 Python 中创建虚拟环境。
  2. 获取虚拟环境激活脚本。
  3. 安装 AWS CDK 和中概述的要求 setup.py.
  4. 引导程序 环境。
  5. 压缩并复制您开发的必要文件,例如您的 mllib 文件,放入需要这些资产的相应文件夹中。
  6. 运行 cdk deploy —require-approval never.
  7. 创建一个 AWS CloudFormation 通过 AWS CDK 堆栈。

部署的初始阶段应该不会超过 5 分钟。 您现在应该在您通过 AWS CLI 指定的区域中的 CodeCommit 中拥有四个存储库,如架构图中所示。 这 AWS 代码管道 管道同时运行。 这 modelbuildmodeldeploy 管道取决于处理和训练图像构建的成功运行。 这 modeldeploy 管道取决于成功的模型构建。 模型部署应在 1.5 小时内完成。

在 Studio 中克隆模型存储库

要自定义通过 Studio UI 中的 AWS CDK 部署创建的 SageMaker 管道,您首先需要将存储库克隆到 Studio 中。 在 Studio 中启动系统终端并在提供项目名称和 ID 后运行以下命令:

git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-modelbuild
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-modeldeploy
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-processing-imagebuild
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-training-imagebuild

克隆存储库后,您可以将提交推送到存储库。 这些提交会触发相关管道的 CodePipeline 运行。

您还可以在本地计算机上调整解决方案并在您喜欢的 IDE 上工作。

导航 SageMaker 管道和 SageMaker 实验 UI

SageMaker 管道是一系列相互关联的步骤,使用 亚马逊SageMaker Python SDK. 此管道定义使用可导出为 JSON 定义的有向无环图 (DAG) 对管道进行编码。 要了解有关此类管道结构的更多信息,请参阅 SageMaker 管道概述.

导航 SageMaker资源 窗格并选择要查看的管道资源。 在下面 名字,你应该看到 PROJECT_NAME-PROJECT_ID. 在运行 UI 中,应该会成功运行,预计需要 1 个多小时。 管道应如以下屏幕截图所示。

亚马逊 SageMaker 管道

部署 AWS CDK 堆栈后自动触发运行。 您可以通过选择手动调用运行 创建 执行。 您可以从那里选择自己的管道参数,例如处理和训练步骤的实例类型和实例数。 此外,您可以为运行命名和描述。 管道可通过管道参数进行高度配置,您可以在整个管道定义中引用和定义这些参数。

根据需要随意使用您的参数启动另一个管道运行。 之后,导航到 SageMaker资源 再次窗格并选择 实验和试验. 在那里你应该再次看到一个名称的行,例如 PROJECT_NAME-PROJECT_ID. 导航到实验并选择唯一具有随机 ID 的运行。 从那里,选择 SageMaker 训练作业以探索与训练作业相关的指标。

SageMaker Experiments 的目标是尽可能简单地创建实验、用试验填充它们以及跨试验和实验运行分析。 SageMaker Pipelines 与 SageMaker Experiments 紧密集成,默认情况下为每次运行创建一个实验、试验和试验组件,以防它们不存在。

在模型注册表中批准 Lambda 部署

下一步,导航到模型注册表 SageMaker资源. 在这里您可以再次找到名称为 PROJECT_NAME-PROJECT_ID. 导航到唯一存在的模型并批准它。 这会在 Lambda 的容器中自动部署模型构件。

在模型注册表中批准模型后, 亚马逊EventBridge 触发事件规则。 此规则以结尾运行 CodePipeline 管道 *-modeldeploy. 在本节中,我们将讨论此解决方案如何使用已批准的模型并将其托管在 Lambda 函数中。 CodePipeline 采用现有的 CodeCommit 存储库也以结尾 *-modeldeploy 并使用该代码在 CodeBuild 中运行。 CodeBuild 的主要条目是 buildspec.yml 文件。 我们先来看这个:

version: 0.2

env:
  shell: bash

phases:
  install:
    runtime_versions:
      python: 3.8
    commands:
      - python3 -m ensurepip --upgrade
      - python3 -m pip install --upgrade pip
      - python3 -m pip install --upgrade virtualenv
      - python3 -m venv .venv
      - source .venv/bin/activate
      - npm install -g aws-cdk@2.26.0
      - pip install -r requirements.txt
      - cdk bootstrap
  build:
    commands:
      - python build.py --model-package-group-name "$SOURCE_MODEL_PACKAGE_GROUP_NAME"
      - tar -xf model.tar.gz
      - cp model.joblib lambda/digital_twin
      - rm model.tar.gz
      - rm model.joblib
      - cdk deploy --require-approval never

在安装阶段,我们确保 Python 库是最新的,创建一个虚拟环境,安装 AWS CDK v2.26.0,并安装 aws-cdk Python 库以及其他使用需求文件的库。 我们也 引导 AWS 账户. 在构建阶段,我们运行 build.py,我们接下来讨论。 该文件从中下载最新批准的 SageMaker 模型工件 亚马逊简单存储服务 (Amazon S3) 到您的本地 CodeBuild 实例。 这个 .tar.gz 文件被解压缩并将其内容复制到还包含我们的主要 Lambda 代码的文件夹中。 Lambda 函数使用 AWS CDK 部署,代码从 Amazon ECR 的 Docker 容器中运行。 这是由 AWS CDK 自动完成的。

build.py 文件是一个 Python 文件,主要使用 适用于Python的AWS开发工具包(Boto3) 列出可用的模型包。

该功能 get_approved_package 返回随后下载的工件的 Amazon S3 URI,如前所述。

成功部署模型后,您可以 test 它直接在您选择部署的区域中的 Lambda 控制台上。函数的名称应包含 DigitalTwinStack-DigitalTwin*. 打开功能并导航到 测试 标签。 您可以使用以下事件来运行测试调用:

{
  "flow": "[280, 300]",
  "pressure": "[69, 70]",
  "simulations": "10",
  "no_of_trials": "10",
  "train_error_weight": "1.0"
}

运行测试事件后,您会收到类似于以下屏幕截图所示的响应。

测试 AWS Lambda 函数

如果您想运行更多的模拟或试验,您可以增加 Lambda 超时限制并使用代码进行试验! 或者您可能想要获取生成的数据并将其可视化 亚马逊QuickSight. 下面是一个例子。 轮到你了!

亚马逊QuickSight

清理

为避免进一步收费,请完成以下步骤:

  • 在 AWS CloudFormation 控制台上,删除 EnergyOptimization 叠加。
    这将删除整个解决方案。
  • 删除堆栈 DigitalTwinStack,它部署了您的 Lambda 函数。

结论

在这篇文章中,我们向您展示了一个能源管理解决方案的 CI/CD 驱动的 MLOps 管道,我们将每个步骤保持分离。 您可以在 Studio UI 中跟踪您的 ML 管道和实验。 我们还演示了一种不同的部署方法:在模型注册表中批准模型后,将通过 CodePipeline 自动构建托管批准模型的 Lambda 函数。

如果您有兴趣探索 AWS 上的 MLOps 管道或可持续能源管理解决方案,请查看 GitHub存储库 并将堆栈部署到您自己的 AWS 环境中!


作者简介

部署 MLOps 解决方案,在 AWS Lambda PlatoBlockchain Data Intelligence 中托管您的模型终端节点。 垂直搜索。 人工智能。劳伦斯范德马斯 是 AWS 专业服务的数据科学家。 他与在 AWS 上构建机器学习解决方案的客户密切合作,并对机器学习如何改变我们所知的世界充满热情。

部署 MLOps 解决方案,在 AWS Lambda PlatoBlockchain Data Intelligence 中托管您的模型终端节点。 垂直搜索。 人工智能。王康康 是 AWS 专业服务的 AI/ML 顾问。 她在医疗保健和生命科学垂直领域部署 AI/ML 解决方案方面拥有丰富的经验。 她还乐于帮助企业客户构建可扩展的 AI/ML 平台,以加速其数据科学家的云之旅。

部署 MLOps 解决方案,在 AWS Lambda PlatoBlockchain Data Intelligence 中托管您的模型终端节点。 垂直搜索。 人工智能。赛琳娜·塔巴拉 是 AWS 专业服务的数据科学家。 她每天与客户合作,通过在 AWS 平台上进行创新来实现他们的业务成果。 在业余时间,赛琳娜喜欢弹钢琴、徒步旅行和看篮球比赛。

迈克尔·沃尔纳 迈克尔·沃尔纳 是一名高级顾问,专注于 AWS 专业服务的 AI/ML。 Michael 热衷于让客户在他们的云之旅中成为 AWSome。 他对制造业充满热情,乐于通过数据帮助改造制造领域。

时间戳记:

更多来自 AWS机器学习