

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

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

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

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

**重要**  
AWS PCS 目前需要 IPv4 支持本地节点通信的内核，即使您在 IPv6仅限网络中使用 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 资源。有关更多信息，请参阅 [AWS 并行计算服务的 IAM 实例配置文件](security-instance-profiles.md)。
+ 您的节点组实例的启动模板。有关更多信息，请参阅 [在 AWS PCS 上使用亚马逊 EC2 启动模板](working-with_launch-templates.md)。
+  要创建使用 Amazon EC2 **竞价型**实例的计算节点组，您必须拥有**AWSServiceRoleForEC2竞价**服务相关角色。 AWS 账户有关更多信息，请参阅 [适用于 AWS PCS 的 Amazon EC2 竞价角色](spot-role.md)。

## 在 AWS PCS 中创建计算节点组
<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。有关此主题的更多信息，请参阅[适用于 AWS PCS 的亚马逊机器映像 (AMIs)](working-with_ami.md)。

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

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

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

   1. **扩展配置**-指定节点组的最小和最大实例数。您可以定义静态配置（其中有固定数量的节点在运行），也可以定义动态配置，其中最多可以运行最大数量的节点。对于静态配置，请将最小值和最大值设置为相同的、大于零的数字。对于动态配置，请将最小实例数设置为零，将最大实例数设置为大于零的数字。 AWS PCS 不支持混合使用静态和动态实例的计算节点组。

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

   1. **购买选项**-选择按需实例、竞价型实例或现有容量块。如果您计划使用**按需**容量预留 (ODCR)，也请选择按需。有关更多信息，请参阅 [ODCRs 与 AWS PCS 一起使用](capacity-reservations-odcr.md)。选择**容量块**以使用现有的 Amazon EC2 容量块进行机器学习预留。有关更多信息，请参阅 [将 Amazon EC2 容量块用于带有 AWS PCS 的机器学习](capacity-blocks.md)。

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

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

1. （可选）在**标签**下，将所有标签添加到您的计算节点组。

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

**建议采取下一步行动**
+ 将您的节点组添加到 AWS PCS 中的队列中，使其能够处理作业。

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

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

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

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

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

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

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

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}}。您可以定义静态配置（其中有固定数量的节点在运行），也可以定义动态配置，其中最多可以运行最大数量的节点。对于静态配置，请将最小值和最大值设置为相同的、大于零的数字。对于动态配置，请将最小实例数设置为零，将最大实例数设置为大于零的数字。 AWS PCS 不支持混合使用静态和动态实例的计算节点组。

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

```
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}}"}]'
```
有关更多信息，请参阅 [AWS PCS 计算节点组的自定义 Slurm 设置](slurm-custom-settings-cng.md)。

您可以将几个可选的配置设置添加到`create-compute-node-group`命令中。
+ 您可以指定您的自定义启动模板`--amiId`是否不包含对 AMI 的引用，或者您是否希望覆盖该值。请注意，用于节点组的 AMI 必须与 AWS PCS 兼容。您也可以选择由提供的示例 AMI AWS。有关此主题的更多信息，请参阅[适用于 AWS PCS 的亚马逊机器映像 (AMIs)](working-with_ami.md)。
+ `--purchase-option`用于选择 AWS PCS 为您的计算节点组购买 EC2 实例的方式。按需是默认设置。
  +  `ONDEMAND`— 使用按需实例。如果您计划使用按需容量预留 (ODCR)，也可以选择此选项。有关更多信息，请参阅 [ODCRs 与 AWS PCS 一起使用](capacity-reservations-odcr.md)。
  +  `SPOT`— 使用竞价型实例。如果您选择竞价型实例，则还可以使用`--allocation-strategy`来定义 AWS PCS 在启动节点组中的实例时如何选择竞价型容量池。有关更多信息，请参阅 *Amazon 弹性计算云用户指南*中的[竞价型实例分配策略](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-allocation-strategy.html)。
  +  `CAPACITY_BLOCK`— 使用现有的 Amazon EC2 容量块进行机器学习预留。有关更多信息，请参阅 [将 Amazon EC2 容量块用于带有 AWS PCS 的机器学习](capacity-blocks.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)。

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

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

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

------