AWS PCS に AWS 公式の AMI が登場し、自前ビルド不要で本番環境でも利用できるようになりました

AWS PCS に AWS 公式の AMI が登場し、自前ビルド不要で本番環境でも利用できるようになりました

2026.06.10

はじめに

AWS Parallel Computing Service(AWS PCS)向けに、本番環境用でも利用可能な AWS 公式の AMI がやっと登場しました。 その名もPCS-ready Deep Learning AMI(DLAMI) です。

https://aws.amazon.com/jp/about-aws/whats-new/2026/06/aws-pcs-deep-learning-ami/

これまで AWS PCS が公式に提供する AMI は、本番利用は非推奨のサンプル AMI(Amazon Linux 2023 + Slurm のみ)だけでした。本番で GPU ワークロードを動かすには、PCS Agent、Slurm に加えて NVIDIA ドライバ、CUDA、EFA ドライバも要ります。これらを組み込んだカスタム AMI を自前でビルドする必要がありました。ようやく AWS 公式からサンプルではない AMI が提供され、自前の AMI ビルドから解放されたという大変めでたいアップデートです。

確認結果

最小構成(ログインノード×1 + GPU コンピュートノード×1)の PCS クラスターを起動し、ログインノードから srun で GPU コンピュートノードにジョブを投入できました。DLAMI にプリインストールされた NVIDIA ドライバ、CUDA、Slurm を最低限確認しました。

PCS-ready DLAMI とは

PCS-ready DLAMI は、AWS が提供する本番利用可能な AMI です。 Deep Learning Base GPU AMI(Ubuntu 24.04)をベースにしています。PCS で GPU ワークロードを動かすのに必要なコンポーネントを、プリインストール済みの状態で提供されています。

含まれる主なコンポーネントは次のとおりです。

コンポーネント バージョン(ami-0178c9707ea4aeb0d)
OS(Ubuntu 24.04) 24.04
NVIDIA GPU ドライバ 595.71.05
CUDA Toolkit 13.2
PCS Agent 1.4.0-1
Slurm for AWS PCS 24.11 / 25.05 / 25.11
EFS ユーティリティ 2.4.2

Slurm は 3 バージョンがバンドルされ、クラスターの設定に合わせて起動時に自動で選ばれます。各バージョンは AMI の説明(Description)欄でも確認できます。

一方、PyTorch、TensorFlow、JAX などの学習フレームワークは含まれません。これら必要なアプリケーションは従来どおり別途追加することになります。

AWS PCS の歴史を語る

従来の AWS PCS には、本番で利用してよい公式 AMI がありませんでした。提供されていたのはサンプル AMI(Amazon Linux 2023 + Slurm のみ)で、公式ドキュメントでも本番利用は非推奨と明記されています。

Sample AMIs are for demonstration purposes and are not recommended for production workloads.

出典: Using sample Amazon Machine Images (AMIs) with AWS PCS

本番で動かすには、利用者が自分でカスタム AMI をビルドして検証する必要がありました。PCS-ready DLAMI はこの位置づけを変えるもので、公式ドキュメントは「カスタム AMI のビルドと検証の代わりに、数分でクラスターをデプロイできる」と説明しています。「なぜ、最初からそうしなかったのか」を説明して欲しいお気持ちです。

It provides a production-ready foundation so you can deploy clusters in minutes instead of building and validating custom AMIs.

出典: Using PCS-ready DLAMI with AWS PCS

追加費用はなく、EC2 インスタンスの料金のみで使えます。x86_64 と arm64 の両アーキテクチャに対応しています。

AMI ID の取得方法

AMI ID は SSM のパブリックパラメータから取得できます。

# x86_64(今回使用)
aws ssm get-parameter --region ap-northeast-1 \
  --name /aws/service/pcs/ami/dlami-base-ubuntu2404/x86_64/latest/ami-id \
  --query "Parameter.Value" --output text
実行結果
ami-0178c9707ea4aeb0d

検証時点(2026 年 6 月)では ami-0178c9707ea4aeb0d が解決されました。DLAMI の更新で AMI ID は変わります。SSM パラメータパスは DLAMI が更新されても変わりません。

コンソールから作成する場合は、コンピュートノードグループ作成画面の AMI 選択で PCS-ready AMIs を選ぶと、DLAMI が候補に出てきます。

パラレルコンピューティングサービス___ap-northeast-1-3.png

思いの外、候補が多かった。

パラレルコンピューティングサービス___ap-northeast-1-4.png

