使用 Capacity Blocks 适用于机器学习工作负载 - Amazon A EC2 uto Scaling

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Capacity Blocks 适用于机器学习工作负载

Capacity Blocks 帮助您在将来的某个日期预留备受追捧的GPU实例,以支持您的短时机器学习 (ML) 工作负载。

有关概述 Capacity Blocks 以及它们是如何工作的,见 Capacity Blocks 在 Amazon EC2 用户指南中查看 ML。

要开始使用 Capacity Blocks,您可以在特定的可用区中创建容量预留。Capacity Blocks 在单个可用区中作为targeted容量预留交付。在创建启动模板时,请指定 Capacity Block 的预留 ID 和实例类型。然后,更新您的 Auto Scaling 组以使用您创建的启动模板和容量块的可用区。当您的容量块预留开始时,使用计划扩展启动与容量块预留相同数量的实例。

重要

Capacity Blocks 仅适用于某些 Amazon EC2 实例类型和 AWS 区域。有关更多信息,请参阅 Amazon EC2 用户指南中的先决条件

操作指导方针

以下是将容量块与自动扩缩组结合使用时应遵循的基本操作指导方针。

  • 在容量块预留结束时间前 30 分钟以上,将自动扩缩组横向缩减到零。Amazon EC2 将在容量封锁结束前 30 分钟终止所有仍在运行的实例。

  • 我们建议您在适当的预留时间使用计划扩展(添加实例)和缩小(移除实例)。有关更多信息,请参阅 Amazon A EC2 uto Scaling 的计划扩展

  • 根据需要添加生命周期挂钩,以便在缩小实例时正常关闭实例内的应用程序。EC2在 Amazon 在容量块预留结束前 30 分钟开始强制终止您的实例,请留出足够的时间让生命周期操作完成。有关更多信息,请参阅 Amazon EC2 Auto Scaling 生命周期钩子

  • 确保自动扩缩组在整个预留期间指向启动模板的正确版本。我们建议指向启动模板的特定版本,而不是 $Default$Latest 版本。

注意

如果您让容量块实例一直运行到预留结束并且 Amazon 收EC2回了该实例,则您的 Auto Scaling 组的扩展活动会将其显示taken out of service in response to an EC2 health check that indicated it had been terminated or stopped为 “”,尽管它是在容量块结束时故意回收的。同样,Amazon A EC2 uto Scaling 将尝试替换实例,方法与替换任何未通过运行状况检查的实例的方式相同。有关更多信息,请参阅 自动扩缩组中实例的运行状况检查

在启动模板中指定容量块

要创建以 Auto Scaling 组的特定容量块为目标的启动模板,请使用以下方法之一:

Console
在启动模板中指定容量块(控制台)
  1. 打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/

  2. 在顶部导航栏上,选择您创建容量块 AWS 区域 的位置。

  3. 在导航窗格中的实例下,选择启动模板

  4. 选择 “创建启动模板”,然后创建启动模板。根据需要提供 Amazon 系统映像 (AMI) 的 ID、实例类型和任何其他启动模板设置。

  5. 展开高级详细信息部分以查看高级设置。

  6. 对于购买选项,选择容量块

  7. 对于容量预留,选择按 ID 定位,然后对于容量预留 - 按 ID 定位,选择现有容量块的容量预留 ID。

  8. 完成后,选择创建启动模板

    有关使用启动模板创建 Auto Scaling 组的帮助,请参阅使用启动模板创建 Auto Scaling 组

AWS CLI
要在启动模板中指定容量块 (AWS CLI)

使用以下create-launch-template命令创建用于指定现有容量块预留 ID 的启动模板。替换每个 user input placeholder 用你自己的信息。

aws ec2 create-launch-template --launch-template-name my-template-for-capacity-block \ --version-description AutoScalingVersion1 --region us-east-2 \ --launch-template-data file://config.json
提示

如果此命令引发错误,请确保已将 AWS CLI 本地版本更新到最新版本。

config.json 的内容。

{ "ImageId": "ami-04d5cc9b88example", "InstanceType": "p4d.24xlarge", "SecurityGroupIds": [ "sg-903004f88example" ], "KeyName": "MyKeyPair", "InstanceMarketOptions": { "MarketType": "capacity-block" }, "CapacityReservationSpecification": { "CapacityReservationTarget": { "CapacityReservationId": "cr-02168da1478b509e0" } } }

下面是示例输出。

{ "LaunchTemplate": { "LaunchTemplateId": "lt-068f72b724example", "LaunchTemplateName": "my-template-for-capacity-block", "CreateTime": "2023-10-27T15:12:44.000Z", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } }

您可以使用以下describe-launch-template-versions命令来验证与启动模板关联的容量块预留 ID。

aws ec2 describe-launch-template-versions --launch-template-names my-template-for-capacity-block \ --region us-east-2

以下是指定容量块预留的启动模板的示例输出。

{ "LaunchTemplateVersions": [ { "LaunchTemplateId": "lt-068f72b724example", "LaunchTemplateName": "my-template-for-capacity-block", "VersionNumber": 1, "CreateTime": "2023-10-27T15:12:44.000Z", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "DefaultVersion": true, "LaunchTemplateData": { "ImageId": "ami-04d5cc9b88example", "InstanceType": "p5.48xlarge", "SecurityGroupIds": [ "sg-903004f88example" ], "KeyName": "MyKeyPair", "InstanceMarketOptions": { "MarketType": "capacity-block" }, "CapacityReservationSpecification": { "CapacityReservationTarget": { "CapacityReservationId": "cr-02168da1478b509e0" } } } } ] }

限制

  • 对该项的支持 Capacity Blocks 仅当您的 Auto Scaling 组具有兼容的配置时才可用。不支持混合实例组和暖池。

  • 一次只能瞄准一个容量块。

  • 有关使用 P5 实例的先决条件和建议,请参阅 A mazon EC2 用户指南中的 P5 实例入门

  • 亚马逊EKS支持使用 Capacity Blocks 以支持您在 Amazon EKS 集群上的短时机器学习 (ML) 工作负载。有关更多信息,请参阅 Capacity Blocks 在 Amazon EKS 用户指南中查看 ML。

  • 您可以使用 … Capacity Blocks 包含支持的实例类型和区域。但是,按需容量预留提供了为其他实例类型和区域预留容量的灵活性。有关向您展示如何使用按需容量预留选项的教程,请参阅使用容量预留在特定可用区中预留容量