目 录CONTENT

文章目录

使用训练计划在 SageMaker 上部署具有固定 GPU 容量的 AI 推理端点

Administrator
2026-03-25 / 0 评论 / 0 点赞 / 0 阅读 / 0 字

📢 转载信息

原文链接:https://aws.amazon.com/blogs/machine-learning/deploy-sagemaker-ai-inference-endpoints-with-set-gpu-capacity-using-training-plans/

原文作者:Kareem Syed-Mohammed, Chaoneng Quan, and Dan Ferguson


部署大型语言模型 (LLM) 进行推理需要可靠的 GPU 容量,尤其是在关键的评估期、有限的生产测试期或突发工作负载期间。容量限制可能会延迟部署并影响应用程序性能。客户可以使用 Amazon SageMaker AI 训练计划来预留指定时间段的计算容量。训练计划最初是为训练工作负载设计的,现在也支持推理端点,为有时限的推理工作负载提供可预测的 GPU 可用性。

考虑一个常见场景:您在一个数据科学团队中,需要在两周内评估几个经过微调的语言模型,然后选择一个用于生产。他们需要不间断地访问 ml.p5.48xlarge 实例来运行比较基准测试,但高峰时段在其 AWS 区域的按需容量是不可预测的。通过训练计划预留容量,他们可以不受干扰地进行评估,并控制成本和可预测的可用性。

Amazon SageMaker AI 训练计划提供了一种灵活的方式来确保容量,以便您可以搜索可用产品,选择满足您需求的实例类型、数量和时长。客户可以选择未来固定天数或月数的预留,或一次性预留一定天数。创建后,训练计划会提供一个固定的容量,在部署 SageMaker AI 推理端点时可以引用该容量。

在本文中,我们将介绍如何搜索可用的 p 系列 GPU 容量,创建训练计划预留以用于推理,并在该预留容量上部署 SageMaker AI 推理端点。我们将跟随一位数据科学家,介绍他如何预留容量以进行模型评估,并在整个预留生命周期中管理端点。

解决方案概述

SageMaker AI 训练计划 提供了一种为特定时间窗口预留计算容量的机制。创建训练计划时,客户会指定目标资源类型。通过将目标资源的值设置为“endpoint”,您可以专门为推理工作负载预留 p 系列 GPU 实例。预留的容量将通过端点配置中的 Amazon 资源名称 (ARN) 进行引用,以便端点部署预留的实例。

训练计划的创建和使用工作流程包含四个关键阶段:

  • 确定您的容量需求 – 确定推理工作负载所需的实例类型、实例数量和时长。
  • 搜索可用的训练计划产品 – 查询符合您需求和期望时间窗口的可用容量。
  • 创建训练计划预留 – 选择合适的产品并创建预留,这将生成一个 ARN。
  • 部署和管理您的端点 – 配置您的 SageMaker AI 端点以使用预留的容量,并在预留期间管理其生命周期。

让我们通过详细示例来逐步介绍每个阶段。

先决条件

开始之前,请确保您拥有以下内容:

步骤 1:搜索可用容量产品并创建预留计划

我们的数据科学家首先确定符合其评估需求的可用 p 系列 GPU 容量。他们需要一个 ml.p5.48xlarge 实例,用于为期一周的评估,从一月底开始。使用 search-training-plan-offerings API,他们指定了实例类型、实例数量、时长和时间窗口。将目标资源设置为“endpoint”会将容量配置为专门用于推理,而不是训练作业。

# 列出具有实例类型、实例数量、
# 时长(小时)、开始时间晚于、结束时间早于的训练计划产品。
aws sagemaker search-training-plan-offerings \
--target-resources "endpoint" \
--instance-type "ml.p5.48xlarge" \
--instance-count 1 \
--duration-hours 168 \
--start-time-after "2025-01-27T15:48:14-04:00" \
--end-time-before "2025-01-31T14:48:14-05:00"

示例输出

{
"TrainingPlanOfferings": [
{
"TrainingPlanOfferingId": "tpo-SHA-256-hash-value",
"TargetResources": ["endpoint"],
"RequestedStartTimeAfter": "2025-01-21T12:48:14.704000-08:00",
"DurationHours": 168,
"DurationMinutes": 10080,
"UpfrontFee": "xxxx.xx",
"CurrencyCode": "USD",
"ReservedCapacityOfferings": [
{
"InstanceType": "ml.p5.48xlarge",
"InstanceCount": 1,
"AvailabilityZone": "us-west-2a",
"DurationHours": 168,
"DurationMinutes": 10080,
"StartTime": "2025-01-27T15:48:14-04:00",
"EndTime": "2025-01-31T14:48:14-05:00"
}
]
}
]
}

