Ultralytics YOLO27:

在 Amazon SageMaker Endpoints 上部署 YOLO26 指南#

在 Amazon SageMaker Endpoints 上部署先进的计算机视觉模型(例如 Ultralytics 的 YOLO26),为各种机器学习应用开启了广阔的可能性。要有效使用这些模型,关键在于了解其设置、配置和部署流程。将 YOLO26 与 AWS 强大且可扩展的机器学习服务 Amazon SageMaker 无缝集成后,其能力将得到进一步提升。

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

Amazon SageMaker#

Amazon SageMaker ML platform architecture

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

在 Amazon SageMaker Endpoints 上部署 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 的笔记本实例使用。每项资源至少需要一个配额值。如果当前配额低于此要求,请务必分别申请增加配额。你可以按照 AWS Service Quotas 文档中的详细说明申请增加配额。

第 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 服务。在控制面板中选择“Notebook Instances”,然后找到由 CDK 部署脚本创建的笔记本实例。打开该笔记本实例以访问 Jupyter 环境。

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

    import json
    
    def output_fn(prediction_output):
        """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 的优势。

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

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

      import json
      
      def output_fn(prediction_output):
          """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()
              # Add more processing logic if necessary
          return json.dumps(infer)
    2. 部署更新后的模型:确保使用提供的 Jupyter 笔记本(1_DeployEndpoint.ipynb)重新部署模型,以包含这些更改。

    请参阅部署修改后模型的详细步骤

  • 要在 Amazon SageMaker 上测试已部署的 YOLO26 模型:

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

    如需完整的测试说明,请访问测试部分

评论