

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# PCS AWS でのキャパシティ予約
<a name="working-with_capacity-reservations"></a>

 オンデマンドキャパシティ予約または Amazon EC2 Capacity Blocks for ML を使用して、特定のアベイラビリティーゾーンと特定の期間に Amazon EC2 キャパシティを予約し、必要なコンピューティングキャパシティを必要なときに利用できるようにすることができます。

 **オンデマンドキャパシティ予約 (ODCRs) **を使用すると、特定のアベイラビリティーゾーンの Amazon EC2 インスタンスのコンピューティングキャパシティを任意の期間予約できます。長期契約や前払いなしで、いつでも予約を作成およびキャンセルできます。ODCRsは、要件の変化に応じて変更できる柔軟なキャパシティ予約が必要な場合に最適です。詳細については、*「Amazon Elastic Compute Cloud ユーザーガイド*」の[「オンデマンドキャパシティ予約](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html)」を参照してください。

 **ML 用 Amazon EC2 キャパシティブロック**を使用すると、GPU ベースの高速コンピューティングインスタンスを将来の使用のために最大 8 週間前に予約できます。1～64 インスタンスのブロックは、1 日から 6 か月間予約できます。キャパシティブロックは、特定の時間に GPU 容量への保証付きアクセスを必要とする機械学習ワークロードに最適です。詳細については、[「Amazon Elastic Compute Cloud ユーザーガイド」の「ML のキャパシティブロック](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-blocks.html)」を参照してください。 **

**Topics**
+ [

# PCS での ODCRs AWS の使用
](capacity-reservations-odcr.md)
+ [

# PCS での ML での Amazon EC2 AWS キャパシティブロックの使用
](capacity-blocks.md)

# PCS での ODCRs AWS の使用
<a name="capacity-reservations-odcr"></a>

 PCS AWS がリザーブドインスタンスを使用する方法を選択できます。**オープン** ODCR を作成すると、 AWS PCS またはアカウント内の他のプロセスによって起動された一致するインスタンスは、予約に対してカウントされます。**ターゲット** ODCR では、特定の予約 ID で起動されたインスタンスのみが予約に対してカウントされます。時間的制約のあるワークロードでは、ターゲット ODCRs がより一般的です。

 PCS AWS コンピューティングノードグループを起動テンプレートに追加することで、ターゲット ODCR を使用するように設定できます。これを行う手順は次のとおりです。

1.  [ Amazon EC2 キャパシティ予約の作成ユーザーガイド を使用して、ターゲットのオンデマンドキャパシティ予約 ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/capacity-reservations-create.html)(ODCR) を作成します。

