Skip to content

在Amazon SageMaker Endpoints上部署YOLO11的指南

在Amazon SageMaker Endpoints上部署高级计算机视觉模型,如Ultralytics的YOLO11,为各种机器学习应用打开了广泛的可能性。有效使用这些模型的关键在于理解其设置、配置和部署过程。当YOLO11与Amazon SageMaker无缝集成时,它变得更加强大,Amazon SageMaker是AWS提供的一个强大且可扩展的机器学习服务。

本指南将带您逐步了解在Amazon SageMaker Endpoints上部署YOLO11 PyTorch模型的过程。您将学习准备AWS环境、适当配置模型以及使用AWS CloudFormation和AWS云开发工具包(CDK)进行部署的基本知识。

Amazon SageMaker

Amazon SageMaker概述

Amazon SageMaker是Amazon Web Services(AWS)提供的一项机器学习服务,简化了构建、训练和部署机器学习模型的过程。它提供了一系列工具来处理机器学习工作流的各个方面。这包括用于调整模型的自动化功能、用于大规模训练模型的选项以及用于将模型部署到生产的直接方法。SageMaker支持流行的机器学习框架,为多样化的项目提供了灵活性。其功能还包括数据标注、工作流管理和性能分析。

在Amazon SageMaker Endpoints上部署YOLO11

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

AWS架构

步骤1:设置您的AWS环境

首先,确保您已准备好以下先决条件:

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

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

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

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

  • 充足的服务配额:确认您在Amazon SageMaker中有足够的配额用于两个独立的资源:一个用于ml.m5.4xlarge的端点使用,另一个用于ml.m5.4xlarge的笔记本实例使用。每个资源都需要至少一个配额值。如果您的当前配额低于此要求,重要的是为每个资源请求增加配额。您可以通过遵循AWS服务配额文档中的详细说明来请求配额增加。

步骤2:克隆YOLO11 SageMaker仓库

下一步是克隆包含在SageMaker上部署YOLO11所需资源的特定AWS仓库。此仓库托管在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:部署 YOLO 模型

在深入部署说明之前,请务必查看 Ultralytics 提供的 YOLO11 模型系列。这将帮助您选择最适合您项目需求的模型。

在创建 AWS CloudFormation 堆栈后,下一步是部署 YOLO11。

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

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

import json


def output_fn(prediction_output):
    """将模型输出格式化为 JSON 字符串,提取属性如 boxes、masks、keypoints。"""
    print("正在执行 inference.py 中的 output_fn ...")
    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 笔记本。按照笔记本中的说明操作并运行单元格,以下载 YOLO11 模型,将其与更新的推理代码打包,并上传到 Amazon S3 存储桶。笔记本将指导您创建并部署 YOLO11 模型的 SageMaker 端点。

步骤 6:测试您的部署

现在您的 YOLO11 模型已部署,重要的是测试其性能和功能。

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

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

YOLO11 测试结果

  • 清理资源:测试笔记本还将指导您清理端点和托管模型。这是有效管理成本和资源的重要步骤,特别是如果您不打算立即使用已部署的模型。

步骤 7:监控和管理

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

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

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

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

总结

本指南逐步引导您使用AWS CloudFormation和AWS Cloud Development Kit(CDK)在Amazon SageMaker端点上部署YOLO11。该过程包括克隆必要的GitHub仓库、设置CDK环境、使用AWS服务部署模型,并在SageMaker上测试其性能。

如需更多技术细节,请参阅AWS机器学习博客上的这篇文章。您还可以查看官方的Amazon SageMaker文档,以深入了解各种功能和功能。

对学习更多关于不同YOLO11集成的内容感兴趣吗?访问Ultralytics集成指南页面,探索可以增强您机器学习项目的其他工具和能力。

常见问题

如何在Amazon SageMaker端点上部署Ultralytics YOLO11模型?

要在Amazon SageMaker端点上部署Ultralytics YOLO11模型,请按照以下步骤操作:

  1. 设置您的AWS环境:确保您拥有一个AWS账户,具有必要权限的IAM角色,并且已配置AWS CLI。如果尚未完成,请安装AWS CDK(参考AWS CDK说明)。
  2. 克隆YOLO11 SageMaker仓库
    git clone https://github.com/aws-samples/host-yolov8-on-sagemaker-endpoint.git
    cd host-yolov8-on-sagemaker-endpoint/yolov8-pytorch-cdk
    
  3. 设置CDK环境:创建一个Python虚拟环境,激活它,安装依赖项,并升级AWS CDK库。
    python3 -m venv .venv
    source .venv/bin/activate
    pip3 install -r requirements.txt
    pip install --upgrade aws-cdk-lib
    
  4. 使用AWS CDK部署:合成并部署CloudFormation堆栈,引导环境。
    cdk synth
    cdk bootstrap
    cdk deploy
    

如需进一步详情,请查看文档部分

在Amazon SageMaker上部署YOLO11的先决条件是什么?

要在Amazon SageMaker上部署YOLO11,请确保您具备以下先决条件:

  1. AWS账户:活跃的AWS账户(在此注册)。
  2. IAM角色:配置了具有SageMaker、CloudFormation和Amazon S3权限的IAM角色。
  3. AWS CLI:已安装并配置AWS命令行界面(AWS CLI安装指南)。
  4. AWS CDK:已安装AWS云开发工具包(CDK设置指南)。
  5. 服务配额:足够的ml.m5.4xlarge实例配额,用于端点和笔记本使用(请求配额增加)。

如需详细设置,请参阅此部分

为什么我应该在Amazon SageMaker上使用Ultralytics YOLO11?

在Amazon SageMaker上使用Ultralytics YOLO11提供了几个优势:

  1. 可扩展性和管理:SageMaker提供了一个托管环境,具有自动扩展等功能,有助于实时推理需求。
  2. 与AWS服务的集成:无缝集成其他AWS服务,如S3用于数据存储,CloudFormation用于基础设施即代码,CloudWatch用于监控。
  3. 部署简便:使用AWS CDK脚本简化设置,并简化部署流程。
  4. 性能:利用Amazon SageMaker的高性能基础设施,高效运行大规模推理任务。

更多关于使用SageMaker的优势,请参阅介绍部分

我可以在Amazon SageMaker上自定义YOLO11的推理逻辑吗?

是的,您可以在Amazon SageMaker上自定义YOLO11的推理逻辑:

  1. 修改inference.py:找到并自定义inference.py文件中的output_fn函数,以定制输出格式。

    import json
    
    
    def output_fn(prediction_output):
        """将模型输出格式化为JSON字符串,提取属性如boxes、masks、keypoints。"""
        infer = {}
        for result in prediction_output:
            if result.boxes is not None:
                infer["boxes"] = result.boxes.numpy().data.tolist()
            # 如有必要,添加更多处理逻辑
        return json.dumps(infer)
    
  2. 部署更新后的模型:确保使用提供的Jupyter笔记本(1_DeployEndpoint.ipynb)重新部署模型,以包含这些更改。

参考详细步骤以部署修改后的模型。

如何在Amazon SageMaker上测试部署的YOLO11模型?

要在Amazon SageMaker上测试部署的YOLO11模型:

  1. 打开测试笔记本:在SageMaker Jupyter环境中找到2_TestEndpoint.ipynb笔记本。
  2. 运行笔记本:按照笔记本的指示将图像发送到端点,执行推理并显示结果。
  3. 可视化结果:使用内置的绘图功能来可视化性能指标,例如检测到的对象周围的边界框。

如需全面的测试说明,请访问测试部分


📅 Created 9 months ago ✏️ Updated 13 days ago

Comments