AWS Batchに関しての講義を聞いている中で、BatchのMulti Node ModeではSpot Instanceが使えないという話があった。
Spot Instanceに関してはわかった気にはなっているけれど、使ったことがあるわけではないのでこの際おさらいをしておく
AWS Batch Multi Node Mode とは
Udemyの教材ではMulti Node Modeと書かれていたけれど、AWS公式には Multi-node parallel jobsとなっていた
https://docs.aws.amazon.com/batch/latest/userguide/multi-node-parallel-jobs.html
ジョブキューにジョブが送信されるとメインノードが起動。
その後、チャイルドノードが起動してそれらが並列処理を行っていくわけだが、これらのインスタンスに対してはSpot Instanceを意図するUNMANGEDを指定することができないという話。
Spot Instance のおさらい
Spot Instanceに関しては少し前のBlackBeltの資料がわかりやすかった。
Spot Instanceは、AWSでの空いてしまっているキャパシティを利用して、比較的安価にインスタンスを利用することができるというもの。
気をつけなければいけないのは、空きキャパシティが無くなったり設定した上限価格以上にスポット料金価格が上がると中断されてしまうという点。
そのため、Spot Instance利用に向いている処理というのは、中断されてしまっても構わないという内容に限る形となる。
ある特定の時刻などタイミングが指定されている処理には向いておらず、大規模な処理で時間がかかっても安く済ませたい場合の利用に向いているということだった。
BackBeltの資料では親和性の高いワークロードとしてコンテナ、データ分析やCI/CD。機械学習やHPCなどを上げている
まとめ
つまり、Batch の Multi-node parallel jobs ではmain nodeがchild nodeを並列処理させるために制御するという観点から、キャパシティ不足などの理由で強制的に落とされると並列処理が崩れてしまう懸念があるため選択できないようにしているということなんだろう。
余談
AWS Batchを見ていると、Multi-node parallel jobs以外に、Multi Containerができるそうだ
AWS Batch がマルチコンテナジョブの提供を開始
こちらは、あるジョブを複数のコンテナで走らせることができるとのこと。
ちょっとよくわからなかったのですが、
システム中の本番システムのマルチコンテナアーキテクチャに合わせることができます。SUT とシミュレーション環境用に別々のコンテナを実行したい場合でも、補助的なサイドカーを追加する必要がある場合でも、すべてのワークロード要素をモノリシックコンテナにまとめて、コードを変更するたびに再構築する必要はもうありません
バッチ処理は、たいてい何かしらの前提となるシステムがあって、その処理をバッチ的に行うことが多いと考えている。
で、バッチ処理を走らせる際に単一のコンテナで実行させようとするには、元々のシステムを再構築する必要があり、その手間を省くためにシステム全体を立ち上げたうえでバッチを走らせてしまえばよいということなのだろうか。
このマルチコンテナジョブが対象としているジョブタイプとしては
AWS Batch は、1 つのノードの通常ジョブ、配列ジョブ、マルチノード並列 (MNP) ジョブを含む、すべてのジョブタイプでの複数のコンテナの実行をサポートしています。
となっているので、Multi-node parallel jobsとは直接的な関係は内容だった
参照:https://aws.amazon.com/jp/batch/faqs/