AWS ParallelCluster v3.15.0 で P6-B300 サポートなど主要な変更点を確認してみた

AWS ParallelCluster v3.15.0 で P6-B300 サポートなど主要な変更点を確認してみた

2026.03.29

はじめに

AWS ParallelCluster v3.15.0 がリリースされました。EFA 用 ENI のプライベート IP アドレスの消費をゼロにする efa-only InterfaceType の導入や、Compute node の設定同期を刷新するなど、大規模な HPC クラスター運用向けの改善がなされました。クラスターを構築し、主要な変更点を確認してみました。

https://aws.amazon.com/jp/about-aws/whats-new/2026/03/aws-parallelcluster-p6-b300-slurm/

v3.15.0 の主要アップデート概要

GitHub のリリースノートから主な変更点を抜粋します。

https://github.com/aws/aws-parallelcluster/releases/tag/v3.15.0

主な新機能と改善

  • P6-B300 インスタンスのサポートし、大規模な AI/ML ワークロードを実行可能
  • EFA 有効時のネットワークインターフェイスが interface + efa-only に分離され、プライベート IP アドレス消費を削減
  • Compute node の設定同期が cfn-hup から systemd タイマーと NFS 共有ストレージベースの方式に変更
  • Slurm 25.11.4、CUDA 13.0.2、Python 3.14.2 など主要なソフトウェアのバージョン更新

廃止予告

v3.15.0 では 2 つの廃止予告があります。

Amazon Linux 2 は v3.15.0 が最後のサポートリリースです。EOL は 2026 年 6 月 30 日のため、早めに Amazon Linux 2023 への移行を検討してください。

AWS Batch スケジューラも v3.15.0 が最後のサポートリリースです。v3.16.0 以降、ParallelCluster のスケジューラとして AWS Batch は利用できなくなります。AWS Batch を使用中の場合は Slurm への移行を計画してください。

検証環境

項目 設定値
ParallelCluster v3.15.0
OS Amazon Linux 2023
Head node t3a.small(パブリックサブネット)
Compute node c5n.18xlarge(プライベートサブネット、EFA 有効、PlacementGroup 有効、オンデマンド)
共有ストレージ デフォルトの HeadNode NFS
インターネットアクセス NAT Gateway 経由
リージョン ap-northeast-1

クラスター設定ファイル

検証で使用した設定ファイルです。環境依存の値(サブネット ID 等)はご自身の環境に合わせて置き換えてください。

クラスター設定ファイル全文
Region: ap-northeast-1
Image:
  Os: alinux2023
Tags:
  - Key: Name
    Value: cluster-v3.15.0

HeadNode:
  InstanceType: t3a.small
  Networking:
    ElasticIp: false
    SubnetId: subnet-029f0fb0acc64043d
  LocalStorage:
    RootVolume:
      Size: 45
      Encrypted: true
      VolumeType: gp3
      Iops: 3000
      Throughput: 125
  Iam:
    AdditionalIamPolicies:
      - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

Scheduling:
  Scheduler: slurm
  SlurmSettings:
    ScaledownIdletime: 5
  SlurmQueues:
    - Name: efa
      ComputeResources:
        - Name: c5n18xl
          Instances:
            - InstanceType: c5n.18xlarge
          MinCount: 0
          MaxCount: 2
          Efa:
            Enabled: true
      ComputeSettings:
        LocalStorage:
          RootVolume:
            Size: 45
            Encrypted: true
            VolumeType: gp3
            Iops: 3000
            Throughput: 125
      CapacityType: ONDEMAND
      Networking:
        SubnetIds:
          - subnet-0897827eb4d8cd2fe
        PlacementGroup:
          Enabled: true
      Iam:
        AdditionalIamPolicies:
          - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

Monitoring:
  Logs:
    CloudWatch:
      Enabled: true
      RetentionInDays: 180
      DeletionPolicy: "Delete"
  Dashboards:
    CloudWatch:
      Enabled: false
pcluster create-cluster \
  --cluster-name v3150-test \
  --cluster-configuration cluster-config.yaml

P6-B300 インスタンスのサポート

v3.15.0 では NVIDIA Blackwell Ultra B300 GPU を搭載した P6-B300 インスタンスがサポートされました。8 基の B300 GPU、2.1 TB の高帯域 GPU メモリ、6.4 Tbps の EFA ネットワーキングを備えており、大規模な基盤モデルのトレーニングや推論に適しています。

P6-B300 インスタンスの詳細は以下の記事を参照してください。

https://dev.classmethod.jp/articles/aws-nvidia-blackwell-b300-p6-instance/