今回の検証環境

最小構成として次のリソースを作ります。

リソース 設定
PCS クラスター Slurm 25.11、サイズ SMALL
ログインノードグループ c6i.large、min=1/max=1(常時 1 台起動)
コンピュートノードグループ g4dn.xlarge ×1、min=1/max=1(常時 1 台起動)

PCS には専用のログインノード用リソースはありません。ログインノードもコンピュートノードグループとして作り、キューに関連付けないことでジョブ投入専用ノードにします。キューに関連付けると Slurm がそのノードにもジョブをスケジュールするため、キューへは GPU 用のコンピュートノードグループのみを関連付けます

GPU コンピュートノードグループは 1a/1c/1d の 3 AZ のプライベートサブネットに配置しました。GPU インスタンスの確保が最近は難しく、特定 AZ のみ限定するより AZ を広げておくことで起動できる確率が上がります(後述)。

ログインノードと GPU コンピュートノードには同じ DLAMI を使います。DLAMI は GPU ドライバを含みますが、非 GPU インスタンス(c6i.large)でも問題なく起動します。

構築したクラスターを確認する

クラスター構築手順は割愛し、起動したクラスターを AWS CLI で確認していきます。

パラレルコンピューティングサービス___ap-northeast-1_🔊.png

クラスターとノードグループの ID を確認する

以降のコマンドで使う ID を取得します。list-compute-node-groups--cluster-identifier には、list-clusters で得たクラスター ID を渡します。ここでは pcs_kxgkm26j3x です。

aws pcs list-clusters \
  --region ap-northeast-1 \
  --query "clusters[].{name:name,id:id,status:status}" \
  --output table

aws pcs list-compute-node-groups \
  --region ap-northeast-1 \
  --cluster-identifier pcs_kxgkm26j3x \
  --query "computeNodeGroups[].{name:name,id:id,status:status}" \
  --output table
実行結果
----------------------------------------------------------------------
|                            ListClusters                            |
+----------------------------+------------------+--------------------+
|  pcs-dlami-verify-cluster  |  pcs_kxgkm26j3x  |  ACTIVE            |
+----------------------------+------------------+--------------------+
------------------------------------------------------------
|                  ListComputeNodeGroups                   |
+-------------------+------------------+-------------------+
|  pcs-dlami-login  |  pcs_vcwpq8eg8c  |  ACTIVE           |
|  pcs-dlami-gpu    |  pcs_kocyu8brjy  |  ACTIVE           |
+-------------------+------------------+-------------------+

EC2 インスタンスの起動を確認する

GPU ノードは 3 つのプライベートサブネットのうち、空きのあった ap-northeast-1c で起動しました。

aws ec2 describe-instances \
  --region ap-northeast-1 \
  --filters \
    "Name=tag:aws:pcs:compute-node-group-id,Values=pcs_kocyu8brjy" \
    "Name=instance-state-name,Values=running" \
  --query "Reservations[].Instances[].[InstanceId,InstanceType,State.Name,Placement.AvailabilityZone]" \
  --output table
実行結果
---------------------------------------------------------------------------
|                            DescribeInstances                            |
+----------------------+--------------+----------+-------------------------+
|  i-0bf69f05b8587d258 |  g4dn.xlarge |  running |  ap-northeast-1c        |
+----------------------+--------------+----------+-------------------------+

AMI も今回の DLAMI が使われています。

インスタンス___EC2___ap-northeast-1_🔊-2.png

ログインノードに接続して Slurm の状態を確認する

SSM Session Manager で接続する

Session Manager でログインノードに接続します。

aws ssm start-session \
  --region ap-northeast-1 \
  --target i-037aa5a9675172213

接続後、DLAMI は Ubuntu 24.04 ベースのため、作業ユーザーは ubuntu です。

sudo su - ubuntu

Slurm のコマンド(sinfo など)は /opt/aws/pcs/scheduler/slurm-25.11/bin にあります。sudo su - ubuntu でログインシェルとして入ると、/etc/profile.d/slurm.sh によってこのパスが PATH に追加されます。

Slurm の状態を確認する

sinfo でパーティションとノードの状態を確認します。

sinfo
実行結果
PARTITION           AVAIL  TIMELIMIT  NODES  STATE NODELIST
pcs-dlami-gpu-queue    up   infinite      1   idle pcs-dlami-gpu-1

パーティション pcs-dlami-gpu-queue が UP で、GPU ノード pcs-dlami-gpu-1 が表示されました。Slurm のバージョンも確認します。

