Spot VM の可用性を確認する

このドキュメントでは、Spot VM のリアルタイムの可用性と予想される稼働時間を表示する方法について説明します。

Spot VM を作成する前に、 複数のマシンタイプとロケーションのリアルタイム の可用性と予想される稼働時間を 使用して、advice.capacity API を表示できます。この情報は、次の操作に役立ちます。

  • リソースの可用性に関するエラーを減らす 。使用可能な容量があるマシンタイプ、リージョン、ゾーンを確認したら、Spot VM の作成時にこれらの構成を指定できます。この操作により、リソースの可用性に関するエラーが発生する可能性が低くなります。

  • プリエンプション用にワークロードを最適化する 。さまざまなマシン構成とロケーションの予想される稼働時間を比較することで、ワークロードに最適な構成を選択できます。これらの要素を確認することで、プリエンプションによってワークロードが中断されないように Spot VM を設計して整理できます。

さまざまなマシンタイプと ロケーションで安定性と費用を比較する方法については、 Spot VM のプリエンプション率と料金を表示するをご覧ください。

制限事項

advice.capacity API にリクエストを送信しても、TPU の可用性を表示することはできません。

Spot VM のリソース可用性の表示について

advice.capacity API にリクエストを送信すると、出力に次の推奨指標が表示されます。これらの指標は、Spot VM で使用するマシンタイプ、Spot VM を作成するゾーン、リクエストされたリソースのリアルタイムの可用性、過去のプリエンプション率に基づいています。

  • 取得可能性スコア: 指定した数の VM とマシン 構成で Spot VM の作成リクエストが成功する可能性。詳細については、 Spot VM の取得可能性スコアをご覧ください。

  • 推定稼働時間: Compute Engine がプリエンプトする前に、ほとんどの Spot VM が実行されると予想される 最小時間。詳細については、 Spot VM の推定稼働時間をご覧ください。

Spot VM の取得可能性スコア

advice.capacity API にリクエストを送信すると、出力の取得可能性スコア( obtainability)は、1 つ以上のゾーンで指定した数の Spot VM を正常に作成できる可能性を示します。Compute Engine は、リクエストされたリソースのリアルタイムの可用性と、最近の作成リクエストの成功率に基づいてこのスコアを計算します。

取得可能性スコアの範囲は 0.01.0 で、次のいずれかの成功の可能性を示します。

Spot VM の推定稼働時間

advice.capacity API にリクエストを送信すると、出力の推定稼働時間( estimatedUptime)は、指定した数の Spot VM のほとんどがプリエンプション前に実行されると予想される最小時間を示します。Compute Engine は、指定したマシンタイプとロケーションの過去と現在の使用パターンに基づいて、この稼働時間を計算します。

Compute Engine は、推定稼働時間を次のいずれかの値に設定できます。

  • 60 分(3,600 秒): ほとんどの Spot VM は、Compute Engine がプリエンプトするまで 1 時間実行される可能性があります。バッチ ワークロードなど、中断を許容できる長時間実行ワークロード用の VM を作成します。

  • 10 分(600 秒): ほとんどの Spot VM は、Compute Engine がプリエンプトするまで 10 分間実行される可能性があります。短い間隔で進行状況を保存する短時間実行タスクまたはフォールト トレラントなワークロードにのみ VM を作成します。

  • 1 分(60 秒): ほとんどの Spot VM は、Compute Engine がプリエンプトするまで 1 分間実行される可能性があります。次のいずれかを行うことをおすすめします。

    • 非常に短いタスク、テスト、重要度の低いワークロードにのみ VM を作成します。

    • 別のロケーションまたは別のマシンタイプでリソースの可用性を確認します。

    • 別の プロビジョニング モデルを使用して VM を作成します。

ベスト プラクティス

advice.capacity API を使用した後に容量を取得する可能性を最大限に高めるには、次のベスト プラクティスをおすすめします。

  • さまざまなマシンタイプで出力を比較する: ワークロードが 柔軟な場合は、 Spot VM の数やマシンタイプが異なるオプションを比較します。たとえば、n1-standard-2 マシンタイプを使用する 100 個の VM と、n1-standard-4 マシンタイプを使用する 50 個の VM の出力を比較できます。次に、ワークロードのニーズに合わせて取得可能性と推定稼働時間のバランスが最適な構成を使用して、Spot VM を作成できます。

  • 複数のロケーションで出力を比較する: ワークロードを 複数のリージョンまたはゾーンで実行できる場合は、各ロケーションの可用性を確認します。たとえば、2 つのリージョンで推定稼働時間が同じ場合は、取得可能性スコアが高いリージョンに Spot VM を作成します。

  • 複数のゾーンに VM を分散する: ターゲット分配形態ANY または BALANCED に指定すると、advice.capacity API は 複数のゾーンに Spot VM を作成することを推奨する場合があります。たとえば、100 個の Spot VM を作成する可能性を最大限に高めるために、1 つのゾーンに 90 個の VM を作成し、別のゾーンに 10 個の VM を作成することをおすすめします。

