

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

# 在中创建计算节点组 AWS 个
<a name="working-with_cng_create"></a>

本主题概述了可用选项，并描述了在 AWS 并行计算服务 (AWS PCS) 中创建计算节点组时应考虑的事项。如果这是您第一次在 AWS PCS 中创建计算节点组，我们建议您按照中的教程进行操作[开始使用 AWS 并行计算服务](getting-started.md)。本教程可以帮助您创建可运行的 HPC 系统，而无需扩展到所有可能的可用选项和系统架构。

**注意**  
您可以在计算节点组上配置自定义 Slurm 设置，以控制资源利用率和节点级行为。有关更多信息，请参阅 [在中配置自定义 Slurm 设置 AWS 个](slurm-custom-settings.md)。

**注意**  
要在计算节点生命周期的定义点（例如挂载文件系统、安装软件或加入目录服务）运行自定义脚本，而不将逻辑嵌入到启动模板用户数据中，请使用节点生命周期操作。有关更多信息，请参阅 [节点生命周期操作](cng-node-lifecycle-actions.md)。

**重要**  
AWS PCS 目前需要支持 IPv4 的内核来进行本地节点通信，即使您在 IPv6-only 网络中使用 AWS PCS 也是如此。有关更多信息，请参阅 [适用于 AWS PCS 的自定义 Amazon 机器映像 (AMIs)](working-with_ami_custom.md)。

