使用 Capacity Blocks 适用于机器学习工作负载 - Amazon A EC2 uto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

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

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

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

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

重要

Capacity Blocks 仅适用于某些 Amazon EC2 实例类型和 Amazon Web Services 区域。有关更多信息,请参阅 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 将尝试替换实例,方法与替换任何未通过运行状况检查的实例的方式相同。有关更多信息,请参阅 自动扩缩组中实例的运行状况检查

在启动模板中指定容量块

要创建针对自动扩缩组特定容量块的启动模板,请使用以下方法之一:

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

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

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

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

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

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

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

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

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

Amazon CLI
要在启动模板中指定容量块 (Amazon 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
提示

如果此命令引发错误,请确保已将 Amazon 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 BlocksAmazon EKS 用户指南中查看 ML。

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