在 Amazon SageMaker Endpoints 上部署 YOLO26 指南
Deploying advanced computer vision models like Ultralytics' YOLO26 on Amazon SageMaker Endpoints opens up a wide range of possibilities for various machine learning applications. The key to effectively using these models lies in understanding their setup, configuration, and deployment processes. YOLO26 becomes even more powerful when integrated seamlessly with Amazon SageMaker, a robust and scalable machine learning service by AWS.
本指南将带你逐步了解在 Amazon SageMaker Endpoints 上部署 YOLO26 PyTorch 模型的全过程。你将学习准备 AWS 环境、正确配置模型以及使用 AWS CloudFormation 和 AWS Cloud Development Kit (CDK) 等工具进行部署的基础知识。
Amazon SageMaker
Amazon SageMaker 是 Amazon Web Services (AWS) 提供的一项机器学习服务,旨在简化构建、训练和部署机器学习模型的过程。它提供了一系列广泛的工具来处理机器学习工作流的各个方面,包括用于调整模型的自动化功能、大规模训练模型的选项,以及将模型部署到生产环境的简便方法。SageMaker 支持主流机器学习框架,为各种项目提供了所需的灵活性。其功能还涵盖了数据标注、工作流管理和性能分析。
在 Amazon SageMaker Endpoints 上部署 YOLO26
在 Amazon SageMaker 上部署 YOLO26,让你能够使用其托管环境进行实时推理,并利用自动扩缩容等功能。请查看下方的 AWS 架构。
第一步:设置你的 AWS 环境
首先,确保你已满足以下先决条件:
-
AWS 账户:如果你还没有账户,请注册一个 AWS 账户。
-
配置 IAM 角色:你需要一个拥有 Amazon SageMaker、AWS CloudFormation 和 Amazon S3 所需权限的 IAM 角色。该角色应具备允许其访问这些服务的策略。
-
AWS CLI:如果尚未安装,请下载并安装 AWS Command Line Interface (CLI) 并使用你的账户详情进行配置。请按照 AWS CLI 说明 进行安装。
-
AWS CDK: If not already installed, install the AWS Cloud Development Kit (CDK), which will be used for scripting the deployment. Follow the AWS CDK instructions for installation.
-
足够的配额:确认你在 Amazon SageMaker 中拥有两个独立资源的充足配额:一个用于终端节点使用的
ml.m5.4xlarge,另一个用于笔记本实例使用的ml.m5.4xlarge。每个配额值至少需要为 1。如果你的当前配额低于此要求,务必申请增加。你可以按照 AWS Service Quotas 文档 中的详细说明申请配额增加。
第二步:克隆 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
第三步:设置 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
第四步:创建 AWS CloudFormation 堆栈
-
合成 CDK 应用程序:从你的 CDK 代码生成 AWS CloudFormation 模板:
cdk synth -
引导 CDK 应用程序:为 CDK 部署准备你的 AWS 环境:
cdk bootstrap -
部署堆栈:这将创建必要的 AWS 资源并部署你的模型:
cdk deploy
第五步:部署 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): """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 终端节点的过程。
第六步:测试你的部署
现在你的 YOLO26 模型已经部署完成,测试其性能和功能非常重要。
-
打开测试笔记本:在同一个 Jupyter 环境中,找到并打开同样位于 sm-notebook 目录下的 2_TestEndpoint.ipynb 笔记本。
-
运行测试笔记本:按照笔记本内的说明测试已部署的 SageMaker 终端节点。这包括将图像发送到终端节点并进行推理。然后,你将绘制输出结果以可视化模型的性能和 准确率,如下所示。
- 清理资源:测试笔记本还将引导你完成清理终端节点和托管模型的过程。如果你不打算立即使用部署的模型,这是一个有效管理成本和资源的重要步骤。
第七步:监控与管理
测试完成后,对已部署的模型进行持续的监控和管理至关重要。
-
使用 Amazon CloudWatch 进行监控:使用 Amazon CloudWatch 定期检查 SageMaker 终端节点的性能和健康状况。
-
管理终端节点:使用 SageMaker 控制台对终端节点进行持续管理,包括根据需要进行扩展、更新或重新部署模型。
完成这些步骤后,你将成功在 Amazon SageMaker Endpoints 上部署并测试了 YOLO26 模型。此过程不仅为你提供了使用 AWS 服务进行机器学习部署的实践经验,还为将来部署其他先进模型奠定了基础。
总结
本指南带你逐步了解了如何使用 AWS CloudFormation 和 AWS Cloud Development Kit (CDK) 在 Amazon SageMaker Endpoints 上部署 YOLO26。该过程包括克隆必要的 GitHub 存储库、设置 CDK 环境、使用 AWS 服务部署模型,以及在 SageMaker 上测试其性能。
更多技术细节,请参考 AWS 机器学习博客上的这篇文章。你也可以查阅官方 Amazon SageMaker 文档 以获取有关各种功能和特性的更多见解。
你有兴趣了解更多关于不同 YOLO26 集成的信息吗?请访问 Ultralytics 集成指南页面,探索能够增强你机器学习项目的其他工具和功能。
常见问题 (FAQ)
如何将 Ultralytics YOLO26 模型部署到 Amazon SageMaker Endpoints?
要将 Ultralytics YOLO26 模型部署到 Amazon SageMaker Endpoints,请遵循以下步骤:
- 设置你的 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 有哪些先决条件?
在 Amazon SageMaker 上部署 YOLO26,请确保具备以下先决条件:
- AWS 账户:活跃的 AWS 账户(在此注册)。
- IAM 角色:已配置并具有 SageMaker、CloudFormation 和 Amazon S3 权限的 IAM 角色。
- AWS CLI:已安装并配置好的 AWS Command Line Interface(AWS CLI 安装指南)。
- AWS CDK:已安装 AWS Cloud Development Kit(CDK 设置指南)。
- 服务配额:终端节点和笔记本使用均需充足的
ml.m5.4xlarge实例配额(申请配额增加)。
详细设置,请参考 此部分。
为什么我应该在 Amazon SageMaker 上使用 Ultralytics YOLO26?
在 Amazon SageMaker 上使用 Ultralytics YOLO26 具有多项优势:
- 可扩展性与管理:SageMaker 提供了一个带有自动扩缩容等功能的托管环境,有助于满足实时推理需求。
- 与 AWS 服务集成:与 S3(用于数据存储)、CloudFormation(用于基础设施即代码)和 CloudWatch(用于监控)等其他 AWS 服务无缝集成。
- 部署简便:使用 AWS CDK 脚本可实现简化设置,并拥有精简的部署流程。
- 性能:利用 Amazon SageMaker 的高性能基础设施,高效运行大规模推理任务。
在 介绍部分 探索更多关于使用 SageMaker 的优势。
我可以在 Amazon SageMaker 上自定义 YOLO26 的推理逻辑吗?
可以,你可以在 Amazon SageMaker 上自定义 YOLO26 的推理逻辑:
-
Modify
inference.py: Locate and customize theoutput_fnfunction in theinference.pyfile to tailor output formats.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 模型?
要测试已部署的 YOLO26 模型,请遵循以下操作:
- 打开测试笔记本:在 SageMaker Jupyter 环境中找到
2_TestEndpoint.ipynb笔记本。 - 运行笔记本:按照笔记本中的说明将图像发送到终端节点,执行推理并显示结果。
- 可视化结果:使用内置的绘图功能来可视化性能指标,例如在检测到的物体周围绘制边界框。
有关全面的测试说明,请访问 测试部分。