## 先决条件
<a name="working-with_cng_create_prereq"></a>
+ 足够的服务配额可在您的中启动所需数量的 EC2 实例 AWS 区域。您可以使用[AWS 管理控制台](https://console.aws.amazon.com/servicequotas)来检查和请求增加服务配额。
+ 满足 PCS 网络要求的现有 V AWS PC 和子网。我们建议您在部署集群以供生产用途之前彻底了解这些要求。有关更多信息，请参阅 [AWS PCS VPC 和子网要求和注意事项](working-with_networking_vpc-requirements.md)。您也可以使用 CloudFormation 模板创建 VPC 和子网。 AWS 为 CloudFormation 模板提供了 HPC 配方。有关更多信息，请参阅上的 [ aws-hpc-recipes ](https://github.com/aws-samples/aws-hpc-recipes/tree/main/recipes/net/hpc_large_scale)。 GitHub
+ 一个 IAM 实例配置文件，有权调用 AWS PCS `RegisterComputeNodeGroupInstance` API 操作和访问节点组实例所需的任何其他 AWS 资源。有关更多信息，请参阅 [的 IAM 实例配置文件 AWS 并行计算服务](security-instance-profiles.md)。
+ 您的节点组实例的启动模板。有关更多信息，请参阅 [在 AWS PCS 上使用亚马逊 EC2 启动模板](working-with_launch-templates.md)。
+  要创建使用 Amazon EC2 ** 竞价型**实例的计算节点组，您的 AWS 账户中必须具有**AWSServiceRoleForEC2Spot**服务相关角色。有关更多信息，请参阅 [亚马逊 EC2 竞价角色 AWS PCS](spot-role.md)。

## 在中创建计算节点组 AWS 个
<a name="working-with_cng_create_steps"></a>

您可以使用 AWS 管理控制台 或创建计算节点组 AWS CLI。

------
#### [ AWS 管理控制台 ]

**使用控制台创建您的计算节点组**

1. 打开 [AWS PCS 控制台](https://console.aws.amazon.com/pcs/home#/clusters)。

1. 选择要在其中创建计算节点组的集群。导航到**计算节点组**，然后选择**创建**。

1. 在**计算节点组设置**部分中，为您的节点组提供一个名称。该名称只能包含区分大小写的字母数字字符和连字符。它必须以字母字符开头，且长度不能超过 25 个字符。该名称在集群中必须是唯一的。

1. 在 “**计算配置” 下**，输入或选择以下值：

   1. **EC2 启动模板 **-选择用于此节点组的自定义启动模板。启动模板可用于自定义网络设置，例如子网和安全组、监控配置和实例级存储。如果您没有准备启动模板，请参阅[在 AWS PCS 上使用亚马逊 EC2 启动模板](working-with_launch-templates.md)以了解如何创建启动模板。
**重要**  
AWS PCS 为每个计算节点组创建托管启动模板。它们被命名`pcs-{{identifier}}-do-not-delete`了。创建或更新计算节点组时不要选择这些，否则该节点组将无法正常运行。

   1. **EC2 启动模板版本 **-您必须选择自定义启动模板的版本。如果您稍后更改版本，则必须更新计算节点组以检测启动模板中的更改。有关更多信息，请参阅 [更新一个 AWS PCS 计算节点组](working-with_cng_update.md)。

   1. **AMI ID ** — 如果您的启动模板不包含 AMI ID，或者如果您想覆盖启动模板中的值，请在此处提供 AMI ID。请注意，用于节点组的 AMI 必须与 AWS PCS 兼容。您也可以选择由提供的示例 AMI AWS。有关此主题的更多信息，请参阅[的亚马逊机器映像 (AMI) AWS 个](working-with_ami.md)。

   1. **IAM 实例配置文件 **-为节点组选择实例配置文件。实例配置文件向实例授予安全访问 AWS 资源和服务的权限。如果你还没有准备好，你可以选择**创建基本配置文件，让 AWS PCS ** 根据最低政策为你创建一个基本配置文件，或者参见[的 IAM 实例配置文件 AWS 并行计算服务](security-instance-profiles.md)。

   1. **子网 **-在部署 PC AWS S 集群的 VPC 中选择一个或多个子网。如果您选择多个子网，则节点之间将无法使用 EFA 通信，并且不同子网中的节点之间的通信可能会增加延迟。确保您在此处指定的子网与您在 EC2 启动模板中定义的任何子网相匹配。

   1. **实例 ** — 选择一个或多个实例类型来满足节点组中的扩展请求。所有实例类型都必须具有相同的处理器架构（x86\_64 或 arm64）和 vCPU 数量。如果实例具有 GPU，则所有实例类型必须具有相同数量的 GPU。

   1. **扩展配置 **-指定节点组的最小和最大实例数。将最小值（最小值）设置为等于静态容量的最大值（最大值）（例如，5 分钟，最大 5）。将全动态缩放的最小值设置为 0（例如，0 分钟，最大 10）。在 Slurm 24.05 或更高版本中，您可以将混合容量的最小值设置为大于 0 和小于最大值。这样可以保持基准实例数并根据需要向上扩展（例如，2 分钟，最大 10 个）。

1. （可选）在 “**其他设置” 下**，指定以下内容：

   1. **购买选项 ** — 选择 On-Demand 实例、竞价型实例、可中断容量预留或现有容量区块。选择**On-Demand**是否计划使用 On-Demand 容量预留 (ODCR)。有关更多信息，请参阅 [ODCRs 与 AWS PCS 一起使用](capacity-reservations-odcr.md)。选择**可中断容量预留**以使用共享的可中断 ODCR ()。I-ODCR有关更多信息，请参阅 [I-ODCRs 与一起使用 AWS 个](capacity-reservations-iodcr.md)。选择**容量区块**，使用现有的 Amazon EC2 容量区块进行机器学习预留。有关更多信息，请参阅 [将 Amazon EC2 容量块用于机器学习 AWS 个](capacity-blocks.md)。

   1. **分配策略 ** — 如果您选择了竞价购买选项，则可以指定在节点组中启动实例时如何选择竞价容量池。有关更多信息，请参阅《*亚马逊弹性计算云用户指南》[中的竞价型实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-allocation-strategy.html)分配策略*。如果您选择了 On-demand 购买选项，则此选项不起作用。

1. （可选）在 “**调度器配置**” 部分中，您可以指定以下内容：

   1. **Scale-down 空闲时间 ** —（可选）缩小此节点组中的空闲节点之前的时间（以秒为单位）。如果未设置，则使用集群级别的值。此设置需要Slurm版本 25.11 或更高版本。

1. （可选）在**Slurm自定义设置**部分，您可以添加参数名称和值对来配置其他 Slurm 设置。有关支持参数的完整列表，请参阅[的自定义 Slurm 设置 AWS PCS 计算节点组](slurm-custom-settings-cng.md)。

1. （可选）在**节点生命周期操作**部分中，您可以添加在计算节点生命周期的定义点上运行的脚本。选择 “**添加脚本” **。选择生命周期阶段，并指定脚本位置、名称、可选参数、错误处理行为和执行策略。要添加更多脚本，请重复这些步骤。脚本在一个阶段内从上到下运行。要更改执行顺序，请**为脚本选择 “**操作”，然后选择 “上**移” ** 或 “下**移” **。有关更多信息，请参阅 [节点生命周期操作](cng-node-lifecycle-actions.md)。

1. （可选）在 “**标签” 下**，向您的计算节点组添加任何标签。

1. 选择**创建计算节点组**。**状态**字段显示 AWS PCS 配置节点组的`Creating`时间。这个过程可能需要几分钟。

**建议的下一步**
+ 将您的节点组添加到 AWS PCS 中的队列中，使其能够处理任务。

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

**使用创建计算节点组 AWS CLI**

使用以下命令创建您的队列。在运行命令之前，进行以下替换：

1. {{region}}替换为在中创建集群的 ID，例如`us-east-1`。 AWS 区域 

1. {{my-cluster}}替换为您的集群`clusterId`的名称或。

1. {{my-node-group}}替换为您的计算节点组的名称。名称只能包含字母数字字符（区分大小写）和连字符。它必须以字母字符开头，且长度不能超过 25 个字符。该名称在集群中必须是唯一的。

1. {{subnet-ExampleID1}}替换为集群 VPC 中的一个或多个子网 ID。

1. {{lt-ExampleID1}}替换为您的自定义启动模板的 ID。如果您还没有准备好，请参阅[在 AWS PCS 上使用亚马逊 EC2 启动模板](working-with_launch-templates.md)以了解如何创建一个。
**重要**  
AWS PCS 为每个计算节点组创建托管启动模板。它们被命名`pcs-{{identifier}}-do-not-delete`了。创建或更新计算节点组时不要选择这些，否则该节点组将无法正常运行。

1. {{launch-template-version}}替换为特定的启动模板版本。 AWS PCS 将您的节点组与启动模板的特定版本关联起来。

1. {{arn:InstanceProfile}}替换为您的 IAM 实例配置文件的 ARN。如果您没有准备好，请参阅[在 AWS PCS 上使用亚马逊 EC2 启动模板](working-with_launch-templates.md)以获取指导。

1. 将{{min-instances}}和{{max-instances}}替换为整数值。将最小值（最小值）设置为等于静态容量的最大值（最大值）（例如，5 分钟，最大 5）。将全动态缩放的最小值设置为 0（例如，0 分钟，最大 10）。在 Slurm 24.05 或更高版本中，您可以将混合容量的最小值设置为大于 0 和小于最大值。这样可以保持基准实例数并根据需要向上扩展（例如，2 分钟，最大 10 个）。

1. {{t3.large}}替换为另一种实例类型。您可以通过指定`instanceType`设置列表来添加更多实例类型。例如 {{--instance-configs instanceType=c6i.16xlarge instanceType=c6a.16xlarge}}。所有实例类型都必须具有相同的处理器架构（x86\_64 或 arm64）和 vCPU 数量。如果实例具有 GPU，则所有实例类型必须具有相同数量的 GPU。

```
aws pcs create-compute-node-group --region {{region}} \
    --cluster-identifier {{my-cluster}} \
    --compute-node-group-name {{my-node-group}} \
    --subnet-ids {{subnet-ExampleID1}} \
    --custom-launch-template id={{lt-ExampleID1}},version='{{launch-template-version}}' \
    --iam-instance-profile-arn={{arn:InstanceProfile}} \
    --scaling-config minInstanceCount={{min-instances}},maxInstanceCount={{max-instance}} \
    --instance-configs instanceType={{t3.large}}
```

**Example — 使用自定义 Slurm 设置创建计算节点组**  

```
aws pcs create-compute-node-group --region {{region}} \
    --cluster-identifier {{my-cluster}} \
    --compute-node-group-name {{my-node-group}} \
    --subnet-ids {{subnet-ExampleID1}} \
    --custom-launch-template id={{lt-ExampleID1}},version='{{launch-template-version}}' \
    --iam-instance-profile-arn={{arn:InstanceProfile}} \
    --scaling-config minInstanceCount={{min-instances}},maxInstanceCount={{max-instance}} \
    --instance-configs instanceType={{t3.large}} \
    --slurm-configuration \
    'slurmCustomSettings=[{parameterName=Features,parameterValue="{{gpu,nvme}}"}]'
```
有关更多信息，请参阅 [的自定义 Slurm 设置 AWS PCS 计算节点组](slurm-custom-settings-cng.md)。

**Example — 创建空闲时间向下缩小的计算节点组**  

```
aws pcs create-compute-node-group --region {{region}} \
    --cluster-identifier {{my-cluster}} \
    --compute-node-group-name {{my-gpu-nodes}} \
    --subnet-ids {{subnet-ExampleID1}} \
    --custom-launch-template id={{lt-ExampleID1}},version='{{1}}' \
    --iam-instance-profile-arn={{arn:InstanceProfile}} \
    --scaling-config minInstanceCount={{0}},maxInstanceCount={{10}} \
    --instance-configs instanceType={{p4d.24xlarge}} \
    --slurm-configuration scaleDownIdleTimeInSeconds={{300}}
```
计算节点组级别的`scaleDownIdleTimeInSeconds`设置会覆盖该组中节点的集群级别值。此设置需要Slurm版本 25.11 或更高版本。

您可以将多个可选配置设置添加到该`create-compute-node-group`命令中。
+ 您可以指定您的自定义启动模板`--amiId`是否不包含对 AMI 的引用，或者您是否希望覆盖该值。请注意，用于节点组的 AMI 必须与 AWS PCS 兼容。您也可以选择由提供的示例 AMI AWS。有关此主题的更多信息，请参阅[的亚马逊机器映像 (AMI) AWS 个](working-with_ami.md)。
+ 用于`--purchase-option`选择 AWS PCS 为您的计算节点组购买 EC2 实例的方式。 On-Demand 是默认值。
  +  `ONDEMAND`— 使用 On-Demand 实例。如果您计划使用 On-Demand 容量预留 (ODCR)，也可以选择此选项。有关更多信息，请参阅 [ODCRs 与 AWS PCS 一起使用](capacity-reservations-odcr.md)。
  +  `SPOT`— 使用竞价型实例。如果您选择竞价型实例，还可以使用`--allocation-strategy`来定义 AWS PCS 在节点组中启动实例时如何选择竞价容量池。有关更多信息，请参阅《*亚马逊弹性计算云用户指南》[中的竞价型实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-allocation-strategy.html)分配策略*。
  +  `CAPACITY_BLOCK`— 使用现有的 Amazon EC2 容量区块进行机器学习预留。有关更多信息，请参阅 [将 Amazon EC2 容量块用于机器学习 AWS 个](capacity-blocks.md)。
  +  `INTERRUPTIBLE_CAPACITY_RESERVATION`— 使用共享的可中断 ODCR () I-ODCR。有关更多信息，请参阅 [I-ODCRs 与一起使用 AWS 个](capacity-reservations-iodcr.md)。
+ 可以使用为节点组中的节点提供Slurm配置选项`--slurm-configuration`。您可以设置权重（调度优先级）和实际内存。权重较低的节点具有较高的优先级，并且单位是任意的。有关更多信息，请参阅Slurm文档[中的](https://slurm.schedmd.com/slurm.conf.html#OPT_Weight)重量。实际内存设置节点组中节点上实际内存的大小（以 GB 为单位）。它应与Slurm配置中 AWS PCS 中的群集`CR_CPU_Memory`选项一起使用。有关更多信息，请参阅 Slurm文档中的 [RealMemory](https://slurm.schedmd.com/slurm.conf.html#OPT_RealMemory)。
+ `--node-lifecycle-actions`用于在计算节点生命周期的定义时刻运行自定义脚本，例如挂载文件系统、安装软件或加入目录服务。有关更多信息，请参阅 [在中配置节点生命周期操作 AWS 个](cng-node-lifecycle-actions-configure.md)。有关命令示例，请参见[的节点生命周期操作示例 AWS 个](cng-node-lifecycle-actions-examples.md)。

**重要**  
创建计算节点组可能需要几分钟。

您可以使用以下命令查询节点组的状态。在节点组的状态达到该队列之前，您无法将其与队列关联`ACTIVE`。

```
aws pcs get-compute-node-group --region {{region}} \
    --cluster-identifier {{my-cluster}} \
    --compute-node-group-identifier {{my-node-group}}
```

------