跳至内容

在 Amazon SageMaker 端点上部署YOLOv8 指南

在亚马逊 SageMaker 端点上部署Ultralytics'YOLOv8等高级计算机视觉模型为各种机器学习应用提供了广泛的可能性。有效使用这些模型的关键在于了解其设置、配置和部署流程。当YOLOv8 与亚马逊 SageMaker(AWS 提供的强大且可扩展的机器学习服务)无缝集成时,其功能会变得更加强大。

本指南将带您逐步了解在 Amazon SageMaker Endpoints 上部署YOLOv8 PyTorch 模型的过程。您将了解准备 AWS 环境、适当配置模型以及使用 AWS CloudFormation 和 AWS Cloud Development Kit (CDK) 等工具进行部署的基本要素。

亚马逊 SageMaker

亚马逊 SageMaker 概览

Amazon SageMaker是亚马逊网络服务(AWS)提供的一项机器学习服务,可简化机器学习模型的构建、训练和部署过程。它提供了广泛的工具,用于处理机器学习工作流的各个方面。其中包括调整模型的自动化功能、大规模训练模型的选项以及将模型部署到生产中的直接方法。SageMaker 支持流行的机器学习框架,为各种项目提供所需的灵活性。它的功能还包括数据标记、工作流管理和性能分析。

在 Amazon SageMaker 端点上部署YOLOv8

在 Amazon SageMaker 上部署YOLOv8 可让您使用其托管环境进行实时推理,并利用自动扩展等功能。请看下面的 AWS 架构。

AWS 架构

步骤 1:设置 AWS 环境

首先,确保具备以下先决条件:

  • AWS 账户:如果还没有,请注册一个 AWS 账户。

  • 配置 IAM 角色:您需要一个具有 Amazon SageMaker、AWS CloudFormation 和 Amazon S3 必要权限的 IAM 角色。该角色应具有允许其访问这些服务的策略。

  • AWSCLI :如果尚未安装,请下载并安装 AWS 命令行界面 (CLI) 并将其配置为您的账户详细信息。请按照AWSCLI 的说明进行安装。

  • AWS CDK:如果尚未安装,请安装 AWS 云开发工具包 (CDK),该工具包将用于编写部署脚本。请按照AWS CDK 的说明进行安装。

  • 足够的服务配额:确认为 Amazon SageMaker 中的两个独立资源提供了足够的配额:一个用于 ml.m5.4xlarge 用于终端使用,另一个用于 ml.m5.4xlarge 用于笔记本实例的使用。每个配额至少需要一个配额值。如果您当前的配额低于这一要求,请务必申请增加配额。您可以按照以下详细说明申请增加配额 AWS 服务配额文档.

步骤 2:克隆YOLOv8 SageMaker 资源库

下一步是克隆特定的 AWS 资源库,其中包含在 SageMaker 上部署YOLOv8 的资源。该资源库托管在 GitHub 上,包含必要的 CDK 脚本和配置文件。

  • 克隆 GitHub 仓库:在终端中执行以下命令克隆 host-yolov8-on-sagemaker-endpoint 仓库:
git clone https://github.com/aws-samples/host-yolov8-on-sagemaker-endpoint.git
  • 导航至克隆目录将目录更改为克隆版本库:
cd host-yolov8-on-sagemaker-endpoint/yolov8-pytorch-cdk

步骤 3:设置 CDK 环境

现在您已经有了必要的代码,请设置您的环境以便使用 AWS CDK 进行部署。

  • 创建Python 虚拟环境:这将隔离Python 环境和依赖项。运行:
python3 -m venv .venv
  • 激活虚拟环境:
source .venv/bin/activate
  • 安装依赖项:安装项目所需的Python 依赖项:
pip3 install -r requirements.txt
  • 升级 AWS CDK 库:确保您拥有最新版本的 AWS CDK 库:
pip install --upgrade aws-cdk-lib

第 4 步:创建 AWS CloudFormation 堆栈

  • 合成 CDK 应用程序:根据 CDK 代码生成 AWS CloudFormation 模板:
cdk synth
  • 引导 CDK 应用程序:为 CDK 部署准备 AWS 环境:
cdk bootstrap
  • 部署堆栈:这将创建必要的 AWS 资源并部署您的模型:
