Azure CycleCloud のスケジューラの統合と自動スケーリングについて説明する

完了

クラウドの機敏性を使用すると、企業はコンピューティング リソースに関連する運用コストを最小限に抑えながら、Azure のハイパースケール機能を最大限に活用することができます。 リソースの量を使用パターンに応じて自動的にスケーリングする機能は、その機敏性の中核となるコンポーネントです。 Azure CycleCloud と HPC のコンテキストでは、これによって、クラスター ジョブのリソース要求とクラスターの計算ノード数の間の密接な相関関係が実装されます。

一般に、クラスター ノードのスケーリングのオーケストレーションは、スケジューラの役割です。 スケジューラは、コンピューティング リソースを提供するプラットフォームに対して要求を伝達できる必要があります。 Azure CycleCloud は、この機能を実装するのに役立ちます。 このユニットでは、この実装の原則について学習します。

クラスターの自動スケーリングにおける Azure CycleCloud の役割とは

Azure CycleCloud によって Azure でのスケジューラのデプロイが容易になり、これにより、Azure リソースで構成されたクラスター上で実行されるジョブの分配と管理が行われます。 Azure CycleCloud は、スケジューラとしては機能しません。 代わりに、スケジューラと基になるプラットフォームの間の仲介役として機能します。 また、Azure CycleCloud では、REST API ベースのプログラミング インターフェイスと Python ベースのクライアント ライブラリが提供され、対応するスケジューラ用の自動スケーリング機能の開発も簡単になります。

Azure CycleCloud では、管理対象クラスターの自動スケーリングの動作を、クラスターのジョブ キューの長さと関連付けることができます。 テンプレート パラメーターを定義することで、この動作をさらにカスタマイズできます。たとえば、アイドル状態のノードを終了するまでの時間の長さや、自動停止をチェックする頻度などを制御できます。

すべての組み込みテンプレートで、自動スケーリング設定は Azure CycleCloud グラフィカル インターフェイスで直接公開されています。 いずれの場合にも、設定には、自動スケーリングの範囲の下限と上限を CPU コア数の形式で指定するオプションが含まれています。 上限は、予期しない料金が発生する可能性を最小限に抑えるのに役立ちます。 このリスクをさらに軽減するには、予算アラートを設定します。

下限のしきい値を 0 に設定した場合、クラスターを作成すると、スケジューラ ヘッド ノードのみがプロビジョニングされます。 ただし、キューに登録されたジョブがスケジューラによって検出されると、対応するワークロードを実行するために必要な計算ノード (定義した上限まで) のプロビジョニングが開始されます。 個々のタスクが互いに独立して実行される、疎結合または並列ジョブをサポートするために、最初のノードが使用可能になるとすぐにジョブの実行が開始されます。 メッセージ パッシング インターフェイス (MPI) 機能を使用するジョブなど、密結合のジョブの場合は、ノード間の依存関係の範囲に応じて、待機時間はより長くなります。 許容されたアイドル時間を超える時間にわたってジョブ キューが空になると、計算ノードの自動停止が開始され、クラスターは再びスケジューラ ヘッド ノードのみで構成されるようになります。

Note

このユニットで説明されている基になる概念は、スケジューラ間で共通です。 ただし、その実装の詳細はスケジューラによって異なります。 各実装の詳細については、個々のスケジューラに関するドキュメントを参照してください。

スケジューラを Azure CycleCloud の自動スケーリングと統合する方法

Azure CycleCloud の自動スケーリングとの統合を実装する 2 つの主要なコンポーネントは、Azure CycleCloud の Autoscale Library と Demand Calculator です。

Azure CycleCloud のアーキテクチャの概要を示す図。

Azure CycleCloud Autoscale Library は、オープンソースの、GitHub でホストされるプロジェクトです。これにより、Python ヘルパーが、Azure にデプロイされるすべてのスケジューラ用の自動スケーリングの開発を簡略化できます。 ヘルパーは、Azure CycleCloud REST API を使用して、Azure リソースのプロビジョニングをオーケストレーションします。 プロジェクトでは Python 3 が使用され、Python の依存関係が多数あります。 しかし、そのコア機能は、Azure CycleCloud の Python クライアント ライブラリに依存します。 自動スケーリングは、ジョブ キューを監視するスケジューラ ヘッド ノードと統合されます。 自動スケーリングでは、Azure CycleCloud アプリケーション サーバー上で実行される自動スケーリング REST API と対話することにより、計算ノードの数が増減されます。

Demand Calculator は、スケジューラによって収集された計算ノードとジョブ データに基づくリソース要件の評価を担当します。 この評価では、コンピューティングとネットワークの制約が考慮されます。たとえば、クラスターの最大サイズや InfiniBand 関連の制限などです。 結果として得られるリソース要件は、特定のサイズと構成を備えた Azure VM のプロビジョニングまたはプロビジョニング解除の要求に変換されます。 Autoscale Library によってこれらの要求が Azure CycleCloud REST API にリレーされ、次にそのオーケストレーターを通じて Azure Resource Manager に配信されます。

Note

スケジューラの統合は、クラスターのサイズ管理が主要な考慮事項となる疎結合または並列ワークロードに対応しますが、Azure CycleCloud では、ノードの近接性とネットワーク待機時間が重要となる密結合のワークロードもサポートされます。