このドキュメントでは、Compute Engine インスタンスとクラスタを作成する前に考慮すべき AI Hypercomputer の構成について説明します。使用可能な構成を確認すると、ワークロードのパフォーマンスを最適化し、ダウンタイムとパフォーマンスの問題を最小限に抑えることができます。
コンピューティング インスタンスとクラスタの作成に関する構成要素
ワークロードを実行するコンピューティング インスタンスとクラスタを作成する前に、使用する構成を検討してください。
予約にバインドされたプロビジョニング モデルを使用する場合は、次の要素も考慮する必要があります。
プロビジョニング モデル
コンピューティング インスタンスまたはクラスタの作成に選択した消費オプションに基づいて、次のいずれかのプロビジョニング モデルを使用して、インスタンスの作成に必要なリソースを取得できます。
予約バインド: 将来の日付と期間でリソースを割引価格で予約できます。予約期間の開始時に、予約済みリソースを使用してインスタンスまたはクラスタを作成できます。予約期間中は、予約したリソースに排他的にアクセスできます。
Flex Start: 割引リソースを最大 7 日間リクエストできます。Compute Engine は、リクエストされたリソースが使用可能になるとすぐに、そのプロビジョニングをベスト エフォートでスケジュールします。リクエストした期間中、取得したリソースに排他的にアクセスできます。
Spot: 可用性に基づいて、大幅割引のリソースをすぐに取得できます。ただし、Compute Engine は容量を再利用するために、インスタンスを任意のタイミングで停止または削除する場合があります。
予約にバインドされたプロビジョニング モデル
予約にバインドされたプロビジョニング モデルでは、作成したコンピューティング インスタンスが以前に予約した容量にリンクされます。容量を予約すると、Compute Engine は空の予約を作成します。予約の開始時間になると、次の処理が行われます。
Compute Engine は、予約済みインスタンス数を予約に追加します。予約終了時間まで、予約した容量に排他的にアクセスできます。
Google Cloud では、容量を使用するかどうかにかかわらず、予約期間の終了まで予約済み容量に対して課金されます。
予約済みリソースを使用して、追加料金なしでインスタンスを作成できます。ディスクや IP アドレスなど、予約に含まれていないリソースについてのみ支払います。
コンピューティング インスタンスまたは MIG を作成するときに、予約にバインドされたプロビジョニング モデルを指定するには、次の操作を行います。
Google Cloud コンソールの [プロビジョニング モデル] リストで、[予約で制限] を選択します。
Google Cloud CLI で、コマンドに
--provisioning-model=RESERVATION_BOUNDフラグを指定します。Compute Engine API で、リクエスト本文に
"provisioningModel": "RESERVATION_BOUND"フィールドを指定します。
容量を予約した後にインスタンスまたは MIG を作成するときにこれらのパラメータを設定する方法については、コンピューティング インスタンスとクラスタの作成の概要をご覧ください。Cluster Toolkit を使用してクラスタをデプロイする場合、クラスタ ブループリントによってプロビジョニング モデルが設定されます。
Flex Start プロビジョニング モデル
Flex Start プロビジョニング モデルを使用すると、リクエストされた容量が利用可能な場合に、スタンドアロンの Flex Start VM を作成したり、マネージド インスタンス グループ(MIG)に Flex Start VM を追加したりできます。サイズ変更リクエストを使用して Flex Start VM を MIG に追加すると、MIG はインスタンスを一度にすべて作成します。このアプローチを使用すると、ワークロードの開始に必要な容量がすべて揃うまで、Compute Engine が提供する部分的な容量に対する不要な料金の発生を防ぐことができます。Flex Start プロビジョニング モデルは、安全な容量プールからリソースをプロビジョニングするため、GPU などの需要の高いリソースを取得できる可能性が高くなります。
スタンドアロン インスタンスまたは MIG のインスタンス テンプレートを作成するときに Flex Start プロビジョニング モデルを指定するには、次の操作を行います。
Google Cloud コンソールの [プロビジョニング モデル] リストで、[Flex Start] を選択します。
gcloud CLI で、コマンドに
--provisioning-model=FLEX_STARTフラグを指定します。Compute Engine API で、リクエスト本文に
"provisioningModel": "FLEX_START"フィールドを指定します。
Flex Start プロビジョニング モデルを使用するインスタンスまたはクラスタの作成の詳細については、次のドキュメントをご覧ください。
Slurm クラスタを作成する:
GKE クラスタを作成する:
Spot プロビジョニング モデル
Spot プロビジョニング モデルを使用すると、可用性に基づいて大幅に割引されたコンピューティング インスタンスを作成できます。ただし、Compute Engine は容量を再利用するために、作成されたインスタンスを任意のタイミングで停止または削除する場合があります。このプロセスはプリエンプションと呼ばれます。
インスタンスまたは MIG の作成時に Spot プロビジョニング モデルを指定するには、次の操作を行います。
Google Cloud コンソールの [プロビジョニング モデル] リストで、[Spot] を選択します。
gcloud CLI で、コマンドに
--provisioning-model=SPOTフラグを指定します。Compute Engine API で、リクエスト本文に
"provisioningModel": "SPOT"フィールドを指定します。
インスタンスまたは MIG の作成時にこれらのパラメータを設定する方法については、コンピューティング インスタンスとクラスタの作成の概要をご覧ください。
クラスタ デプロイツール
Cluster Toolkit は、GPU アクセラレーション クラスタの作成に推奨されるオープンソースのデプロイ ツールです。Cluster Toolkit は、Google Kubernetes Engine(GKE)クラスタと Slurm クラスタの両方をデプロイできます。
または、次のいずれかの方法でコンピューティング インスタンスのグループをプロビジョニングし、必要に応じて独自のワークロード スケジューラを組み込むこともできます。
予約ブロックのデプロイタイプ
クラスタ化された GPU コンピューティング インスタンスまたはクラスタを作成するときに予約にバインドされたプロビジョニング モデルを使用すると、受け取るマシンは、高密度に割り当てられたホストのブロック内に自動的にデプロイされます。このデプロイには次の利点があります。
Google の動的機械学習(ML)ネットワーク ファブリックを使用して、一貫した高帯域幅、低レイテンシのインスタンス接続を実現する、ノンブロッキング ネットワーキング。
インスタンス間の相対的な近接性を階層的に表示するネットワーク トポロジにアクセスします。この機能は、高度なジョブ スケジューリングのユースケースに役立ちます。
オーケストレーターを使用する場合の、きめ細かいトポロジを考慮した配置。
メンテナンス スケジュールをきめ細かく制御して、ジョブ スケジューリングと稼働時間を最大化し、ダウンタイムを最小限に抑えます。
予約の運用モード
予約にバインドされたプロビジョニング モデルを使用する場合、予約するマシンタイプによって、予約済み容量の予約運用モードが決まります。各モードでは、ホストエラーやホスト障害レポートへの対応方法、予約のインフラストラクチャに対する可視性と制御のレベルを定義します。
各予約運用モードでは、次のことが定義されます。
復元を管理するユーザー: お客様または Google Cloud。
復元に使用する容量: 予約済み容量のみ、または予約内または予約外の容量。
プレースメント制御のレベル: 特定の予約サブブロックの予定時刻より前にメンテナンスを表示して開始できるかどうか。これにより、きめ細かい制御が可能になります。
コンピューティング インスタンスまたはクラスタを作成するために容量を予約する場合は、予約の運用モード(マネージド モードまたはすべての容量モード)のいずれかを選択する必要があります。
マネージド モード
マネージド モードでは、 Google Cloud は、ホストエラーまたは障害のあるホストの報告後に、コンピューティング インスタンスのメンテナンスと復元プロセスを自動的に管理します。このアプローチは、ワークロードに高い安定性が求められ、ダウンタイムを最小限に抑える自動化プロセスが必要な場合に最適です。
マネージド モードには次の特徴があります。
復元にのみ予約済み容量を使用する: Compute Engine は、予約済み容量を使用してインスタンスを再起動します。予約で使用可能な容量がない場合、Compute Engine は容量を追加取得した後にのみインスタンスを再起動します。
インスタンスの自動再起動: Google Cloud は、インスタンスの復元プロセス全体を処理します。ホスト メンテナンスが必要な場合、Compute Engine は予約内の他の使用可能なマシンにインスタンスを自動的に移行し、インスタンスを再起動します。
ブロックの管理と可視性: 個々の予約と予約ブロックのトポロジ、健全性、メンテナンス ステータスを表示できます。これらのリソースについては、メンテナンス通知を受け取ったり、必要に応じてスケジュールされたメンテナンス時刻より前にメンテナンスを開始したりすることもできます。
API レート上限の可能性: report faulty host API の呼び出しは、予約ごとにレート制限される可能性があります。
All Capacity モード
すべての容量モードでは、コンピューティング インスタンスの復元プロセスを管理する必要があります。ホストエラーまたは障害のあるホストの報告の後に、メンテナンスを手動で開始する必要があります。マネージド モードとは異なり、予約サブブロックのメンテナンスを表示して開始することもできます。これらの機能により、インスタンスのメンテナンスと復元プロセスをきめ細かく制御できます。
All Capacity モードには次の特徴があります。
予約済み容量と未予約容量を復元に使用する: 予約済みリソースと、予約外で使用可能なリソースを使用して、ホストに障害が発生したときにインスタンスを移行して再起動できます。
手動インスタンスの再起動: インスタンスの復元プロセスはユーザーが担当します。ホストエラーまたはホスト障害レポートが原因でホスト メンテナンスが必要な場合、Compute Engine はインスタンスを停止します。インスタンスを再起動できるのは、メンテナンスの完了後のみです。
ブロックとサブブロックの管理と可視性: 個々の予約、予約ブロック、予約サブブロックのトポロジ、健全性、メンテナンス ステータスを表示できます。これらのリソースについては、メンテナンス通知を受け取ったり、必要に応じてスケジュールされたメンテナンス時刻より前にメンテナンスを開始したりすることもできます。
API レート制限なし: report faulty host API を呼び出す際にレート制限はありません。
メンテナンスのスケジュール設定のタイプ
予約にバインドされたプロビジョニング モデルを使用する場合、Cluster Director には、クラスタで実行中のコンピューティング インスタンスのホスト メンテナンスをスケジュールするオプションが用意されています。容量を予約するときに、インスタンスをグループ化してメンテナンスのスケジュール設定を同期させるか(グループ化)、インスタンスを疎結合にしてメンテナンスのスケジュール設定を個別に行うか(個別)を指定できます。
グループ化されたメンテナンスのスケジュール設定
グループ化されたメンテナンスのスケジューリング設定のタイプを使用すると、Compute Engine がコンピューティング インスタンスをプロビジョニングするタイミングに関係なく、同じワークロードを実行するすべてのインスタンスを同じ計画メンテナンスの頻度に合わせることができます。この密結合メンテナンスにより、使用済み容量と未使用容量を完全に制御できるため、ジョブのパフォーマンスを最適化できます。
グループ化されたメンテナンスのスケジュール設定のタイプは、次のような場合に便利です。
環境で Slurm や GKE などのジョブ スケジューラを使用している。
トレーニングや、高度に並列化されたコンピューティング ワークロードを実行する。
個別のメンテナンスのスケジュール設定
この個別のメンテナンス スケジュール設定のタイプでは、インスタンスに異なるメンテナンス スケジュールが設定されます。この構成は、推論または限定的なスケールのトレーニングを実行する場合に最適です。この場合、ワークロードに個別のメンテナンス スケジュールを設定すると、ワークロードの実行効率が向上します。