Ultralytics YOLO27:
Get Started

在 Amazon SageMaker 端点上部署 YOLO26 指南#

在 Amazon SageMaker 端点上部署 Ultralytics YOLO26 等先进的计算机视觉模型,可为各种机器学习应用带来丰富的可能性。要有效使用这些模型,关键在于了解其设置、配置和部署流程。将 YOLO26 与 AWS 提供的强大且可扩展的机器学习服务 Amazon SageMaker 无缝集成后,YOLO26 的能力将更上一层楼。

本指南将逐步介绍如何在 Amazon SageMaker 端点上部署 YOLO26 PyTorch 模型。你将了解准备 AWS 环境、正确配置模型,以及使用 AWS CloudFormation 和 AWS 云开发工具包 (CDK) 等工具进行部署的基本方法。

Amazon SageMaker#

Amazon SageMaker ML platform architecture

Amazon SageMaker 是 Amazon Web Services (AWS) 提供的一项机器学习服务,可简化机器学习模型的构建、训练和部署流程。它提供了各种工具,帮助你处理机器学习工作流的多个环节,包括用于调整模型的自动化功能、用于大规模训练模型的选项,以及将模型部署到生产环境的简便方法。SageMaker 支持常用的机器学习框架,为各种项目提供所需的灵活性。它的功能还涵盖数据标注、工作流管理和性能分析。

在 Amazon SageMaker 端点上部署 YOLO26#

在 Amazon SageMaker 上部署 YOLO26,可以使用其托管环境进行实时推理,并利用自动扩缩等功能。请查看下方的 AWS 架构图。

AWS SageMaker YOLO training architecture

步骤 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。这两种资源的配额值都至少需要为 1。如果当前配额低于此要求,请务必分别申请增加。你可以按照 AWS 服务配额文档中的详细说明申请增加配额。

步骤 2:克隆 YOLO26 SageMaker 仓库#

下一步是克隆包含在 SageMaker 上部署 YOLO26 所需资源的 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 应用:为 AWS 环境做好 CDK 部署准备:

    cdk bootstrap
  • 部署堆栈:这将创建所需的 AWS 资源并部署模型:

    cdk deploy

步骤 5:部署 YOLO 模型#

开始阅读部署说明之前,请务必查看 Ultralytics 提供的 YOLO26 模型。这将帮助你根据项目需求选择最合适的模型。

创建 AWS CloudFormation 堆栈后,下一步就是部署 YOLO26。

  • 打开笔记本实例:前往 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, 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 笔记本。按照笔记本中的说明运行单元格,下载 YOLO26 模型,将模型与更新后的推理代码打包,并将其上传到 Amazon S3 存储桶。该笔记本将指导你创建并部署 YOLO26 模型的 SageMaker 端点。

步骤 6:测试部署#

现在 YOLO26 模型已完成部署,接下来要测试其性能和功能。

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

  • 运行测试笔记本:按照笔记本中的说明测试已部署的 SageMaker 端点,包括向端点发送图像并运行推理。然后,按照下方所示绘制输出结果,以直观地查看模型的性能和准确率。

Testing Results YOLO26

  • 清理资源:测试笔记本还会指导你清理端点和托管模型。有效管理成本和资源非常重要,尤其是在你暂时不打算使用已部署模型的情况下。

步骤 7:监控和管理#

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

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

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

完成这些步骤后,你就成功在 Amazon SageMaker Endpoints 上部署并测试了 YOLO26 模型。这个过程不仅让你积累了使用 AWS 服务部署机器学习模型的实践经验,也为你今后部署其他先进模型奠定了基础。

总结#

本指南逐步介绍了如何使用 AWS CloudFormation 和 AWS 云开发工具包(CDK)在 Amazon SageMaker Endpoints 上部署 YOLO26。整个过程包括克隆所需的 GitHub 代码库、设置 CDK 环境、使用 AWS 服务部署模型,以及在 SageMaker 上测试模型性能。

如需了解更多技术细节,请参阅 AWS Machine Learning Blog 上的这篇文章。你也可以查看官方的 Amazon SageMaker 文档,进一步了解各种功能。

你想进一步了解不同的 YOLO26 集成吗?访问 Ultralytics 集成指南页面,了解可增强机器学习项目的其他工具和功能。

常见问题#

  • 要在 Amazon SageMaker Endpoints 上部署 Ultralytics YOLO26 模型,请按以下步骤操作:

    1. 设置 AWS 环境:确保你拥有 AWS 账户、具有必要权限的 IAM 角色,并已配置 AWS CLI。如果尚未安装 AWS CDK,请先安装(参阅 AWS CDK 说明)。
    2. 克隆 YOLO26 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 上部署 YOLO26,请确保满足以下前提条件:

    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 YOLO26 有以下优势:

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

    在介绍部分中进一步了解使用 SageMaker 的优势。

  • 可以,你可以自定义 YOLO26 在 Amazon SageMaker 上的推理逻辑:

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

      import json
      
      def output_fn(prediction_output, content_type):
          """Formats model outputs as JSON string, extracting attributes like 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 上测试已部署的 YOLO26 模型,请执行以下操作:

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

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

评论