

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

# 将Capacity Blocks用于机器学习工作负载
<a name="launch-template-capacity-blocks"></a>

Capacity Blocks可帮助您在未来某个日期预留抢手的 GPU 实例，从而支持您的短期机器学习（ML）工作负载。

有关 Capacity Blocks 概述及其工作原理，请参阅《Amazon EC2 用户指南》**中的 [ML Capacity Blocks](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-blocks.html)。

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

**重要**  
Capacity Blocks仅适用于某些 Amazon EC2 实例类型和 AWS 区域。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[先决条件](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/capacity-blocks-using.html#capacity-blocks-prerequisites)。

**Topics**
+ [操作指导方针](#capacity-blocks-operational-guidelines)
+ [在启动模板中指定容量块](#specify-a-capacity-block-in-your-launch-template)
+ [限制](#capacity-blocks-limitations)
+ [相关资源](#capacity-blocks-related-resources)

## 操作指导方针
<a name="capacity-blocks-operational-guidelines"></a>

以下是将容量块与自动扩缩组结合使用时应遵循的基本操作指导方针。
+ 在容量块预留结束时间前 30 分钟以上，将自动扩缩组横向缩减到零。Amazon EC2 将在容量封锁结束前 30 分钟终止所有仍在运行的实例。
+ 建议您在适当的预留时间使用计划的扩缩来横向扩展（添加实例）和横向缩减（移除实例）。有关更多信息，请参阅 [Amazon EC2 Auto Scaling 的计划扩缩](ec2-auto-scaling-scheduled-scaling.md)。
+ 根据需要添加生命周期挂钩，以便在缩小实例时正常关闭实例内的应用程序。在 Amazon EC2 在容量块预留结束*前* 30 分钟开始强制终止您的实例，请留出足够的时间让生命周期操作完成。有关更多信息，请参阅 [Amazon EC2 Auto Scaling 生命周期钩子](lifecycle-hooks.md)。
+ 确保自动扩缩组在整个预留期间指向启动模板的正确版本。我们建议指向启动模板的特定版本，而不是 `$Default` 或 `$Latest` 版本。

**注意**  
如果您让容量块实例一直运行到预留结束并且 Amazon EC2 将其收回，则您的自动扩缩组的扩缩活动会表明该实例“`taken out of service in response to an EC2 health check that indicated it had been terminated or stopped`”，尽管其在容量块结束时已特意回收。同样，Amazon EC2 Auto Scaling 将尝试替换实例，替换方式与替换任何未通过运行状况检查的实例的方式相同。有关更多信息，请参阅 [自动扩缩组中实例的运行状况检查](ec2-auto-scaling-health-checks.md)。

## 在启动模板中指定容量块
<a name="specify-a-capacity-block-in-your-launch-template"></a>

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

------
#### [ Console ]

**在启动模板中指定容量块（控制台）**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

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

1. 在导航窗格中的**实例**下，选择**启动模板**。

1. 选择**创建启动模板**，然后创建启动模板。根据需要包括Amazon Machine Images (AMI)的 ID、实例类型和任何其他启动模板设置。

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

1. 对于**购买选项**，选择**容量块**。

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

1. 完成后，选择**创建启动模板**。

   有关使用启动模板创建自动扩缩组的帮助，请参阅[使用启动模板创建 Auto Scaling 组](create-asg-launch-template.md)。

------
#### [ AWS CLI ]

**要在启动模板中指定容量块 (AWS CLI)**  
使用以下[create-launch-template](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/create-launch-template.html)命令创建用于指定现有容量块预留 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](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-launch-template-versions.html)命令来验证与启动模板关联的容量块预留 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"
                    }
                }
            }
        }
    ]
}
```

------

## 限制
<a name="capacity-blocks-limitations"></a>
+ 只有当您的自动扩缩组具有兼容的配置时，才会支持Capacity Blocks。不支持混合实例组和暖池。
+ 您一次只能针对一个容量块。

## 相关资源
<a name="capacity-blocks-related-resources"></a>
+ 有关使用 P5 实例的先决条件和建议，请参阅《Amazon EC2 用户指南》**中的[开始使用 P5 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/p5-instances-started.html)。
+ Amazon EKS 支持使用Capacity Blocks来支持 Amazon EKS 集群上的短期机器学习（ML）工作负载。有关更多信息，请参阅《Amazon EKS 用户指南》****中的 [ML Capacity Blocks](https://docs.aws.amazon.com/eks/latest/userguide/capacity-blocks.html)。
+ 您可以将Capacity Blocks与支持的实例类型和区域结合使用。但是，按需容量预留可以灵活地为其他实例类型和区域预留容量。有关演示如何使用按需容量预留选项的教程，请参阅[使用容量预留在特定可用区中预留容量](use-ec2-capacity-reservations.md)。