始める前に

必要なロール

Spot VM の可用性を表示するために必要な権限を取得するには、プロジェクトに対するCompute 閲覧者 roles/compute.viewer)IAM ロールを付与するように管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

この事前定義ロールには Spot VM の可用性を表示するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

Spot VM の可用性を表示するには、次の権限が必要です。

  • Spot VM の可用性を表示する: compute.advice.capacity プロジェクトに対する

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

Spot VM の可用性を表示する

Spot VM の可用性を表示するには、ロケーション、マシン構成、作成する VM の数を指定する必要があります。 結果に基づいて、結果に基づいて、 Spot VM を作成するか、別のロケーションまたは 別のマシン構成でリソースの可用性を表示できます。

ワークロードの要件に応じて、次の点を考慮してください。

  • 複数のマシンシリーズ、マシンタイプ、 リージョンまたはゾーンの可用性を同時に表示するには、 Google Cloud コンソールを使用します。

  • リージョン MIG の ターゲット分配形態の可用性を表示するには、 gcloud CLI または REST API を使用します。

  • デフォルトでマシンタイプにアタッチされていない N1 GPU VM または ローカル SSD ディスクの可用性を表示するには、 REST API を使用します。

Spot VM の可用性を表示するには、次のいずれかのオプションを選択します。

コンソール

  1. コンソールで、[**容量アドバイザー**] ページに移動します。 Google Cloud

    [容量アドバイザー] に移動

  2. [フィルタ] ペインで、次の操作を行います。

    1. [ロケーション] セクションの [リージョン] リストで、Spot VM の可用性を表示するリージョンを選択します。

    2. [マシンの仕様] セクションで、可用性を表示する Spot VM のマシン構成と数を指定します。

      1. [**マシン ファミリー**] リストで、 マシン ファミリーを選択します。

      2. [シリーズ] リストで、最大 3 つのマシンシリーズを選択します。

      3. [マシンタイプ] リストで、最大 5 つのマシンタイプを選択します。

      4. [VM の数] フィールドに、Spot VM の数を入力します。

      5. 省略可: デフォルトでは、使用可能なリソースが限られているゾーンは非表示になっています。これらのゾーンを表示するには、[在庫僅少のリージョンを非表示にする] チェックボックスをオフにします。

    3. [Search] をクリックします。

gcloud

Spot VM の可用性を表示するには、 gcloud beta compute advice capacity コマンドを使用します。

gcloud beta compute advice capacity \
    --provisioning-model=SPOT \
    --instance-selection-machine-types=MACHINE_TYPES \
    --target-distribution-shape=TARGET_DISTRIBUTION_SHAPE \
    --size=SIZE \
    --region=REGION

次のように置き換えます。

  • MACHINE_TYPES: 可用性を表示するマシンタイプのカンマ区切りのリスト(例: n2-standard-2,n2-standard-4)。最大 5 つのマシンタイプを指定できます。

  • TARGET_DISTRIBUTION_SHAPE: リクエストされたリソースの分布。実行するワークロードのタイプと VM を作成するゾーンに基づいて、次のいずれかの値を指定します。

    • ANY: 可用性に基づいて 1 つ以上のゾーンに Spot VM を作成します。バッチ ワークロードにはこの値を指定します。

    • ANY_SINGLE_ZONE: 可用性に基づいて 1 つのゾーンにのみ Spot VM を作成します。AI やハイ パフォーマンス コンピューティング(HPC)ワークロードなど、VM 間の大規模な通信が必要なワークロードにはこの値を指定します。

    • BALANCED: 可用性に基づいて 1 つ以上のゾーンに Spot VM を作成し、Compute Engine がゾーン間で VM をできるだけ均等に分散します。高可用性サービスを提供するワークロードやバッチ ワークロードで、ゾーン障害の影響を最小限に抑えるには、この値を指定します。

  • SIZE: 作成する Spot VM の数。

  • REGION: Spot VM の可用性を表示するリージョン。リージョンではなくゾーンのカンマ区切り リストを指定するには、--region フラグを --zones フラグに置き換えます。

出力は次のようになります。

recommendations:
- scores:
  obtainability: 0.9
  estimatedUptime: 600s
- shards:
  - instanceCount: 90
    machineType: n2-standard-2
    provisioningModel: SPOT
    zone: https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a
  - instanceCount: 10
    machineType: n2-standard-4
    provisioningModel: SPOT
    zone: https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-c

