AWS ParallelCluster v2.11.2 がリリースされたのでHPCクラスター環境構築して動作確認してみた

AWS ParallelCluster v2.11.2がリリースされました。HPCクラスターを新規構築し動作確認しました。
2021.08.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWS ParallelCluster v2.11.2がリリースされました。v2.11.1からのマイクロアップデートです。目立った機能追加はありませんでした。

Release AWS ParallelCluster v2.11.2 · aws/aws-parallelcluster

以下、DeepL翻訳による変更点の情報です。

CHANGES

  • EFAパッケージがプリインストールされたカスタムAMIを使用する場合、GPUDirect RDMAが有効な場合は、ノードのブートストラップ時にアクションが行われません。元のEFAパッケージの配置は、createamiプロセス中のように保存されます。
  • EFAインストーラをバージョン1.13.0にアップグレードします。
  • rdma-coreをv35.0にアップデートします。
  • libfabricをv1.13.0amzn1.0に更新しました。

BUG FIXES

  • nvidia-fabricmanagerパッケージのバージョンを、インストールされているNVIDIAドライバにロックして、アップデートやミスマッチを防ぎます。
  • Slurm: パワーアップしたノードが、クラスタの停止・起動後に正しくリセットされない問題を修正しました。

新バージョンのHPCクラスター構築

v2.11.2のHPCクラスターを作成し、同v2.11.代のコンフィグや、IAMロールと互換性があるか動作確認します。

管理コマンドのアップデート

以下のリンクを参考にpclusterコマンドのバージョンを最新化します。

$ pcluster version
2.11.2

IAMロール更新確認

ParallelClusterUserPolicy using Slurmで紹介されているIAMポリシーがpclusterコマンドをインストールしたEC2インスタンスに必要です。

ドキュメントの履歴を確認すると今回のマイクロリリースに伴った更新はありませんでした。

従ってAWS ParallelCluster 2.11.0用に作成したIAMポリシーのままで問題ありません。以下のリンクで2.11.0対応のIAMロール・IAMポリシーを作成方法を紹介しています。

コンフィグ作成

以下のコンフィグを作成しました。

ユーザ固有の設定値の箇所をハイライトしてあります。参考にされるときはご自身の環境の値に変更してお使いください。

blogSampleCluster2112

# v2.11.2
[aws]
aws_region_name = us-east-1

[aliases]
ssh = ssh {CFN_USER}@{MASTER_IP} {ARGS}

[global]
cluster_template = default
update_check = true
sanity_check = true

[cluster default]
key_name = sandbox-key-useast1
scheduler = slurm
# --- HeadNode Setting ---
base_os = ubuntu2004
master_instance_type = t3a.micro
master_root_volume_size = 35
# --- Netowrk Setting ---
vpc_settings = default
# --- Compute Setting ---
queue_settings = spot1
# --- PostInstall Setting ---
s3_read_resource = arn:aws:s3:::blog-parallelcluster-postinstall*
post_install = s3://blog-parallelcluster-postinstall/postinstall.sh

# --- IAM Policy---
additional_iam_policies = arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

# --- Tag ---
tags = { "Name" : "Blog-Sample-Cluster-v2112" }

[vpc default]
vpc_id = vpc-07edfc27679c9ca80
master_subnet_id = subnet-0ab2754446b2f87a4
compute_subnet_id = subnet-0ab2754446b2f87a4
use_public_ips = true

[queue spot1]
compute_resource_settings = spot1_resource
placement_group = DYNAMIC
compute_type = spot

[compute_resource spot1_resource]
instance_type = c5a.large
max_count = 16

カスタムブートストラップ設定

ヘッドノード、コンピュートノードの初期設定スクリプトを作成します。

Postinstallの動作確認用にPython3.8をインストールするスクリプトを作成します。

postinstall.sh

#!/usr/bin/env bash

apt-get update -y
apt-get install python3.8 -y

コンフィグで指定した所定のS3バケットにスクリプトをアップロードします。

$ aws s3 cp ./postinstall.sh s3://blog-parallelcluster-postinstall
upload: ./postinstall.sh to s3://blog-parallelcluster-postinstall/postinstall.sh

HPCクラスター作成

pcluster createコマンドで先ほどのコンフィグからHPCクラスターを作成しました。

$ pcluster create -c blogSampleCluster2112 blogSampleCluster2112
Beginning cluster creation for cluster: blogSampleCluster2112
Creating stack named: parallelcluster-blogSampleCluster2112
Status: parallelcluster-blogSampleCluster2112 - CREATE_COMPLETE
MasterPublicIP: 54.87.107.193
ClusterUser: ubuntu
MasterPrivateIP: 10.1.11.60

ヘッドノードのEC2インスタンスが起動しています。

HPCクラスター環境

ヘッドノードにログインしました。Python3.8がインストールされていることが確認できました。Postinstallの実行は正常に動作しています。

ubuntu@ip-10-1-11-60:~$ python3 -V
Python 3.8.10

Postinstall実行時のログを確認すると最初からPython3.8.10がインストールされていました。Postinstallが動作していることは確認できたのでヨシとします。

/var/log/cfn-init.log

2021-08-27 01:15:46,635 [DEBUG] Running command runpostinstall
2021-08-27 01:15:46,635 [DEBUG] No test for command runpostinstall
2021-08-27 01:16:07,428 [INFO] Command runpostinstall succeeded
...snip...
python3.8 is already the newest version (3.8.10-0ubuntu1~20.04).
python3.8 set to manually installed.

コンピュートノード

コンピュートノードを起動させるためにテストジョブを作成します。

test.sh

#! /bin/bash
hostname
python3 -V

テストジョブを投げました。

$ sbatcn -n1 test.sh

コンピュートノード起動中です。完全に起動しジョブを処理してくれるまで少し待ちます。

ジョブの実行結果を確認します。実行結果はデフォルトだとヘッドノードのホームディレクトリにファイルが保存されます。

$ ls -l
total 8
-rw-rw-r-- 1 ubuntu ubuntu 34 Aug 27 01:30 slurm-2.out
-rw-rw-r-- 1 ubuntu ubuntu 33 Aug 27 01:27 test.sh

実行結果です。コンピュートノードのホストネームと、Python3のバージョンを返しています。

slurm-2.out

spot1-dy-c5alarge-1
Python 3.8.10

コンピュートノードはジョブを処理した後、しばらくすると停止(削除)されていきます。

コンピュートノードの動作も問題ありませんでした。

動作確認結果

AWS ParallelCluster v2.11.2のHPCクラスター環境でコンピュートノードの起動、Postainstall.shの実行は従来通りのまま問題ありませんでした。 v2.11.0で作成したIAMロールから変更はなく、pclusterコマンドのバージョンアップで新バージョンのHPCクラスターを作成可能でした。

おわりに

マイクロリリースなので機能追加はありませんでしたが、新規にHPCクラスターを作成する場合は積極的に新しいバージョンでお試し頂ければと思います。ちなみにv2.11.0のマイナーリリースでUbuntu20.04が使えるようになったり、個人的には嬉しい機能追加がありました。そのあたりをまとめたブログがないのでv2.12がリリースされる前にまとめたいと思っています。