cdk deploy

步骤 5:部署YOLOv8 模型

在深入了解部署说明之前,请务必查看 Ultralytics 提供的一系列YOLOv8 型号。这将帮助您根据项目要求选择最合适的型号。

创建 AWS CloudFormation Stack 之后,下一步就是部署YOLOv8 。

  • 打开笔记本实例:转到 AWS 控制台并导航到 Amazon SageMaker 服务。从仪表板中选择 "笔记本实例",然后找到 CDK 部署脚本创建的笔记本实例。打开笔记本实例,访问 Jupyter 环境。

  • 访问并修改 inference.py:在 Jupyter 中打开 SageMaker 笔记本实例后,找到 inference.py 文件。按下图所示编辑 inference.py 中的 output_fn 函数,并将更改保存到脚本,确保没有语法错误。

import json

def output_fn(prediction_output, content_type):
    """Formats model outputs as JSON string according to content_type, extracting attributes like boxes, masks, keypoints."""
    print("Executing output_fn from inference.py ...")
    infer = {}
    for result in prediction_output:
        if result.boxes is not None:
            infer['boxes'] = result.boxes.numpy().data.tolist()
        if result.masks is not None:
            infer['masks'] = result.masks.numpy().data.tolist()
        if result.keypoints is not None:
            infer['keypoints'] = result.keypoints.numpy().data.tolist()
        if result.obb is not None:
            infer['obb'] = result.obb.numpy().data.tolist()
        if result.probs is not None:
            infer['probs'] = result.probs.numpy().data.tolist()
    return json.dumps(infer)
  • 使用 1_DeployEndpoint.ipynb 部署端点:在 Jupyter 环境中,打开位于 sm-notebook 目录中的 1_DeployEndpoint.ipynb 笔记本。按照笔记本中的说明运行单元格下载YOLOv8 模型,将其与更新的推理代码打包,并上传到亚马逊 S3 存储桶。该笔记本将指导您为YOLOv8 模型创建和部署 SageMaker 端点。

步骤 6:测试部署

现在,您的YOLOv8 模型已经部署完毕,测试其性能和功能非常重要。

  • 打开测试笔记本:在同一 Jupyter 环境中,找到并打开同样位于 sm-notebook 目录中的 2_TestEndpoint.ipynb 笔记本。

  • 运行测试笔记本:按照笔记本中的说明测试已部署的 SageMaker 端点。这包括向端点发送图像并运行推论。然后,您将绘制输出图,以直观了解模型的性能和准确性,如下图所示。

测试结果YOLOv8

  • 清理资源:测试笔记本还将指导您完成清理终端和托管模型的过程。这是有效管理成本和资源的重要步骤,尤其是在不打算立即使用已部署模型的情况下。

步骤 7:监测和管理

测试之后,对部署的模型进行持续监控和管理至关重要。

  • 使用 Amazon CloudWatch 进行监控:使用Amazon CloudWatch 定期检查 SageMaker 端点的性能和健康状况。

  • 管理终端:使用 SageMaker 控制台对端点进行持续管理。这包括根据需要扩展、更新或重新部署模型。

完成这些步骤后,您就可以在 Amazon SageMaker Endpoints 上成功部署和测试YOLOv8 模型了。这一过程不仅使您获得了使用 AWS 服务进行机器学习部署的实践经验,还为将来部署其他高级模型奠定了基础。

摘要

本指南将带您逐步完成使用 AWS CloudFormation 和 AWS Cloud Development Kit (CDK) 在 Amazon SageMaker Endpoints 上部署YOLOv8 的过程。该过程包括克隆必要的 GitHub 仓库、设置 CDK 环境、使用 AWS 服务部署模型以及在 SageMaker 上测试其性能。

有关更多技术细节,请参阅 AWS 机器学习博客上的这篇文章。您还可以查看亚马逊 SageMaker官方文档,了解有关各种特性和功能的更多信息。

您是否有兴趣了解有关YOLOv8 集成的更多信息?请访问Ultralytics 集成指南页面,了解更多可增强机器学习项目的工具和功能。



创建于 2024-01-04,更新于 2024-05-03
作者:glenn-jocher(3)、abirami-vina(1)

评论