1.  ODCR を起動テンプレートに関連付けます。そのためには、次の 2 つの方法があります。

   1.  **直接 ODCR の関連付け:** 起動テンプレートで ODCR ID を直接参照します。このアプローチは厳密な容量制御を提供し、インスタンスのバックフィルをサポートしていません (コンピューティングノードグループが ODCR で利用可能なインスタンスよりも多くのインスタンスをリクエストした場合、追加のインスタンスは起動されません）。

   1.  **キャパシティ予約グループの関連付け:** ODCR をキャパシティ予約グループに追加し、起動テンプレートでグループを参照します。このアプローチはインスタンスのバックフィルをサポートし、予約容量を超えた場合に AWS PCS が追加のオンデマンドインスタンスを起動できるようにします。

1.  起動テンプレートを使用するように PCS AWS コンピューティングノードグループを作成または更新します。詳細については、[AWS 「PCS Compute Node Groups ユーザーガイド](https://docs.aws.amazon.com/pcs/latest/userguide/working-with_cng.html)」を参照してください。

   1. コンピューティングノードグループの `purchaseOption` を に設定します`ONDEMAND`。

## 例: ターゲット ODCR で hpc6a.48xlarge インスタンスを予約して使用する
<a name="capacity-reservations-odcr-example"></a>

 このコマンド例では、32 個の hpc6a.48xlarge インスタンスのターゲット ODCR を作成します。プレイスメントグループでリザーブドインスタンスを起動するには、 コマンド`--placement-group-arn`に を追加します。`--end-date` および を使用して終了日を定義できます。そうしないと`--end-date-type`、予約は手動で終了するまで続行されます。

```
aws ec2 create-capacity-reservation \
    --instance-type hpc6a.48xlarge \
    --instance-platform Linux/UNIX \
    --availability-zone us-east-2a \
    --instance-count 32 \
    --instance-match-criteria targeted
```

 このコマンドの結果は、新しい ODCR の ARN になります。ODCR ID は、ARN から、`"arn:aws:ec2:us-east-2:123456789012:capacity-reservation/ODCR-ID"`または [ Amazon EC2 DescribeCapacityReservations](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeCapacityReservations.html) を使用して取得できます。

 **ODCR の直接関連付け:** ODCR ID を起動テンプレートに追加します。ODCR ID を参照する起動テンプレートの例を次に示します。

```
{
  "CapacityReservationSpecification": {
    "CapacityReservationTarget": {
      "CapacityReservationId": "cr-1234567890abcdef1"
    }
  }
}
```

 **キャパシティ予約グループの関連付け:** キャパシティ予約グループを作成し、そのグループを起動テンプレートに追加します。次のコマンドは、 という名前のキャパシティ予約グループを作成します`EXAMPLE-CR-GROUP`。

```
aws resource-groups create-group \
    --name EXAMPLE-CR-GROUP \
    --configuration \
        '{"Type": "AWS::EC2::CapacityReservationPool"}' \
        '{"Type": "AWS::ResourceGroups::Generic", "Parameters": [{"Name": "allowed-resource-types", "Values": ["AWS::EC2::CapacityReservation"]}]}'
```

 次のコマンドは、キャパシティ予約グループに ODCR を追加します。

```
aws resource-groups group-resources --group EXAMPLE-CR-GROUP \
    --resource-arns arn:aws:ec2:us-east-2:123456789012:capacity-reservation/cr-1234567890abcdef1
```

 ODCR を作成してキャパシティ予約グループに追加すると、起動テンプレートに追加して PCS AWS コンピューティングノードグループに接続できるようになりました。キャパシティ予約グループを参照する起動テンプレートの例を次に示します。

```
{
  "CapacityReservationSpecification": {
    "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-2:123456789012:group/EXAMPLE-CR-GROUP"
  }
}
```

 最後に、PCS AWS コンピューティングノードグループを作成または更新して hpc6a.48xlarge インスタンスを使用し、ODCR を参照する起動テンプレートを使用します。静的ノードグループの場合、最小インスタンス数と最大インスタンス数を予約のサイズ (32) に設定します。動的ノードグループの場合、最小インスタンス数を 0 に設定し、最大インスタンス数を希望のインスタンスサイズに設定します。

 この例は、1 つのコンピューティングノードグループにプロビジョニングされた 1 つの ODCR の簡単な実装です。ただし、 AWS PCS は他の多くの設計をサポートしています。たとえば、複数のコンピューティングノードグループ間で大きな ODCR またはキャパシティ予約グループを分割できます。または、別の AWS アカウントが作成して共有した ODCRs を使用することもできます。

 詳細については、*Amazon Elastic Compute Cloud ユーザーガイド*の[「ML のオンデマンドキャパシティ予約とキャパシティブロック](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/capacity-reservation-overview.html)」を参照してください。

# PCS での ML での Amazon EC2 AWS キャパシティブロックの使用
<a name="capacity-blocks"></a>

Amazon EC2 Capacity Blocks for ML は、短期間のワークロードをサポートするために、特定の日時範囲内で GPU ベースの高速コンピューティングインスタンスを事前に予約するための Amazon EC2 購入オプションです。キャパシティブロック内で実行されるインスタンスは、Amazon EC2 UltraClusters 内に自動的に互いに近く配置され、低レイテンシーでペタビットスケールのノンブロッキングネットワーキングを実現します。詳細については、[「Amazon Elastic Compute Cloud ユーザーガイド」の「ML のキャパシティブロック](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-blocks.html)」を参照してください。 **

起動テンプレートを使用して、コンピューティングノードグループのインスタンスを起動するときに PCS AWS にキャパシティブロックを使用させることができます。

**注記**  
AWS PCS は、Slurm バージョン 24.05 以降、キャパシティブロックのサポートを導入しました。

## 制限事項
<a name="capacity-blocks-limitations"></a>
+ AWS PCS は、P5en, P5e, P5P4d インスタンスファミリーのキャパシティブロックのみをサポートします。
+ コンピューティングノードグループは、一度に 1 つのキャパシティブロックにのみ関連付けることができます。
+ コンピューティングノードグループを、複数のキャパシティブロックを組み合わせたキャパシティ予約グループに関連付けることはできません。
+ PCS で使用するキャパシティブロックは、 `scheduled`または AWS `active`状態である必要があります。などの他の状態でキャパシティブロックを使用することはできません`payment-failed`。詳細については、*「Amazon Elastic Compute Cloud ユーザーガイド*」の[「キャパシティブロックの表示](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/capacity-blocks-view.html)」を参照してください。

## キャパシティブロックの有効期限
<a name="capacity-blocks-expiration"></a>

キャパシティブロックは、特定の日付と時刻の範囲に制限されます。キャパシティブロックの有効期限が切れた場合:
+ そのキャパシティブロックに関連付けられたコンピューティングノードグループは引き続き存在し、同じキューに関連付けられます。
+ コンピューティングノードグループ内のすべてのインスタンスが終了し、Slurm 設定に基づいてアクティブなジョブが失敗する可能性があります。
+ AWS PCS はコンピューティングノードグループで新しいインスタンスを起動できません。
+ キューに入れられたジョブまたは新しく送信されたジョブはすべて、別のコンピューティングノードグループがキューにアタッチされるか、新しいキャパシティブロックを指定する新しい起動テンプレートを使用するようにコンピューティングノードグループを更新するまで、保留中の状態のままになります。

# キャパシティブロックを使用するように AWS PCS コンピューティングノードグループを設定する
<a name="capacity-blocks-configure-cng"></a>

**キャパシティブロックをコンピューティングノードグループに関連付けるには**

1. キャパシティブロックを指定する PCS AWS 用の Amazon EC2 起動テンプレートを作成します。PCS の起動テンプレートの作成の詳細については、 AWS 「」を参照してください[PCS での Amazon EC2 AWS 起動テンプレートの使用](working-with_launch-templates.md)。

   起動テンプレートには以下が含まれている必要があります。
   + `MarketType` の値は に設定`InstanceMarketOptions`する必要があります`capacity-block`。
   + 有効な `CapacityReservationSpecification`を持つ `CapacityReservationId`
   + 購入したキャパシティブロックのインスタンスタイプ`InstanceType`に一致する有効な 。

1. 起動テンプレートを使用するコンピューティングノードグループを作成します。詳細については、「[PCS AWS でのコンピューティングノードグループの作成](working-with_cng_create.md)」を参照してください。既存のコンピューティングノードグループを更新して、起動テンプレートを使用することもできます。詳細については、「[PCS AWS コンピューティングノードグループの更新](working-with_cng_update.md)」を参照してください。

   コンピューティングノードグループを作成または更新するとき：
   + コンピューティングノードグループを作成または更新するために使用する IAM ID には、次のアクセス許可が必要です。

     ```
     ec2:DescribeCapacityReservations
     ```

     詳細については、「[PCS AWS の最小アクセス許可](security-min-permissions.md)」を参照してください。
   + キャパシティブロックは `scheduled`または `active`状態である必要があります。
   + コンピューティングノードグループの `purchaseOption` を に設定します`CAPACITY_BLOCK`。
   + `maxInstanceCount` コンピューティングノードグループの は、キャパシティブロックのサイズを超えることはできません。
   + コンピューティングノードグループのアベイラビリティーゾーンは、コンピューティングノードグループのサブネットアベイラビリティーゾーンの 1 つと一致する必要があります。

**重要**  
更新時にコンピューティングノードグループのインスタンスタイプを変更することはできません。キャパシティブロックは、コンピューティングノードグループと同じインスタンスタイプでのみ使用できます。別のインスタンスタイプのキャパシティブロックを使用する場合は、新しいコンピューティングノードグループを作成する必要があります。

# PCS AWS でのキャパシティブロックの使用に関するよくある質問
<a name="capacity-blocks-faq"></a>

**キャパシティブロックに対して支払いを行ったところ、すぐに PCS AWS で使用しようとしましたが、コンピューティングノードグループの作成に失敗しました。何が起きたのか。**  
キャパシティブロックが `scheduled`または `active`状態ではない可能性があります。キャパシティブロックが `scheduled`または になったら、もう一度試してください`active`。

**PCS AWS でキャパシティブロックを使用していて、有効期限が切れる前に拡張機能を購入しました。PCS AWS で引き続き使用するにはどうすればよいですか?**  
 AWS PCS でキャパシティブロックを引き続き使用するために何もする必要はありません。拡張機能の支払いが成功すると、キャパシティブロックの終了日が更新されます。キャパシティブロックの有効期限が切れない限り、コンピューティングノードグループは引き続き動作します。拡張機能の支払いが失敗した場合、キャパシティブロックは残り`active`、コンピューティングノードグループはキャパシティブロックが元の終了日に期限切れになるまで動作します。

**キャパシティブロックの有効期限が切れると、キューに入れられたジョブと実行中のジョブはどうなりますか?**  
キャパシティブロックの有効期限が切れる前に開始されなかったキューに入れられたジョブは、別のコンピューティングノードグループをキューにアタッチするか、コンピューティングノードグループを新しいキャパシティブロックで更新するまで保留中のままになります。ジョブは引き続きキューに送信できます。Slurm 設定はアクティブなジョブに影響します。デフォルトでは、アクティブなジョブは自動的に再キューに入れられますが、エラーが発生したり、失敗したりする可能性があります。

**キャパシティブロックの有効期限が切れました。何かすべきですか?**  
何もする必要はありません。Amazon EC2 コンソールで EC2 キャパシティ予約のステータスを確認できます。キャパシティブロックの有効期限が切れても、そのキャパシティブロックに関連付けられたコンピューティングノードグループは引き続き存在し、同じキューを処理します。コンピューティングノードグループには、ジョブを実行するインスタンスがありません。コンピューティングノードグループを削除するか、キューとの関連付けを解除して、ユーザーが実行されないジョブを送信しないようにできます。

** AWS PCS コンピューティングノードグループで新しいキャパシティブロックを使用します。どうすればよいですか?**  
新しいキャパシティブロックを使用するには、新しいコンピューティングノードグループを作成することをお勧めします。詳細については、「[キャパシティブロックを使用するように AWS PCS コンピューティングノードグループを設定する](capacity-blocks-configure-cng.md)」を参照してください。

**クラスターとサービス間で 1 つのキャパシティブロックを共有するにはどうすればよいですか?**  
キャパシティブロックは、複数のクラスターとサービスに分割できます。たとえば、PCS-Cluster-1 に 20 個のノードを持つ 64 個の`p5.48xlarge`インスタンス、PCS-Cluster-2 に 16 個のノード、および他のサービスの残りのノードを持つキャパシティブロックを分割するには、PCS-Cluster-1 の場合は `minInstanceCount`と の両方`maxInstanceCount`を 20、PCS-Cluster-2 の場合は 16 に設定します。 PCS-Cluster-1

**1 つ以上のキャパシティブロックまたは 1 つのコンピューティングノードグループの合計キャパシティを使用できますか?**  
いいえ。1 つのコンピューティングノードグループに関連付けることができるキャパシティブロックは 1 つだけです。 AWS PCS は、複数のキャパシティブロックを組み合わせたキャパシティ予約グループをサポートしていません。

**キャパシティブロックがいつ開始または期限切れになるかを知るにはどうすればよいですか?**  
 AWS PCS とは無関係に、Amazon EC2 はキャパシティブロック予約が開始されると EventBridge を介して`Capacity Block Reservation Delivered`イベントを送信し、キャパシティブロック予約の有効期限が切れる 40 分前に`Capacity Block Reservation Expiration Warning`イベントを送信します。詳細については、[「Amazon Elastic Compute Cloud ユーザーガイド」のEventBridge を使用したキャパシティブロックのモニタリング](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/capacity-blocks-monitor.html)」を参照してください。 **

**Slurm はキャパシティブロックの状態をどのように追跡しますか?**  
を実行して`sinfo`、PCS AWS がキャパシティブロックを使用する方法を理解できます。次の出力例では、キューはキャパシティ`active`ブロックから 4 つのインスタンスを実行するコンピューティングノードグループに関連付けられています。ノードは Slurm `idle` 状態です (使用可能で、どのジョブにもまだ割り当てられていません）。  

```
$ sinfo  
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST  
fanout up infinite 4 idle node-fanout-[1-4]
```
ノードが代わりに `maint`状態になっている場合は、 `scontrol show res`を実行して、この状態を制御する Slurm 予約の詳細を表示できます。次の出力例では、キャパシティブロックは将来の開始日`scheduled`になります。  

```
$ scontrol show res                                                                                                  
ReservationName=node-fanout-scheduled StartTime=2025-10-14T13:09:17 EndTime=2025-10-14T13:11:17 Duration=00:02:00    
   Nodes=node-fanout-[1-4] NodeCnt=4 CoreCnt=16 Features=(null) PartitionName=(null) Flags=MAINT,SPEC_NODES          
   TRES=cpu=16                                                                                                       
   Users=root Groups=(null) Accounts=(null) Licenses=(null) State=ACTIVE BurstBuffer=(null)                          
   MaxStartDelay=(null)                                                                                              
   Comment=node-fanout Scheduled
```

**キャパシティブロックが共有されているために、キャパシティの起動中に発生するエラーが であるかどうかを確認するにはどうすればよいですか?**  
Amazon EC2 コンソールで**キャパシティ予約**をチェックして、キャパシティブロックからアクティブにプロビジョニングされているインスタンスの数を確認します。各インスタンスのタグをチェックして、どのサービスまたはクラスターがそれを使用しているかを確認します。たとえば、 AWS PCS のすべてのインスタンスには AWS 、インスタンスが属`aws:pcs:cluster-id = pcs_l0mizqyk5o | aws:pcs:compute-node-group-id = pcs_ic7onkmfqk`するクラスターとコンピューティングノードグループを示す などの PCS タグがあります。その後、キャパシティブロックが最大キャパシティにあるかどうかを確認できます。  
`scontrol show nodes` を使用して、 AWS PCS クラスターのキャパシティブロックノードが をトリガーしているかどうかを確認します`ReservationCapacityExceeded`。  

```
[root@ip-172-16-10-54 ~]# scontrol show nodes test-node-8-gamma-cb-2  
NodeName=test-8-gamma-cb-2 CoresPerSocket=1  
   CPUAlloc=0 CPUEfctv=8 CPUTot=8 CPULoad=0.00  
   AvailableFeatures=test-8-gamma-cb,gpu  
   ActiveFeatures=test-8-gamma-cb,gpu  
   Gres=gpu:H100:1  
   NodeAddr=test-8-gamma-cb-2 NodeHostName=test-8-gamma-cb-2  
   RealMemory=249036 AllocMem=0 FreeMem=N/A Sockets=8 Boards=1  
   State=IDLE+CLOUD+POWERING_DOWN ThreadsPerCore=1 TmpDisk=0 Weight=1 Owner=N/A MCS_label=N/A  
   Partitions=my-q  
   BootTime=None SlurmdStartTime=None  
   LastBusyTime=Unknown ResumeAfterTime=None  
   CfgTRES=cpu=8,mem=249036M,billing=8  
   AllocTRES=  
   CurrentWatts=0 AveWatts=0  
   Reason=Failed to launch backing instance (Error Code: ReservationCapacityExceeded) [root@2025-08-28T15:15:33]
```

**複数のコンピューティングノードグループが同じキューにアタッチされている場合、キャパシティブロックバックされたインスタンスでジョブを強制的に実行するにはどうすればよいですか?**  
Slurm の機能と制約を使用して、特定のノードセットにジョブをロックできます。コンピューティングノードグループごとに Slurm の重みを設定しないことをお勧めします。これは、 `maint` 状態ではないノードでのみ機能するためです。