在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 Web Services(AWS)提供的一项机器学习服务,简化了构建、训练和部署机器学习模型的过程。它提供了一系列工具来处理机器学习工作流的各个方面。这包括用于调整模型的自动化功能、用于大规模训练模型的选项以及用于将模型部署到生产的直接方法。SageMaker支持流行的机器学习框架,为多样化的项目提供了灵活性。其功能还包括数据标注、工作流管理和性能分析。
在Amazon SageMaker Endpoints上部署YOLO11
在Amazon SageMaker上部署YOLO11可以让您利用其托管环境进行实时推理,并利用自动扩展等功能。请查看下面的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仓库:
- 导航到克隆的目录:将您的目录更改为克隆的仓库:
步骤3:设置CDK环境
现在您已经有了必要的代码,设置您的环境以使用AWS CDK进行部署。 - 创建 Python 虚拟环境:这将隔离您的 Python 环境和依赖项。运行:
- 激活虚拟环境:
- 安装依赖项:为项目安装所需的 Python 依赖项:
- 升级 AWS CDK 库:确保您拥有最新版本的 AWS CDK 库:
步骤 4:创建 AWS CloudFormation 堆栈
- 合成 CDK 应用程序:从您的 CDK 代码生成 AWS CloudFormation 模板:
- 引导 CDK 应用程序:为 CDK 部署准备您的 AWS 环境:
- 部署堆栈:这将创建必要的 AWS 资源并部署您的模型:
步骤 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 端点。这包括向端点发送图像并运行推理。然后,您将绘制输出以可视化模型的性能和 准确性,如下所示。
- 清理资源:测试笔记本还将指导您清理端点和托管模型。这是有效管理成本和资源的重要步骤,特别是如果您不打算立即使用已部署的模型。
步骤 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模型,请按照以下步骤操作:
- 设置您的AWS环境:确保您拥有一个AWS账户,具有必要权限的IAM角色,并且已配置AWS CLI。如果尚未完成,请安装AWS CDK(参考AWS CDK说明)。
- 克隆YOLO11 SageMaker仓库:
- 设置CDK环境:创建一个Python虚拟环境,激活它,安装依赖项,并升级AWS CDK库。
- 使用AWS CDK部署:合成并部署CloudFormation堆栈,引导环境。
如需进一步详情,请查看文档部分。
在Amazon SageMaker上部署YOLO11的先决条件是什么?
要在Amazon SageMaker上部署YOLO11,请确保您具备以下先决条件:
- AWS账户:活跃的AWS账户(在此注册)。
- IAM角色:配置了具有SageMaker、CloudFormation和Amazon S3权限的IAM角色。
- AWS CLI:已安装并配置AWS命令行界面(AWS CLI安装指南)。
- AWS CDK:已安装AWS云开发工具包(CDK设置指南)。
- 服务配额:足够的
ml.m5.4xlarge
实例配额,用于端点和笔记本使用(请求配额增加)。
如需详细设置,请参阅此部分。
为什么我应该在Amazon SageMaker上使用Ultralytics YOLO11?
在Amazon SageMaker上使用Ultralytics YOLO11提供了几个优势:
- 可扩展性和管理:SageMaker提供了一个托管环境,具有自动扩展等功能,有助于实时推理需求。
- 与AWS服务的集成:无缝集成其他AWS服务,如S3用于数据存储,CloudFormation用于基础设施即代码,CloudWatch用于监控。
- 部署简便:使用AWS CDK脚本简化设置,并简化部署流程。
- 性能:利用Amazon SageMaker的高性能基础设施,高效运行大规模推理任务。
更多关于使用SageMaker的优势,请参阅介绍部分。
我可以在Amazon SageMaker上自定义YOLO11的推理逻辑吗?
是的,您可以在Amazon SageMaker上自定义YOLO11的推理逻辑:
-
修改
inference.py
:找到并自定义inference.py
文件中的output_fn
函数,以定制输出格式。 -
部署更新后的模型:确保使用提供的Jupyter笔记本(
1_DeployEndpoint.ipynb
)重新部署模型,以包含这些更改。
参考详细步骤以部署修改后的模型。
如何在Amazon SageMaker上测试部署的YOLO11模型?
要在Amazon SageMaker上测试部署的YOLO11模型:
- 打开测试笔记本:在SageMaker Jupyter环境中找到
2_TestEndpoint.ipynb
笔记本。 - 运行笔记本:按照笔记本的指示将图像发送到端点,执行推理并显示结果。
- 可视化结果:使用内置的绘图功能来可视化性能指标,例如检测到的对象周围的边界框。
如需全面的测试说明,请访问测试部分。