响应提供了有关每个可用容量块的详细信息,包括实例类型、数量、时长、可用区和定价。每个产品都包含特定的开始和结束时间,因此您可以选择与部署计划一致的预留。在本例中,团队在 us-west-2a 找到了一个 168 小时(7 天)的预留,符合其时间表。

在确定合适的产品后,团队创建训练计划预留以确保容量:

aws sagemaker create-training-plan \
--training-plan-offering-id "tpo-SHA-256-hash-value" \
--training-plan-name "p4-for-inference-endpoint"

示例输出:

{
"TrainingPlanArn": "arn:aws:sagemaker:us-east-1:123456789123:training-plan/p4-for-inference-endpoint"
}

TrainingPlanArn 唯一标识了预留的容量。请保存此 ARN,它是将端点连接到固定的 p 系列 GPU 容量的关键。预留确认并付款后,他们就可以配置推理端点了。

使用 SageMaker AI 控制台

您也可以通过 SageMaker AI 控制台创建训练计划。这提供了一个可视化界面来搜索容量并完成预留。控制台工作流程包含三个步骤:搜索产品,添加计划详情,以及审阅和购买。

导航到训练计划:

  • 在 SageMaker AI 控制台中,在左侧导航窗格中导航至 模型训练与自定义
  • 选择 训练计划
  • 选择 创建训练计划(右上角的橙色按钮)。

下图显示了训练计划着陆页,您可以在此启动创建工作流程。

图 1:带有创建训练计划按钮的训练计划着陆页

图 1:带有创建训练计划按钮的训练计划着陆页

步骤 A – 搜索训练计划产品:

  1. 目标 下,选择 推理端点
  2. 计算类型 下,选择 实例
  3. 选择您的 实例类型(例如,ml.p5.48xlarge)和 实例数量
  4. 日期和时长 下,指定开始日期和时长。
  5. 选择 查找训练计划

下图显示了已选择“推理端点”作为目标的搜索界面,并已填写了条件:

图 2:步骤 A - 搜索训练计划产品,目标为推理端点

图 2:步骤 A – 搜索训练计划产品,目标为推理端点

选择 查找训练计划 后,“可用计划”部分将显示匹配的产品:

图 3:显示定价和可用性详细信息的可用训练计划产品

图 3:显示定价和可用性详细信息的可用训练计划产品

完成预留:

  1. 通过选择首选产品旁边的单选按钮来选择一个计划。
  2. 选择 下一步 以进入 步骤 B:添加计划详情
  3. 审阅详细信息并选择 下一步 以进入 步骤 3:审阅和购买
  4. 审阅最终摘要,接受条款,然后选择 购买 以完成预留。

创建预留后,您将收到一个训练计划 ARN。预留确认并付款后,您就可以使用此 ARN 配置推理端点了。端点仅在训练计划中指定的预留窗口期间运行。

步骤 2:创建包含训练计划预留的端点配置

在预留就绪后,团队会创建一个端点配置,将他们的推理端点绑定到预留的容量。这里的关键步骤是在 ProductionVariants 部分包含 CapacityReservationConfig 对象,并将 MlReservationArn 设置为之前收到的训练计划 ARN:

--endpoint-config-name "ftp-ep-config" \
--production-variants '[{
"VariantName": "AllTraffic",
"ModelName": "my-model",
"InitialInstanceCount": 1,
"InstanceType": "ml.p5.48xlarge",
"InitialVariantWeight": 1.0,
"CapacityReservationConfig": {
"CapacityReservationPreference": "capacity-reservations-only",
"MlReservationArn": "arn:aws:sagemaker:us-east-1:123456789123:training-plan/p4-for-inference-endpoint"
}
}]'

当 SageMaker AI 收到此请求时,它会验证 ARN 是否指向一个具有“endpoint”目标资源类型的活动训练计划预留。如果验证成功,则会创建端点配置,并使其可以进行部署。CapacityReservationPreference 设置尤为重要。将其设置为 capacity-reservations-only,团队将端点限制在其预留的容量内,因此当预留结束时,端点将停止提供流量,从而防止意外收费。

步骤 3:在预留的容量上部署端点

端点配置就绪后,团队即可部署其评估端点:

aws sagemaker create-endpoint \
--endpoint-name "my-endpoint" \
--endpoint-config-name "ftp-ep-config"

端点现在完全在预留的训练计划容量内运行。SageMaker AI 将在 us-west-2a 中预配 ml.p5.48xlarge 实例并加载模型,此过程可能需要几分钟。在端点达到 InService 状态后,团队就可以开始其评估工作负载了。

步骤 4:在训练计划活动期间调用端点

