AWS ParallelCluster で構築する HPC 環境 - Slurm クラスタの自動構築とスケーリング
HPC クラスタを CloudFormation ベースで自動構築し、Slurm スケジューラでジョブを管理する。スポットインスタンスによるコスト最適化も紹介します。
ParallelCluster の概要
ParallelCluster は AWS が提供するオープンソースの HPC クラスター管理ツールです。YAML 設定ファイルでクラスターの構成 (インスタンスタイプ、ノード数、ストレージ、ネットワーク) を定義し、pcluster create-cluster コマンドで CloudFormation スタックとして自動構築します。Slurm ジョブスケジューラーが標準で構成され、既存の Slurm のジョブスクリプトを使えます。計算流体力学 (CFD)、分子動力学、ゲノム解析、気象シミュレーション、金融リスク計算などの並列計算ワークロードを実行できます。バージョン 3 系では Multi-Queue モードにより、1 つのクラスターで複数のキューを定義でき、キューごとに異なるインスタンスタイプやストレージ構成を割り当てることが可能です。設定の変更は pcluster update-cluster で既存のクラスターに適用でき、OS のように変えると更新できない設定もあります。
自動スケーリングとコスト最適化
ParallelCluster の自動スケーリングは Slurm のジョブキューと連動します。ジョブが投入されるとコンピュートノードが自動的に起動し、ジョブ完了後にアイドル状態が一定時間続くとノードが自動的に終了します (デフォルトのアイドルタイマーは 10 分)。ジョブがない時間帯はコンピュートノードがゼロになり、コンピュートノードの料金はかかりません。スポットインスタンスを使うと、HPC ワークロードのコストを抑えられます。複数のインスタンスタイプを Allocation Strategy: capacity-optimized で指定すると、スポットの中断に備えた構成にできます。チェックポイント対応のアプリケーションでは、スポットの中断時にジョブを自動的に再キューイングする設定が可能です。ヘッドノードはオンデマンドインスタンスで動かし、コンピュートノードだけをスポットにする構成をとれます。ScaledownIdletime パラメーターでアイドルタイマーを調整し、短いジョブが頻繁に投入される環境では値を大きくしてノードの起動 / 終了オーバーヘッドを削減できます。
EFA と共有ストレージ
EFA (Elastic Fabric Adapter) は HPC ワークロード向けの高速ネットワークインターフェースで、ノード間通信のレイテンシを抑えます。MPI (Message Passing Interface) ベースの並列計算で、ノード間のデータ交換がボトルネックになるワークロードに有効です。ParallelCluster の設定で EFA を有効にすると、コンピュートノードに EFA が構成されます。EFA を使うノードはプレイスメントグループに置く構成をとり、ParallelCluster は Placement セクションの設定でクラスタープレイスメントグループを作成します。共有ストレージは FSx for Lustre、EFS、EBS の中から選択できます。FSx for Lustre は大規模データセットの並列読み取りに使え、S3 との統合で S3 上のデータを Lustre ファイルシステムに自動的にインポートし、計算結果を S3 にエクスポートできます。EFS は複数のクラスター間でデータを共有する場合やノード数の変動が大きい環境で有効ですが、レイテンシは FSx for Lustre より高くなります。
設計のベストプラクティスと落とし穴
ParallelCluster の本番運用で検討する項目を整理します。数百ノード規模のクラスターでは Slurm コントローラーのメモリ消費が増えるため、ヘッドノードのサイズをノード数に合わせて選びます。ヘッドノードが停止するとクラスター全体が使用不能になるため、EBS スナップショットによる定期バックアップを設定してください。ネットワーク設計では、コンピュートノードをプライベートサブネットに配置し、S3 VPC エンドポイント (ゲートウェイ型) を使うと、NAT ゲートウェイのデータ転送料金を避けられます。カスタム AMI を使用する場合は、ParallelCluster が要求するパッケージ (Slurm、Munge、supervisord) を含む公式 AMI をベースにカスタマイズし、pcluster build-image コマンドで構築します。OS は Amazon Linux 2023、Ubuntu 22.04 / 24.04、RHEL 8 / 9、Rocky Linux 8 / 9 から選べます。
AWS Batch との比較と使い分け
AWS には HPC/バッチ処理向けに ParallelCluster と AWS Batch の 2 つのサービスがあり、ワークロードの特性で使い分けます。ParallelCluster は Slurm をスケジューラーとして使用するため、オンプレミスの HPC 環境で Slurm を利用していた組織がジョブスクリプトを変えずにクラウドへ移行する場合に使えます。EFA による低レイテンシのノード間通信を使う密結合並列計算 (CFD、分子動力学など) では、ParallelCluster を使う方法があります。一方、AWS Batch はフルマネージドサービスで、コンテナベースのジョブ定義でワークロードをパッケージングします。独立したタスクを大量に並列実行するハイスループット計算 (ゲノムの配列アライメント、画像処理パイプライン) には AWS Batch を使う構成をとります。ParallelCluster ではクラスター構成を細かく指定できるため、特定のインスタンス配置やストレージ構成を要する研究計算に使えます。
まとめ
ParallelCluster は Slurm ベースの HPC クラスターを AWS 上に自動構築するツールです。自動スケーリングでジョブに応じたリソース管理を実現し、スポットインスタンスでコストを削減し、EFA で高速ノード間通信を提供します。オンプレミスの HPC クラスターからの移行や、一時的に増える計算需要への対応に使います。Multi-Queue モードで異なるワークロードを 1 クラスターに集約し、FSx for Lustre と S3 の連携で大規模データの入出力を効率化できます。
参考資料 (AWS 公式)
本ページの一次情報は AWS 公式サイトと公式ドキュメントです。最新の仕様と料金は次の公式ページで確認できます。
本ページと公式ドキュメントの記述が食い違う場合は、公式ドキュメントを正としてください。