Azure Batchのキャパシティ プランニング

効果的な容量計画は、Azure Batchワークロードが必要なときに必要なコンピューティング リソースを確実に確保するのに役立ちます。 この記事では、Batch 容量の構造、ワークロードのクォータを計画する方法、割り当てエラーのリスクを軽減する方法について説明します。

クォータは、容量の保証ではなく、制限です。 事前に計画を立てれば、適切なクォータを要求し、回復力のある構成を選択し、容量が制限されている場合に適切に対応できます。 特定の既定値と最大値については、 Batch サービスのクォータと制限に関するページを参照してください。

Batchがあなたの業務量に合っているか確認してください

Azureでスケジューリングをサービスとして提供したいときはバッチを使い、アプリケーションは作業をプール、ジョブ、タスクに整理できます。 バッチ容量を計画する前に、以下の選択肢を検討してください:

  • 特定のHPCスケジューラを運用したり、クラスタのトポロジーやソフトウェアスタックをカスタマイズしたり、既存のオンプレミスのワークフローと密接に連携したりする必要がある場合は、Azure CycleCloudを選択してください。
  • ネットワーク、ストレージ、アクセスコンポーネントがサブスクリプションにプロビジョニングされたすぐに展開可能なSlurm環境を望むなら、Azure CycleCloud Workspace for Slurmを選択してください。

バッチ運用モデルが適している場合は、以下のセクションを使ってピーク需要の推定、VMの選択、クォータの計算、フォールバックの定義を行い、生産プールを作成するのが良いでしょう。

容量階層

バッチ容量は複数のレイヤーで管理され、各レイヤーはその下のレイヤーを制約します。 実効容量は、チェーン内で最も厳しい制限によって決まります。

上部の Azure リージョンは、各 VM ファミリで使用可能な物理データセンター容量を提供します。 リージョンの容量は、ユーザーが制御する固定値ではありません。時間の経過と VM シリーズによって異なります。 その後、 サブスクリプション クォータ によって、リージョンごとに VM ファミリごとに許可されるコア制限が設定されます。 ユーザー サブスクリプション プールの割り当てモードでは、これらのサブスクリプション クォータは Batch プールに直接適用されます。 Batch アカウントクォータは、Batch アカウントごとに許可されるコア、プール、およびアクティブなジョブを設定します。 Batch サービス プールの割り当てモードでは、これらのアカウント レベルのクォータが適用されます。 最後に、 プールの制限 は、プールを超えるクォータと Batch サービスによって設定された プール サイズの制限 に基づいて、プールあたりのノード数を制限しました。

アカウントに適用されるレイヤーを理解することは、プールの割り当てモードによって異なります。 詳細については、「 Batch アカウントとプール割り当てモード」を参照してください。

容量要件を計画する

運用プールを作成する前に、ワークロードに必要なリソースを見積もります。 ワークロードの特性をクォータ要求に変換するには、次の質問に取り組んでください。

  • ワークロード プロファイル。 同時実行ジョブとタスクのピーク数は何ですか? タスクの平均所要時間とメモリ要件は何ですか? タスクには GPU またはマルチノード (MPI) 調整が必要ですか?
  • VM の選択。 ワークロードに最も適した VM ファミリとサイズ はどれですか? 各 VM が提供するコアの数とメモリの量
  • プールのサイズ設定。 ノードごとに同時に実行されるタスクの数 (ノード コア数の最大 4 倍、ノードあたり 256 個のタスク スロット) 同時タスクのピーク数を考えると、必要なノードの数はいくつですか? 専用 ノードとスポット ノードの間で容量をどのように分割しますか?
  • クォータ要件。 必要なコアの合計を取得するには、最大ノード数に VM あたりのコア数を乗算します。 その合計を現在のクォータと比較して、要求する増加分を判断します。
  • コストの見積もり。 VM の時間単位のレートと予想される実行時間を使用して、毎日および毎月のコストを見積もる。 詳細については、「Azure Batchのコストを管理する計画」を参照してください。

現在のクォータを確認し、引き上げを要求するには、「Batch クォータの表示」と「クォータの引き上げ」を参照してください。 クォータの引き上げ申請は十分前もって提出し、最初は小幅な段階的引き上げから始めます。 クォータを大きく増やすには手動による確認が必要な場合があり、数日から数週間かかる場合があります。