端点已投入使用后,您可以开始运行评估工作负载。他们调用端点进行实时推理,发送测试提示并测量响应质量、延迟和吞吐量:

aws sagemaker-runtime invoke-endpoint \
--endpoint-name "my-endpoint" \
--body fileb://input.json \
--content-type "application/json"
Output.json

在活动预留窗口期间,端点将使用固定的容量正常运行。所有调用都使用预留的资源进行处理,有助于实现可预测的性能和可用性。团队可以运行其基准测试,而无需担心容量限制或共享基础设施的性能差异。

步骤 5:在训练计划过期时调用端点

了解训练计划预留过期但端点仍部署时会发生什么情况很有价值。

当预留过期时,端点的行为取决于 CapacityReservationPreference 设置。由于团队将其设置为 capacity-reservations-only,因此端点将停止提供流量,并且调用将因容量错误而失败:

aws sagemaker-runtime invoke-endpoint \
--endpoint-name "my-endpoint" \
--body fileb://input.json \
--content-type "application/json"
output.json

预期错误响应:

Expected error response:
{
"Error": {
"Code": "ModelError",
"Message": "Endpoint capacity reservation has expired. Please update endpoint configuration."
}
}

要恢复服务,您必须创建一个新的训练计划预留并更新端点配置,或更新端点以使用按需或 ODCR 容量。在团队的案例中,由于他们完成了评估,因此删除端点而不是延长预留。

步骤 6:更新端点

在评估期间,您可能出于各种原因需要更新端点。SageMaker AI 支持多种更新场景,同时保持与预留容量的连接。

更新到新的模型版本

在评估中期,团队希望测试一个包含额外微调的新模型版本。他们可以在保留相同预留容量的同时更新到新模型版本:

# 首先,创建一个包含更新模型的新端点配置
aws sagemaker create-endpoint-config \
--endpoint-config-name "ftp-ep-config-v2" \
--production-variants '[{
"VariantName": "AllTraffic",
"ModelName": "my-model-v2",
"InitialInstanceCount": 1,
"InstanceType": "ml.p5.48xlarge", "InitialVariantWeight": 1.0, "CapacityReservationConfig": { "CapacityReservationPreference": "capacity-reservations-only", "MlReservationArn": "arn:aws:sagemaker:us-east-1:123456789123:training-plan/p4-for-inference-endpoint" }
}]'
# 然后更新端点
aws sagemaker update-endpoint \
--endpoint-name "my-endpoint" \
--endpoint-config-name "ftp-ep-config-v2"

从训练计划迁移到按需容量

如果团队的评估运行时间超出了预期,或者他们希望在预留期结束后将端点过渡到生产用途,他们可以迁移到按需容量:

# 创建不包含训练计划预留的端点配置
aws sagemaker create-endpoint-config \
--endpoint-config-name "ondemand-ep-config" \
--production-variants '[{
"VariantName": "AllTraffic",
"ModelName": "my-model",
"InitialInstanceCount": 1,
"InstanceType": "ml.p5.48xlarge", "InitialVariantWeight": 1.0 }]
'
# 更新端点以使用按需容量
aws sagemaker update-endpoint \
--endpoint-name "my-endpoint" \
--endpoint-config-name "ondemand-ep-config"

步骤 7:扩展端点

在某些情况下,团队可以预留比最初部署更多的容量,这使他们能够在需要时灵活地扩展。例如,如果团队预留了两个实例但最初只部署了一个,他们可以在评估期间进行扩展以测试更高的吞吐量场景。

在预留限制范围内扩展

假设团队最初预留了两个 ml.p5.48xlarge 实例,但只用一个实例部署了他们的端点。之后,他们想测试模型在更高并发负载下的性能:

# 创建具有增加实例数量的新配置(在预留范围内)
aws sagemaker create-endpoint-config \
--endpoint-config-name "ftp-ep-config-scaled" \
--production-variants '[{
"VariantName": "AllTraffic",
"ModelName": "my-model",
"InitialInstanceCount": 2,
"InstanceType": "ml.p5.48xlarge", "InitialVariantWeight": 1.0, "CapacityReservationConfig": { "CapacityReservationPreference": "capacity-reservations-only", "MlReservationArn": "arn:aws:sagemaker:us-east-1:123456789123:training-plan/p4-for-inference-endpoint" }
}]
aws sagemaker update-endpoint \
--endpoint-name "my-endpoint" \
--endpoint-config-name "ftp-ep-config-scaled"

尝试超出预留范围的扩展

如果客户尝试超出预留的容量进行扩展,更新将失败:

