

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 AWS PCS 中建立運算節點群組
<a name="working-with_cng_create"></a>

本主題提供可用選項的概觀，並說明在 AWS 平行運算服務 (AWS PCS) 中建立運算節點群組時應考量的事項。如果這是您第一次在 AWS PCS 中建立運算節點群組，我們建議您遵循 中的教學課程[平行 AWS 運算服務入門](getting-started.md)。本教學課程可協助您建立運作中的 HPC 系統，而無需擴展到所有可用的選項和系統架構。

**注意**  
您可以在運算節點群組上設定自訂 Slurm 設定，以控制資源使用率和節點層級行為。如需詳細資訊，請參閱[在 AWS PCS 中設定自訂 Slurm 設定](slurm-custom-settings.md)。

**重要**  
AWS PCS 目前需要支援 IPv4 的核心進行本機節點通訊，即使您在IPv6-only的網路中使用 AWS PCS 也是如此。如需詳細資訊，請參閱[AWS PCS 的自訂 Amazon Machine Image AMIs)](working-with_ami_custom.md)。

## 先決條件
<a name="working-with_cng_create_prereq"></a>
+ 有足夠的服務配額，可在您的 中啟動所需數量的 EC2 執行個體 AWS 區域。您可以使用 [AWS 管理主控台](https://console.aws.amazon.com/servicequotas)來檢查和請求提高您的服務配額。
+ 符合 AWS PCS 聯網需求的現有 VPC 和子網路 (s)。建議您在部署叢集以供生產使用之前，先徹底了解這些需求。如需詳細資訊，請參閱[AWS PCS VPC 和子網路需求和考量事項](working-with_networking_vpc-requirements.md)。您也可以使用 CloudFormation 範本來建立 VPC 和子網路。 為 CloudFormation 範本 AWS 提供 HPC 配方。如需詳細資訊，請參閱 GitHub 上的 [ aws-hpc-recipes](https://github.com/aws-samples/aws-hpc-recipes/tree/main/recipes/net/hpc_large_scale)。
+ IAM 執行個體描述檔，具有呼叫 AWS PCS `RegisterComputeNodeGroupInstance` API 動作和存取節點群組執行個體所需任何其他 AWS 資源的許可。如需詳細資訊，請參閱[平行運算服務的 IAM AWS 執行個體描述檔](security-instance-profiles.md)。
+ 節點群組執行個體的啟動範本。如需詳細資訊，請參閱[搭配 AWS PCS 使用 Amazon EC2 啟動範本](working-with_launch-templates.md)。
+  若要建立使用 Amazon EC2 **Spot** 執行個體的運算節點群組，您必須在您的 中具有 **AWSServiceRoleForEC2Spot** 服務連結角色 AWS 帳戶。如需詳細資訊，請參閱[AWS PCS 的 Amazon EC2 Spot 角色](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 使用 Amazon 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 的 Amazon Machine Image AMIs)](working-with_ami.md)。

   1. **IAM 執行個體描述檔** – 選擇節點群組的執行個體描述檔。執行個體描述檔會授予執行個體安全存取 AWS 資源和服務的權限。如果您沒有準備好，您可以選取**建立基本設定檔**，讓 AWS PCS 使用最低政策為您建立設定檔，或參閱 [平行運算服務的 IAM AWS 執行個體描述檔](security-instance-profiles.md)。

   1. **子網路** – 在部署 AWS PCS 叢集的 VPC 中選擇一或多個子網路。如果您選擇多個子網路，則節點之間無法使用 EFA 通訊，而不同子網路中節點之間的通訊可能會增加延遲。請確定您在此處指定的子網路符合您在 EC2 啟動範本中定義的任何子網路。

   1. **執行個體** – 選擇一或多個執行個體類型，以滿足節點群組中的擴展請求。所有執行個體類型都必須具有相同的處理器架構 (x86\_64 或 arm64) 和 vCPUs 數量。如果執行個體具有 GPUs，則所有執行個體類型都必須具有相同數目的 GPUs。

   1. **擴展組態** – 指定節點群組的執行個體數量下限和上限。您可以定義靜態組態，其中有固定數量的節點正在執行，或是動態組態，其中最多可以執行節點的計數上限。對於靜態組態，將最小值和最大值設定為相同，大於零個數字。對於動態組態，請將最小執行個體設定為零，最大執行個體設定為大於零的數字。 AWS PCS 不支援混合靜態和動態執行個體的運算節點群組。

1. （選用） **在其他設定**下，指定下列項目：

   1. **購買選項** – 選取隨需執行個體、Spot 執行個體或現有的容量區塊。如果您計劃使用**隨需**容量保留 (ODCR)，也請選擇隨需。如需詳細資訊，請參閱[搭配 AWS PCS 使用 ODCRs](capacity-reservations-odcr.md)。選擇**容量區塊**，將現有的 Amazon EC2 容量區塊用於 ML 保留。如需詳細資訊，請參閱[搭配 AWS PCS 使用適用於 ML 的 Amazon EC2 容量區塊](capacity-blocks.md)。

   1. **配置策略** – 如果您已選取 Spot 購買選項，您可以指定在節點群組中啟動執行個體時如何選擇 Spot 容量集區。如需詳細資訊，請參閱《*Amazon Elastic Compute Cloud 使用者指南*》中的 [Spot 執行個體的配置策略](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. 以 的 ID 取代{{區域}}， AWS 區域 以在 中建立叢集，例如 `us-east-1`。

1. 以叢集的名稱或 取代 {{my-cluster}}。 `clusterId`

1. 將 {{my-node-group}} 取代為運算節點群組的名稱。此名稱僅能使用英數字元 (區分大小寫) 和連字號。它必須以字母字元開頭，且長度不可超過 25 個字元。名稱在叢集中必須是唯一的。

1. 將 {{subnet-ExampleID1}} 取代為叢集 VPC 中的一或多個子網路 IDs。

1. 使用自訂啟動範本的 ID 取代 {{lt-ExampleID1}}。如果您沒有準備好，請參閱 以[搭配 AWS PCS 使用 Amazon EC2 啟動範本](working-with_launch-templates.md)了解如何建立。
**重要**  
AWS PCS 會為每個運算節點群組建立受管啟動範本。這些名稱為 `pcs-{{identifier}}-do-not-delete`。當您建立或更新運算節點群組時，請勿選取這些節點群組，否則節點群組將無法正常運作。

1. 將 {{launch-template-version}} 取代為特定的啟動範本版本。 AWS PCS 會將您的節點群組與該特定版本的啟動範本建立關聯。

1. 使用 IAM 執行個體描述檔的 ARN 取代 {{arn：InstanceProfile}}。如果您沒有準備，請參閱 [搭配 AWS PCS 使用 Amazon 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) 和 vCPUs 數量。如果執行個體具有 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 的 Amazon Machine Image AMIs)](working-with_ami.md)。
+ 使用 `--purchase-option` 選擇 AWS PCS 為您的運算節點群組購買 EC2 執行個體的方式。隨需是預設值。
  +  `ONDEMAND` – 使用隨需執行個體。如果您計劃使用隨需容量保留 (ODCR)，也請選擇此選項。如需詳細資訊，請參閱[搭配 AWS PCS 使用 ODCRs](capacity-reservations-odcr.md)。
  +  `SPOT` – 使用 Spot 執行個體。如果您選擇 Spot 執行個體，您也可以使用 `--allocation-strategy` 定義 AWS PCS 在節點群組中啟動執行個體時如何選擇 Spot 容量集區。如需詳細資訊，請參閱《*Amazon Elastic Compute Cloud 使用者指南*》中的 [Spot 執行個體的配置策略](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-allocation-strategy.html)。
  +  `CAPACITY_BLOCK` – 使用現有的 Amazon EC2 容量區塊進行 ML 保留。如需詳細資訊，請參閱[搭配 AWS PCS 使用適用於 ML 的 Amazon EC2 容量區塊](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}}
```

------