REST

Spot VM の可用性を表示するには、ベータ版の advice.capacity メソッドPOST リクエスト を送信します 。

たとえば、リージョン内の 2 つのマシンタイプの可用性を表示するには、次のようにリクエストを送信します。リクエストごとに最大 5 つのマシンタイプの可用性を表示できます。

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/advice/capacity

{
  "instanceProperties": {
    "scheduling": {
      "provisioningModel": "SPOT"
    }
  },
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "MACHINE_SELECTION_1": {
        "machineTypes": [
          "MACHINE_TYPE_1"
        ]
      },
      "MACHINE_SELECTION_2": {
        "machineTypes": [
          "MACHINE_TYPE_2"
        ]
      }
    }
  },
  "distributionPolicy": {
    "targetShape": "TARGET_DISTRIBUTION_SHAPE"
  },
  "size": SIZE
}

次のように置き換えます。

  • PROJECT_ID: 実際のプロジェクトの ID。

  • REGION: Spot VM の可用性を表示するリージョン。指定したリージョン内の特定のゾーンでのみ 可用性を表示する場合は、 リクエスト本文に distributionPolicy.zones配列フィールド を含めます。たとえば、2 つのゾーンで Spot VM の可用性を表示するには、次のように distributionPolicy フィールドに zones 配列を追加します。

    "zones": [
      {
        "zone": "zones/ZONE_1"
      },
      {
        "zone": "zones/ZONE_2"
      }
    ]
    

    ZONE_1ZONE_2 は、Spot VM の可用性を表示する 2 つのゾーンに置き換えます。

  • MACHINE_SELECTION_1MACHINE_SELECTION_2: マシンタイプ選択の名前。たとえば、selection-1selection-2 をそれぞれ指定します。

  • MACHINE_TYPE_1MACHINE_TYPE_2: 可用性を表示するマシンタイプ。マシンタイプに応じて、次の点に注意してください。

    • N1 マシンタイプ: N1 Spot VM に GPU を接続するには、次のように guestAccelerators フィールドを MACHINE_SELECTION_1 フィールドまたは MACHINE_SELECTION_2 フィールドに含めます。

      "guestAccelerators": [
        {
          "acceleratorCount": ACCELERATOR_COUNT,
          "acceleratorType": "ACCELERATOR_TYPE"
        }
      ]
      

      次のように置き換えます。

      • ACCELERATOR_COUNT: N1 Spot VM にアタッチする GPU の数。

      • ACCELERATOR_TYPE: N1 マシンシリーズをサポートする GPU モデル

    • デフォルトのローカル SSD ディスクがないマシンタイプ: Spot VM にローカル SSD ディスクをアタッチするには、disks フィールドを MACHINE_SELECTION_1 フィールドまたは MACHINE_SELECTION_2 フィールドに含めます。アタッチするローカル SSD ディスクごとに、type フィールドを繰り返し、SCRATCH に設定します。たとえば、2 つのローカル SSD ディスクをアタッチするには、次のようにします。

      "disks": [
        {
          "type": "SCRATCH"
        },
        {
          "type": "SCRATCH"
        }
      ]
      
  • TARGET_DISTRIBUTION_SHAPE: リクエストされたリソースの分布。実行するワークロードのタイプと VM を作成するゾーンに基づいて、次のいずれかの値を指定します。

    • ANY: 可用性に基づいて 1 つ以上のゾーンに Spot VM を作成します。バッチ ワークロードにはこの値を指定します。

    • ANY_SINGLE_ZONE: 可用性に基づいて 1 つのゾーンにのみ Spot VM を作成します。AI や HPC ワークロードなど、VM 間の大規模な通信が必要なワークロードにはこの値を指定します。

    • BALANCED: 可用性に基づいて 1 つ以上のゾーンに Spot VM を作成し、Compute Engine がゾーン間で VM をできるだけ均等に分散します。高可用性サービスを提供するワークロードやバッチ ワークロードで、ゾーン障害の影響を最小限に抑えるには、この値を指定します。

  • SIZE: 作成する Spot VM の数。

出力は次のようになります。

{
  "recommendations": [
    {
      "scores": {
        "estimatedUptime": "600s",
        "obtainability": 0.9
      },
      "shards": [
        {
          "instanceCount": 90,
          "machineType": "n2-standard-2",
          "provisioningModel": "SPOT",
          "zone": "https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a"
        },
        {
          "instanceCount": 10,
          "machineType": "n2-standard-4",
          "provisioningModel": "SPOT",
          "zone": "https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-c"
        }
      ]
    }
  ]
}

次のステップ