# 如果预留只有 2 个实例,这将失败
aws sagemaker create-endpoint-config \
--endpoint-config-name "ftp-ep-config-over-limit" \
--production-variants '[{
"VariantName": "AllTraffic",
"ModelName": "my-model",
"InitialInstanceCount": 3,
"InstanceType": "ml.p5.48xlarge", "InitialVariantWeight": 1.0, "CapacityReservationConfig": { "CapacityReservationPreference": "capacity-reservations-only", "MlReservationArn": "arn:aws:sagemaker:us-east-1:123456789123:training-plan/p4-for-inference-endpoint" }
}]

预期错误:

{
"Error": {
"Code": "ValidationException",
"Message": "Requested instance count (3) exceeds reserved capacity (2) for training plan."
}
}

步骤 8:删除端点

在完成为期一周的评估后,团队收集了所有所需的性能指标,并选择了表现最佳的模型。他们准备清理推理端点。训练计划预留会在预留窗口结束时自动过期。无论您何时删除端点,都会按整个预留期收费。

重要注意事项:

请注意,删除端点不会退款或取消训练计划预留。预留的容量将一直分配,直到训练计划预留窗口过期,无论端点是否仍在运行。但是,如果预留仍然有效且容量可用,您可以使用相同的训练计划预留 ARN 创建一个新端点。要完全清理,请删除端点配置:

aws sagemaker delete-endpoint-config \
--endpoint-config-name "ftp-ep-config"

在设置训练计划预留时,请记住,您将承诺一个固定的时间窗口,并预先支付整个期间的费用,无论您实际使用多长时间。购买前,请确保您估算的时间表与您选择的预留时长相符。如果您认为评估可能提前完成,成本也不会改变。

例如,如果您购买了为期 7 天的预留,即使您在五天内完成工作,您也需要支付全部七天的费用。好处是这种可预测的、预先确定的成本结构有助于您准确地为项目进行预算。在开始之前,您将确切地知道自己的花费。

注意:删除端点不会取消或退款训练计划预留。预留的容量会一直分配,直到预留窗口过期。如果您提前完成并希望使用剩余时间,并且预留仍然有效且容量可用,您可以重新部署一个使用相同训练计划预留 ARN 的新端点。

结论

SageMaker AI 训练计划提供了一种简单的方法来预留 p 系列 GPU 容量,并部署具有固定可用性的 SageMaker AI 推理端点。这种方法推荐用于有时间限制的工作负载,如模型评估、有限生产测试和需要可预测容量的突发场景。

正如我们在数据科学团队的旅程中所见,该过程包括确定容量需求、搜索可用产品、创建预留,并在端点配置中引用该预留以在预留窗口期间部署端点。该团队在固定的容量下完成了为期一周的模型评估,避免了高峰时段按需可用性的不可预测性。他们可以专注于评估指标,而不必担心基础设施限制。

通过支持端点更新、在预留限制范围内进行扩展以及无缝迁移到按需容量,训练计划使您能够在保持对 GPU 可用性和成本的控制的同时管理推理工作负载。无论您是运行竞争性模型基准测试、执行有限时间的 A/B 测试,还是处理可预测的流量高峰,用于推理端点的训练计划都能以透明、预先确定的价格提供您所需的容量。

致谢

特别感谢 Alwin (Qiyun) Zhao、Piyush Kandpal、Jeff Poegel、Qiushi Wuye、Jatin Kulkarni、Shambhavi Sudarsan 和 Karan Jain 的贡献。


关于作者

Kareem Syed-Mohammed

Kareem Syed-Mohammed 是 AWS 的产品经理。他专注于在 SageMaker HyperPod 上实现生成式 AI 模型的开发和治理。在此之前,他在 Amazon QuickSight 领导嵌入式分析和开发者体验团队。除了 QuickSight,他还曾在 AWS Marketplace 和 Amazon 零售担任产品经理。Kareem 的职业生涯始于呼叫中心技术、Local Expert 和 Expedia 的广告开发人员,以及麦肯锡的管理顾问。

Chaoneng Quan

Chaoneng Quan 是 AWS SageMaker 团队的软件开发工程师,负责构建用于大规模训练和推理工作负载的 AI 基础设施和 GPU 容量管理系统。他设计了可扩展的分布式系统,使客户能够预测需求、预留计算容量并以可预测性和效率运行工作负载。他的工作涵盖资源规划、基础设施可靠性和大规模计算优化。

Dan Ferguson

Dan Ferguson 是 AWS 的解决方案架构师,常驻美国纽约。作为一名机器学习服务专家,Dan 致力于支持客户高效、有效地、可持续地集成机器学习工作流程。




🚀 想要体验更好更全面的AI调用?

欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,文档丰富,小白也可以简单操作。

0

评论区