sinfo --version
実行結果
slurm 25.11.2

scontrol show node でノードの詳細を見ると、Gres=gpu:T4:1 から、Tesla T4 が 1 基の GPU リソースとして認識されていることがわかります。

scontrol show node pcs-dlami-gpu-1
実行結果(抜粋)
NodeName=pcs-dlami-gpu-1 ...
   AvailableFeatures=pcs-dlami-gpu,gpu
   Gres=gpu:T4:1
   State=IDLE+CLOUD

ジョブを実行して GPUインスタンス の中身を確認する

nvidia-smi をジョブとして実行する

ログインノードから、GPU コンピュートノード上で nvidia-smi を実行します。パーティション名はキュー名と同じ pcs-dlami-gpu-queue です。

srun --partition pcs-dlami-gpu-queue nvidia-smi

NVIDIA Tesla T4(g4dn.xlarge に搭載)が 1 基認識され、Driver 595.71.05 と CUDA 13.2 が表示されました。

実行結果
Thu Jun  4 04:10:32 2026
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 595.71.05              Driver Version: 595.71.05      CUDA Version: 13.2      |
+-----------------------------------------+------------------------+----------------------+
|   0  Tesla T4                       On  |   00000000:00:1E.0 Off |                    0 |
| N/A   35C    P0             33W /   70W |       3MiB /  15360MiB |      0%      Default |
+-----------------------------------------+------------------------+----------------------+

GPU の一覧と CUDA コンパイラ(nvcc)のバージョンも確認します。

srun --partition pcs-dlami-gpu-queue nvidia-smi -L
srun --partition pcs-dlami-gpu-queue bash -lc "nvcc --version"

DLAMI にプリインストールされた NVIDIA ドライバと CUDA Toolkit が、追加の構成なしでそのまま使えることを確認できました。

実行結果
GPU 0: Tesla T4 (UUID: GPU-cc7ca819-...)

nvcc: NVIDIA (R) Cuda compiler driver
Cuda compilation tools, release 13.2, V13.2.51

GPU インスタンスのキャパシティ確保問題について

今回 g4dn.xlarge を選んだ理由があります。当初は g5.xlarge(NVIDIA A10G)で進めていました。ですが、ap-northeast-1 では InsufficientInstanceCapacity が続き、GPU ノードを起動できませんでした。人気の GPU インスタンスは、AZ や時間帯によって空きが無いこともあります。対象のインスタンスタイプがどの AZ で提供されているかまず確認しておきましょう。

aws ec2 describe-instance-type-offerings \
  --region ap-northeast-1 \
  --location-type availability-zone \
  --filters "Name=instance-type,Values=g5.xlarge,g4dn.xlarge" \
  --query "sort_by(InstanceTypeOfferings, &InstanceType)[].[InstanceType,Location]" \
  --output text
実行結果
g4dn.xlarge     ap-northeast-1a
g4dn.xlarge     ap-northeast-1c
g4dn.xlarge     ap-northeast-1d
g5.xlarge       ap-northeast-1a
g5.xlarge       ap-northeast-1c

ap-northeast-1 では g5.xlarge が 1a・1c のみで、g4dn.xlarge は 3 AZ すべてで提供されていました。提供 AZ があっても空きが少ないと起動できないため、とれる対策は次の 2 つです。

  • コンピュートノードグループのサブネットを複数 AZ に広げ起動確率を上げる
  • 容量を確保しやすそうな古めのインスタンスタイプ(今回は g4dn.xlarge)を選ぶ

今回は両方を採り、GPU ノードグループを 1a/1c/1d の 3 サブネットに広げたうえで g4dn.xlarge を使いました。結果として ap-northeast-1c で起動しています。

まとめ

今回試したのは、PCS-ready DLAMI を使った最小構成(ログインノード×1 + GPU コンピュートノード×1)の起動です。AMI ID に DLAMI を指定するだけで、NVIDIA ドライバ、CUDA、Slurm、PCS Agent 入りのノードが起動しました。自前でセットアップする手間がまるごと省けるので、ここが一番ありがたいところでした。

おわりに

AWS PCS リリースから、1 年 10 か月を経てやっと AWS 公式から本番環境で使ってよい AMI が提供されました。これで敷居はだいぶ下がったのではないでしょうか、よかったです。

https://dev.classmethod.jp/articles/announcing-aws-parallel-computing-service/

参考

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事