在 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 是亚马逊云科技(AWS)提供的机器学习服务,可简化机器学习模型的构建、训练和部署流程。它提供了涵盖机器学习工作流各个方面的广泛工具,包括用于调优模型的自动化功能、大规模训练模型的选项,以及将模型直接部署到生产环境的方法。SageMaker 支持主流机器学习框架,为各种项目提供所需的灵活性。其功能还涵盖数据标注、工作流管理和性能分析。
在 Amazon SageMaker Endpoints 上部署 YOLO26#
在 Amazon SageMaker 上部署 YOLO26,可以使用其托管环境进行实时推理,并利用自动扩缩容等功能。请查看下面的 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 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 终端节点。这包括向终端节点发送图像并运行推理。然后,如下所示绘制输出结果,以直观展示模型的性能和准确率。
- 清理资源:测试笔记本还将引导你清理终端节点和托管模型。如果你不打算立即使用已部署的模型,这一步对于有效管理成本和资源尤其重要。
第 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 模型,请按以下步骤操作:
- 设置 AWS 环境:确保拥有 AWS 账户、具有必要权限的 IAM 角色,并已配置 AWS CLI。如果尚未完成,请安装 AWS CDK(参阅 AWS CDK 说明)。
- 克隆 YOLO26 SageMaker 仓库:
git clone https://github.com/aws-samples/host-yolov8-on-sagemaker-endpoint.git cd host-yolov8-on-sagemaker-endpoint/yolov8-pytorch-cdk - 设置 CDK 环境:创建 Python 虚拟环境并将其激活,安装依赖项,然后升级 AWS CDK 库。
python3 -m venv .venv source .venv/bin/activate pip3 install -r requirements.txt pip install --upgrade aws-cdk-lib - 使用 AWS CDK 部署:合成并部署 CloudFormation 堆栈,然后引导环境。
cdk synth cdk bootstrap cdk deploy
如需更多详细信息,请查看文档部分。
要在 Amazon SageMaker 上部署 YOLO26,请确保满足以下先决条件:
- AWS 账户:有效的 AWS 账户(在此注册)。
- IAM 角色:已配置并具有 SageMaker、CloudFormation 和 Amazon S3 权限的 IAM 角色。
- AWS CLI:已安装并配置的 AWS 命令行界面(AWS CLI 安装指南)。
- AWS CDK:已安装的 AWS 云开发工具包(CDK 设置指南)。
- 服务配额:为终端节点和笔记本使用场景中的
ml.m5.4xlarge实例提供充足的配额(申请增加配额)。
如需详细设置说明,请参阅此部分。
在 Amazon SageMaker 上使用 Ultralytics YOLO26 具有以下优势:
- 可扩展性和管理:SageMaker 提供包含自动扩缩容等功能的托管环境,有助于满足实时推理需求。
- 与 AWS 服务集成:可与其他 AWS 服务无缝集成,例如使用 S3 存储数据、使用 CloudFormation 实现基础设施即代码,以及使用 CloudWatch 进行监控。
- 易于部署:使用 AWS CDK 脚本简化设置流程,并实现高效部署。
- 性能:利用 Amazon SageMaker 的高性能基础设施,高效执行大规模推理任务。
在简介部分中进一步了解使用 SageMaker 的优势。
可以,你可以自定义 Amazon SageMaker 上 YOLO26 的推理逻辑:
-
修改
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) -
部署更新后的模型:确保使用提供的 Jupyter 笔记本(
1_DeployEndpoint.ipynb)重新部署模型,以包含这些更改。
请参阅部署修改后模型的详细步骤。
-
要在 Amazon SageMaker 上测试已部署的 YOLO26 模型:
- 打开测试笔记本:在 SageMaker Jupyter 环境中找到
2_TestEndpoint.ipynb笔记本。 - 运行笔记本:按照笔记本中的说明向终端节点发送图像、执行推理并显示结果。
- 可视化结果:使用内置绘图功能直观展示性能指标,例如检测对象周围的边界框。
如需完整的测试说明,请访问测试部分。
- 打开测试笔记本:在 SageMaker Jupyter 环境中找到