P6-B300 はネットワークカードが 17 枚もあります。 次で取り上げる今回のアップデート efa-only InterfaceType の恩恵がとくに大きいインスタンスです。

EFA のプライベート IP 消費削減

背景

従来の ParallelCluster では、EFA を有効にすると ENI のタイプが efa となり、各ネットワークカードの ENI ごとにプライベート IP が割り当てられていました。たとえば P6-B300(ネットワークカード 17 枚)を 100 ノード起動すると、1,700 個の IP を消費します。大規模なクラスターでは VPC のネットワーク設計や、サブネットの IP 枯渇問題がありました。

v3.15.0 では efa-only InterfaceType が導入されました。EFA ファブリック専用の ENI には IP アドレスが割り当てられません。IP コネクティビティ用の interface ENI のみが IP を消費するため、P6-B300 の例では 1,700 IP が 100 IP に削減されます。

レガシー動作が必要な場合は、クラスター設定ファイルの DevSettings セクションで EfaInterfaceType: efa を指定することで従来動作に戻せます。

確認してみた

c5n.18xlarge(Compute node)を起動した状態で、ENI 構成と IP 消費を確認します。

ENI 構成の確認

aws ec2 describe-instances でインスタンスのネットワークインターフェイスを確認しました。

# Compute node のインスタンス ID は pcluster describe-cluster-instances で確認
aws ec2 describe-instances \
  --instance-ids <compute-node-instance-id> \
  --query 'Reservations[].Instances[].NetworkInterfaces[].{InterfaceType:InterfaceType,PrivateIpAddress:PrivateIpAddress,DeviceIndex:Attachment.DeviceIndex}' \
  --output json
[
    {
        "InterfaceType": "efa-only",
        "PrivateIpAddress": null,
        "DeviceIndex": 1
    },
    {
        "InterfaceType": "interface",
        "PrivateIpAddress": "10.0.3.226",
        "DeviceIndex": 0
    }
]

DeviceIndex 0 の interface タイプ ENI にのみプライベート IP アドレスが割り当てられています。DeviceIndex 1 の efa-only タイプ ENI には IP アドレスがありません。

サブネット IP 消費の確認

Compute node 起動前後のサブネットの利用可能 IP アドレス数を比較しました。

aws ec2 describe-subnets \
  --subnet-ids <private-subnet-id> \
  --query 'Subnets[].AvailableIpAddressCount' \
  --output text \
  --region ap-northeast-1
タイミング AvailableIpAddressCount 差分
Compute node 起動前 250 -
Compute node 起動後(c5n.18xlarge x1) 249 -1

describe-instances の結果で ENI が 2 つ(interface + efa-only)存在することを確認済みです。ENI が 2 つあるにもかかわらず、プライベート IP アドレスの消費は 1 つだけでした。efa-only ENI がプライベート IP を消費しないことを確認できました。

systemd タイマーによる cfn-hup 置き換え

cfn-hupとは何かから確認することになりました。

背景

従来の ParallelCluster では、Compute node が CloudFormation の cfn-hup デーモンで設定変更を検知していました。cfn-hup は定期的に CloudFormation API をポーリングします。CloudFormation API にはスロットリング制限があり、DescribeStackResource は 20 リクエスト/秒、DescribeStacks は 10 リクエスト/秒が上限です。この制限はアカウント・リージョン単位で適用され、引き上げできません。大規模クラスターでは Compute node 数に比例して API コールが増加するため、スロットリングが発生するリスクがありました。

https://docs.aws.amazon.com/general/latest/gr/cfn.html

v3.15.0 では Compute node の cfn-hup が pcluster-check-update.timer(systemd タイマー)に置き換わりました。Head node が共有ストレージ(NFS)にファイルを書き込み、Compute node が NFS 経由で検知する方式です。CloudFormation API コールが不要になりました。

確認してみた

Head node と Compute node それぞれで設定同期の仕組みを確認しました。

Head node の確認

Head node で systemd タイマーを確認しました。

