AWS ParallelCluster 3.2.0 のアップデート紹介

AWS ParallelCluster 3.2.0 がリリースされました。新機能の追加、改善点を紹介します。
2022.08.01

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

2022年7月28日に AWS ParallelCluster 3.2.0 がリリースされました。3.1 のリリースから約半年ぶりのマイナーアップデートです。

さっそくアップデート内容をみていきましょう。

アップデート情報

個人的な注目ポイントと、アップデートの目玉(っぽいもの)をピックアップしました。アップデート前はどうだったの?についてはあまり触れられていませんでしたので私の知っている範囲で補足しました。

AWS ParallelCluster 3.2: file system enhancements and other top requested features

アップデート詳細はリリースノートをご確認ください。

Release AWS ParallelCluster v3.2.0 · aws/aws-parallelcluster

ピックアップ

  • Slurm がメモリサイズ指定のジョブスケジューリングをサポート
    • 必要なメモリサイズを指定するとメモリサイズ分のコンピュートノードを起動できるようになった
    • 従来は CPU のコア数指定のみサポートしていました
  • 1つのクラスターに複数のファイルシステムマウントをサポート
    • 最大20個の FSx と、最大20個の EFS をマウントできるようになりました
    • 従来は各ファイルシステムタイプにつき1個まででした
  • コンピュートノードがキャパシテイ不足で起動できないときの動作改善
    • キャパシティ不足で必要数のコンピュートノードを確保できないときは自動的にコンピュートノードを停止するようになった
    • デフォルト待機時間は10分
    • 従来はキャパシティ不足が解消されるまで確保できた分のコンピュートノードは起動したままでした
  • 既存の FSx for NetApp ONTAP, FSx for OpenZFS, FSx for Lustre Persistent_2 のマウントをサポート
  • Slurm からコンピュートノードのリブートをサポート
  • コンピュートノードを手動で停止・削除したときの Slurm の状態管理を改善
  • デフォルトの EBS Volume Type が gp2 から gp3 に変更
    • 従来は明示的に gp3 を指定すればルートボリューム、追加ディスクを gp3 にすることはできました
  • ParallelCluster で作成されたすべてのリソースにparallelcluster:cluster-nameタグを付与
    • ヘッドノード(EC2)以外にも利用する上では直接目にしないリソース(DynamoDBなど)にタグが付くのは管理上ありがたい

さらに何点かピックアップして詳細を追ってみましょう。

メモリサイズ指定のジョブスケジューリング

ジョブをサブミット時にメモリサイズ指定したい需要は大きそうですので、今回の目玉アップデートではないでしょうか。--mem-per-gpuオプションが用意されているため、GPU のメモリ数も指定できるようです。

For some workloads, memory capacity is more critical than CPU core-count – both from a functional and performance perspective.

詳細は以下の記事を参考ください。

こちらの新機能はデフォルト無効ですので、クラスター作成・更新時に Scheduling セクションのEnableMemoryBasedSchedulingtrueにすると有効化されます。メモリサイズ指定のスケジューリングが利用可能になります。

Scheduling:
   Scheduler: slurm
   SlurmSettings:
      EnableMemoryBasedScheduling: true # Default is: false

Scheduling section - AWS ParallelCluster

実行例: 1ノードあたり4タスク、1タスクあたり 1CPU を要求し、1 CPU あたり 4GB メモリを要求するジョブのサブミット。つまり、4CPUと、16GBメモリの空きのあるコンピュートノードを要求することになります。

$ sbatch -N1-n4-c1--mem-per-cpu=4GB job.sh

注意事項はEnableMemoryBasedScheduling: true(有効化)している場合は、ジョブのサブミット時--memオプションを指定することが推奨となっています。--mem, --mem-per-cpu, --mem-per-gpuオプションが未指定のジョブがあるとメモリ全部を割当てしまうためです。

When memory-based scheduling is enabled, we recommend that users include a --mem specification when submitting a job.

Slurm memory-based scheduling - AWS ParallelCluster

設定変更可能なアップデートポリシーですのであとから有効化できます。使う場面が来てから有効でもよいのではないかと思います。

ファイルシステムのマウントサポートが充実

コンピュートノードが利用できる共有ストレージとしては、ヘッドノードのEBS、EFS、FSx for Lustre に加え、FSx for NetApp ONTAP と、FSx for OpenZFS が追加されました。それと、各ファイルシステムタイプにつき1つまでしかマウントできなかったのですが今回のアップデートで解消されました。

具体的にはEFSを2つマウントしたくてもできなかったのですが、ParallelCluster 3.2.0 からは最大20個のEFSをマウントできるようになりました。FSx シリーズも同様に最大20個までマウントできます。ストレージ選択の幅が広がる素晴らしいアップデートです。

詳細は以下の記事を参考ください。

2022/8/15追記
EFS の複数個マウントを試しました。

コンピュートノードがキャパシテイ不足で起動できないときの動作改善

以下の記事の現象に対して必要数を確保できなくて待ち続けるのではなくタイムアウト設定が追加されたものと思われます。コンピュートノードに高価な GPU インスタンスを使っていると計算もしていないのに確保だけして長時間放置されるとムダなコストがつらかったので個人的には嬉しいアップデートです。

こちらは ParallelCluster のクラスターのコンフィグファイルで設定する項目ではなく Slurm 側の設定でした。ヘッドノードの以下のファイルでキャパシティ不足時のタイムアウト設定ができます。デフォルトで10分指定(insufficient_capacity_timeout=600)が入っているため通常は変更しなくても大丈夫そうですね。

/etc/parallelcluster/slurm_plugin/parallelcluster_clustermgtd.conf

Slurm cluster fast insufficient capacity fail-over - AWS ParallelCluster

AWS ParallelCluster のサポートポリシー

v3.2代一発目のリリースですので、新たなサポート期限が設けられました。

v3.2.0のリリース日(2022年7月28日)を起点に18か月先の2024年1月28日までサポートされます。

おわりに

以上、AWS ParallelCluster 3.2 のアップデートの概要でした。今後は追加された機能を実際のクラスター環境で検証してご紹介していければと思います。