容量を事前に管理する

制約になる前に容量を計画します。

  • クォータの使用状況を監視します。 コア使用量をクォータに対して追跡し、使用量が上限に近づいたときにアラートを出します。たとえば、70~80%です。 詳細については、「 バッチ ソリューションの監視」を参照してください。
  • 自動スケーリングを使用します。 固定の過剰プロビジョニングノード数を保持するのではなく、需要に応じてプールが拡大および縮小されるように 自動スケーリング を構成します。 一般的なパターンとしては、確実な処理進行を担保するために専用ノードを一定数維持し、追加のスループットが必要な場合は Spot ノードにバーストします。
  • 複数のリージョンとアカウントに分散します。 複数のリージョンまたは Batch アカウントにワークロードを分散して、より多くの集計容量にアクセスします。 アクティブなジョブやプールなどのサービス クォータは、個別の各 Batch アカウントに適用されます。

容量の制約を処理する

計画の場合でも、割り当てエラーが発生する可能性があります。 回復力を持つようにワークフローを設計します。

  • 再試行して、方法を変えてください。 プールがターゲット サイズに達できない場合は、数分後に再試行するか、別の VM サイズを試すか、別のリージョンを試してください。 リソースの可用性は時間の経過と同時に変化します。
  • ジョブのターゲットを変更 単一の静的プールに依存しないようにします。 プールを拡張できない場合に備えて、必要に応じて異なる VM サイズの別のプールにジョブのターゲットを変更できることを確認してください。 詳細については、「Azure Batchのベスト プラクティス」を参照してください。
  • スポットによる回収を考慮して構築します。スポット ノードは、Azure が容量を回収する必要がある場合に割り込まれることがあります。 スポット ノードは耐障害性のあるワークロードにのみ使用し、専用ノードおよび自動スケールと組み合わせて、プールが自動的に復旧するようにします。

割り当てエラーとクォータ エラーの詳細な症状、原因、解決策については、トラブルシューティングのガイダンスを参照してください。

生産前に能力を検証する

代表的なジョブ、その予想データ量、および運用環境のプール構成を用いて、概念実証を実施します。 すべての基準で証拠を記録できるまでは、設計を承認して生産を進めないでください:

Criterion 記録すべき証拠
作業負荷完了 ジョブは本番タスクの依存関係、アプリケーションパッケージ、入出力データパスを正しく含めて完了します。
規模とクオータ プールは、バッチアカウント、サブスクリプション、VMファミリーのクォータを超えずに、目的領域で必要なノード数に達します。
Performance プール割り当て、データ転送、計算、結果の永続性を含むエンドツーエンドのジョブ時間が目標を満たします。
Recovery ノードの喪失、タスクの失敗、またはSpotプリエンプションが発生した場合、ジョブは記録された最大回復時間と許容されるチェックポイント損失内にとどまり、完了期限を守り、計画されたフォールバックVMサイズまたはプールを正常に使用します。
Cost 測定された計算、ストレージ、ネットワーク、完了したジョブごとのライセンスコストは、期待される実行頻度で目標を満たします。
運用 アラートはノルマ圧、割り当て失敗、タスク失敗を特定し、オーナーは再ターゲット化や作業量の回復が可能です。

基準が失敗した場合は、プールサイズ、VM選択、ストレージパス、再試行動作、または地域フォールバックを修正し、同じ作業を繰り返します。 小規模な機能テストでは生産能力を確立できません。なぜなら、ピークスケールやノルマ、データの移動を行使しないためです。

ベスト プラクティス

演習 説明
早期にクォータを要求する クォータ要求を事前に送信する。大幅な増加には数日から数週間かかる場合があります。
余裕を持って計画する 現在のピークよりも少し多くのクォータを要求して、増加を可能にします。
複数のリージョンを使用する リージョン間でワークロードを分散し、より多くの集計容量にアクセスします。
使用状況を監視する コア使用量がクォータの 70 から 80% に達したときにアラートを生成します。
VM のサイズを適切に設定する 過剰プロビジョニングではなく、VM ファミリとサイズをワークロードと一致させます。
Spot を適切に活用する 耐障害性のあるワークロード向けにスポット ノードを確保し、専用ノードと組み合わせます。
リソースをクリーンアップする 未使用のプールを削除してアカウント クォータを解放します。

次のステップ