systemctl list-timers --all の全出力(Head node)
NEXT                        LEFT        LAST                        PASSED      UNIT                             ACTIVATES
Tue 2026-03-24 01:20:51 UTC 34s left    Tue 2026-03-24 01:19:49 UTC 27s ago     refresh-policy-routes@ens5.timer refresh-policy-routes@ens5.service
Tue 2026-03-24 23:26:39 UTC 22h left    Fri 2026-03-20 04:07:53 UTC 3 days ago  update-motd.timer                update-motd.service
Wed 2026-03-25 00:00:00 UTC 22h left    Tue 2026-03-24 00:15:17 UTC 1h 4min ago logrotate.timer                  logrotate.service
Wed 2026-03-25 00:00:00 UTC 22h left    Tue 2026-03-24 00:15:17 UTC 1h 4min ago mlocate-updatedb.timer           mlocate-updatedb.service
Wed 2026-03-25 00:07:00 UTC 22h left    -                           -           sysstat-summary.timer            sysstat-summary.service
Wed 2026-03-25 00:29:49 UTC 23h left    Tue 2026-03-24 00:29:49 UTC 50min ago   systemd-tmpfiles-clean.timer     systemd-tmpfiles-clean.service
Sun 2026-03-29 01:00:00 UTC 4 days left -                           -           raid-check.timer                 raid-check.service
Mon 2026-03-30 00:01:07 UTC 5 days left Tue 2026-03-24 01:05:49 UTC 14min ago   fstrim.timer                     fstrim.service
-                           -           Tue 2026-03-24 01:20:17 UTC 75ms ago    sysstat-collect.timer            sysstat-collect.service

9 timers listed.

Head node には pcluster-check-update.timer は存在しません。Head node は引き続き cfn-hup-runner.sh で設定変更を管理しています。

ps aux | grep cfn-hup | grep -v grep
root        3479  0.0  0.1 223028  3560 ?        S    00:17   0:00 /bin/bash /opt/parallelcluster/scripts/cfn-hup-runner.sh

Compute node の確認

Compute node で systemd タイマーを確認しました。

systemctl list-timers --all の全出力(Compute node)
NEXT                        LEFT        LAST                        PASSED     UNIT                             ACTIVATES
Tue 2026-03-24 01:20:36 UTC 18s left    Tue 2026-03-24 01:19:36 UTC 41s ago    pcluster-check-update.timer      pcluster-check-update.service
Tue 2026-03-24 01:20:37 UTC 19s left    Tue 2026-03-24 01:19:36 UTC 41s ago    refresh-policy-routes@ens5.timer refresh-policy-routes@ens5.service
Tue 2026-03-24 01:26:29 UTC 6min left   -                           -          systemd-tmpfiles-clean.timer     systemd-tmpfiles-clean.service
Tue 2026-03-24 01:30:00 UTC 9min left   Tue 2026-03-24 01:20:07 UTC 10s ago    sysstat-collect.timer            sysstat-collect.service
Tue 2026-03-24 01:30:53 UTC 10min left  Fri 2026-03-20 04:07:53 UTC 3 days ago fstrim.timer                     fstrim.service
Wed 2026-03-25 00:00:00 UTC 22h left    Tue 2026-03-24 01:12:10 UTC 8min ago   logrotate.timer                  logrotate.service
Wed 2026-03-25 00:00:00 UTC 22h left    Tue 2026-03-24 01:12:10 UTC 8min ago   mlocate-updatedb.timer           mlocate-updatedb.service
Wed 2026-03-25 00:07:00 UTC 22h left    -                           -          sysstat-summary.timer            sysstat-summary.service
Wed 2026-03-25 00:22:28 UTC 23h left    Fri 2026-03-20 04:07:53 UTC 3 days ago update-motd.timer                update-motd.service
Sun 2026-03-29 01:00:00 UTC 4 days left -                           -          raid-check.timer                 raid-check.service

10 timers listed.

Compute node では pcluster-check-update.timer が 1 分間隔で実行されています(出力の 1 行目)。

cfn-hup プロセスが動作していないことも確認しました。

ssh efa-dy-c5n18xl-1 systemctl status cfn-hup
○ cfn-hup.service - cfn-hup daemon
     Loaded: loaded (/usr/lib/systemd/system/cfn-hup.service; disabled; preset: disabled)
     Active: inactive (dead)

NFS 共有ストレージの確認

Compute node で NFS マウントを確認しました。

df -hT | grep nfs
10.0.0.207:/opt/parallelcluster/shared nfs4  45G  22G  24G  49% /opt/parallelcluster/shared
10.0.0.207:/home                       nfs4  45G  22G  24G  49% /home
10.0.0.207:/opt/intel                  nfs4  45G  22G  24G  49% /opt/intel
10.0.0.207:/opt/slurm                  nfs4  45G  22G  24G  49% /opt/slurm

/opt/parallelcluster/shared/ に設定同期用のファイルが格納されていることを確認しました。

ls -la /opt/parallelcluster/shared/

主な設定同期ファイルは以下のとおりです。ファイルの中身からの推測です。

ファイル 役割
cluster-config-version 設定バージョンのハッシュ値
cluster-config.yaml クラスター設定本体
update_trigger 更新トリガー(cluster-config-version と同じ値)
change-set.json 変更差分
computefleet-status.json コンピュートフリートのステータス

