AWS ParallelCluster コンピュートノードの起動確率を改善する 2 つの方法を紹介
はじめに
AWS ParallelCluster でコンピュートノードの起動確率を高める方法を紹介します。
複数インスタンスタイプの活用か、マルチ AZ 構成で起動することで、少しでも安定した HPC 環境を目指します。
なぜコンピュートノードが起動できないときがあるのか
コンピュートノードの起動失敗は、ParallelCluster に限らず EC2 インスタンス全般の問題です。主な原因は次の 3 つです。
- 特定インスタンスタイプのキャパシティ不足
- 選択した AZ でのリソース枯渇
- スポットインスタンスの中断
AWS 側が用意しているコンピュートリソースは流石に無限ではないため、需要が供給を上回ると利用できなくなります。この問題に対して ParallelCluster では、以下の 2 つの方法で起動確率を向上できます。
複数インスタンスタイプを活用
1 つのキューに複数のインスタンスタイプを登録できます。1 つのインスタンスタイプでキャパシティ不足が発生しても、他のインスタンスタイプで代替できます。これにより処理を実行できる可能性が高まります。
どういうときに向いているのか
複数のインスタンスを跨いで計算処理をする様な密結合なワークロードに向いています。
画像引用: HPC ワークロードを加速する HPC インスタンスと構成パターン
動作の仕組み
オンデマンド起動を例に説明します。
- 一番安価なインスタンスタイプ(c6i.xlrage)でキャパシティ不足が発生
- 次に安価のインスタンスタイプ(m6i.xlarge)で起動を試す
起動戦略
複数インスタンスタイプを登録したとき、どのような優先順位で起動するかは以下の 3 つのオプションから指定できます。
- lowest-price:安い価格を優先して起動
- オンデマンド起動の場合はこの戦略のみ利用可
- price-capacity-optimized: 近々の中断確率が低いかつ、価格が安いスポットインスタンスを起動
- スポットインスタンス利用時の推奨戦略
- capacity-optimized:最適なスポットインスタンスを起動
- 今では使う場面が少ない戦略
詳しくは以下の記事を参照してください。
注意事項
複数インスタンスタイプ選択時は以下を確認してください。
- 同じ vCPU 数のインスタンスサイズであること
- Hyper-Threading 無効時は同じ物理コア数であること
- x86_64 と arm64 の混在は不可
- Intel なら Intel、AMD なら AMD で統一
- EFA を有効にしているなら EFA をサポートしているインスタンスタイプを選択すること
EFA のサポート状況については以下の記事を参考にしてください。
複数の AZ を活用する
複数の AZ にコンピュートノードを分散配置できます。
どういうときに向いているのか
インスタンス単体で処理が可能な疎結合なワークロードに向いています。
画像引用: HPC ワークロードを加速する HPC インスタンスと構成パターン
動作の仕組み
特定の AZ でキャパシティ不足が発生しても、他の AZ で起動を試行します。
注意事項
マルチ AZ 構成では以下を考慮する必要があります。
- AZ 間通信のレイテンシー
- クロス AZ 通信のコスト
- プレイスメントグループの利用不可
詳しくは以下の記事を参照してください。
HPC インスタンスの様なニッチなインスタンスタイプは提供されている AZ が限定されていることが多いです。その場合は当然ですがマルチ AZ 構成はとれません。
その他の選択肢
より確実な起動が必要な場合は、以下のサービスの利用を検討してください。どちらも ParallelCluster はサポートしています。
CPU 環境であれば、オンデマンドキャパシティ予約の利用。
GPU 環境なら Capacity Block for ML の利用。
まとめ
- 複数インスタンスタイプを指定し、起動の選択肢を増やす
- 特定の AZ に依存しないマルチ AZ 構成を検討する
密結合と、疎結合ワークロード
画像引用: HPC ワークロードを加速する HPC インスタンスと構成パターン
おわりに
絵に描いてわかりやすく説明するをテーマにしたのですが、なんだかんだ文章が長くなってしまいました。参考になれば幸いです。