v3.14.0 以前との比較

項目 v3.14.0 以前 v3.15.0
Compute node の設定検知 cfn-hup(CloudFormation API ポーリング) systemd タイマー + NFS
CloudFormation API コール Compute node 数 x ポーリング回数 Head node のみ
スロットリングリスク 大規模時に高い 大幅軽減
ネットワーク依存 CloudFormation エンドポイント NFS(ローカルネットワーク)
Head node cfn-hup-runner.sh cfn-hup-runner.sh(変更なし)

ソフトウェアスタック更新

v3.15.0 では主要コンポーネントが大幅に更新されました。とくに Slurm のメジャーバージョンアップと CUDA 13.0 系への更新は、HPC・GPU ワークロードに直接影響しますのでご確認ください。

コンポーネント 前バージョン v3.15.0
Slurm 24.11.7 25.11.4
NVIDIA Driver 570.172.08 580.105.08
CUDA Toolkit 12.8.1 13.0.2
Python 3.12.11 3.14.2
EFA Installer 1.44.0 1.47.0
Pmix 5.0.6 5.0.10
GDRCopy 2.4.4 2.5.2
DCV 2024.0-19030 2025.0-20103
DCGM 4.4.1 4.5.1
Munge 0.5.16 0.5.17
Intel MPI 2021.16.0 2021.17.2

Slurm が 24 系から 25 系へメジャーバージョンアップしています。CUDA も 13.0 系に更新されています。

検証中のトラブルシューティング

EFA 対応インスタンスはプライベートサブネット必須

検証中に遭遇したトラブルを共有します。

症状

c5n.18xlarge(EFA 有効)の Compute node が Slurm 上で CF(configuring)のまま進まず、ブートストラップが完了しない。

原因

EFA 対応インスタンスは複数の ENI を持つため、仕様によりパブリック IP を自動割り当てできません。パブリックサブネットに配置してもパブリック IP が付与されず、IGW 経由のインターネットアクセスができないため、ブートストラップに必要なパッケージのダウンロードが失敗します。

公式ドキュメントにも、複数のネットワークインターフェイスまたはネットワークインターフェイスカードを持つインスタンスにはパブリック IP を割り当てられないと記載されています。NAT Gateway の使用が推奨されています。

https://docs.aws.amazon.com/parallelcluster/latest/ug/network-configuration-v3-single-subnet.html

解決策

Compute node をプライベートサブネットに配置し、NAT Gateway 経由でインターネットアクセスを確保します。

教訓

EFA を有効にする場合はプライベートサブネットと NAT Gateway の構成にしましょう。ParallelCluster のドキュメントでも、Head node をパブリックサブネット、Compute node をプライベートサブネットに配置する構成が推奨されています。検証だったのですべてパブリックサブネットで起動させて失敗しました。

その他では ap-northeast-1 の単一 AZ + PlacementGroup の制約下で c5n.18xlarge のスポットキャパシティが確保できませんでした。古いから空いているかなと思ったのですが、結局オンデマンドへの切り替えることになりました。

まとめ

AWS ParallelCluster v3.15.0 の主要アップデートを検証しました。

今回のアップデートでインパクトが大きいのは efa-only InterfaceType の導入です。EFA 用 ENI がプライベート IP を消費しなくなり、P6-B300 のようなネットワークカードの多いインスタンスでは 1 ノードあたり 17 IP が 1 IP に削減されます。大規模クラスターでのサブネット IP 枯渇問題が大幅に緩和されます。

Compute node の設定同期が cfn-hup から systemd タイマー + NFS に変わった点も地味にポイントです。CloudFormation API のスロットリング制限を気にする必要がなくなりました。一方で NFS 共有ストレージへの依存度が高まりました。

ソフトウェアスタックでは Slurm が 24 系から 25 系へ、CUDA が 12 系から 13 系へメジャーバージョンアップしています。既存のジョブスクリプトや CUDA アプリケーションの互換性は事前に確認してください。

Amazon Linux 2 と AWS Batch スケジューラは v3.15.0 が最後のサポートです。該当する環境をお使いの場合は早めの移行をおすすめします。

おわりに

ParallelCluster 2.x 代のどこかで AWS Batch のジョブスケジューラが追加でサポートされて、いつ使うんだと思っていたまま使う機会がなかったです。あれから 4 年ほど経過したと思うのですけど、未だに HPC を携わっていることに感慨深いものがあります。

この記事をシェアする

FacebookHatena blogX

関連記事