このドキュメントでは、スポット 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 の推定稼働時間をご覧ください。
Spot VM の取得可能性スコア
advice.capacity API にリクエストを送信すると、出力の取得可能性スコア(obtainability)は、1 つ以上のゾーンで指定された数の Spot VM を正常に作成できる可能性を示します。Compute Engine は、リクエストされたリソースのリアルタイムの可用性と、最近の作成リクエストの成功率に基づいてこのスコアを計算します。
取得可能性スコアは 0.0~1.0 の範囲で、次のいずれかの成功の可能性を示します。
成功の可能性が高い(
0.7~1.0): リクエストした Spot VM を作成できる可能性が高い。成功の可能性が中程度(
0.4~0.6): リクエストした Spot VM を作成できる可能性は中程度です。スポット VM を一括で作成する場合や、ターゲット サイズを指定して MIG で作成する場合は、リクエストした VM の一部しか取得できないことがあります。成功の可能性が低い(
0.0~0.3): リクエストした Spot VM を作成できる可能性は低い。別のロケーションまたは別のマシンタイプでリソースの可用性を確認するか、別のプロビジョニング モデルを使用して VM を作成することをおすすめします。
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 を使用した後に容量を取得する可能性を最大限に高めるには、次のベスト プラクティスをおすすめします。
異なるマシンタイプ間で出力を比較する: ワークロードが柔軟な場合は、スポット VM またはマシンタイプの数が異なるオプションを比較します。たとえば、
n1-standard-2マシンタイプを使用する 100 台の VM とn1-standard-4マシンタイプを使用する 50 台の VM の出力を比較できます。次に、ワークロードのニーズに合わせて可用性と推定アップタイムのバランスが最も取れた構成を使用して、Spot VM を作成できます。複数のロケーションで出力を比較する: ワークロードを複数のリージョンまたはゾーンで実行できる場合は、各ロケーションの可用性を確認します。たとえば、2 つのリージョンで同じ推定稼働時間が提供されている場合は、取得可能性スコアが高いリージョンに Spot VM を作成します。
複数のゾーンに VM を分散する:
ANYまたはBALANCEDのターゲット分配形態を指定すると、advice.capacityAPI は複数のゾーンに Spot VM を作成することを推奨する場合があります。たとえば、100 個の Spot VM を作成する可能性を最大限に高めるために、1 つのゾーンに 90 個の VM を作成し、別のゾーンに 10 個の VM を作成することが推奨される場合があります。
始める前に
advice.capacityAPI の可用性と予想される稼働時間の推奨事項には、デフォルトで AI ゾーンが含まれています。API でこれらのゾーンのいずれかに VM を作成することが推奨された場合に、AI ゾーンで Spot VM を作成できるように、 プロジェクトで AI ゾーンが有効になっていることを確認してください。-
まだ設定していない場合は、認証を設定します。認証では、 Google Cloud サービスと API にアクセスするための ID が確認されます。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
コンソール
Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。
gcloud
-
Google Cloud CLI をインストールします。インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。
gcloud init外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
- デフォルトのリージョンとゾーンを設定します。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Google Cloud CLI をインストールします。
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
必要なロール
スポット VM の可用性を表示するために必要な権限を取得するには、プロジェクトに対する Compute 閲覧者 (roles/compute.viewer)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
この事前定義ロールには、スポット VM の可用性を表示するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
スポット 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 の可用性を表示するには、次のいずれかのオプションを選択します。
コンソール
Google Cloud コンソールで、[容量アドバイザー] ページに移動します。
[フィルタ] ペインで、次の操作を行います。
[ロケーション] セクションの [リージョン] リストで、スポット VM の可用性を表示するリージョンを選択します。
[マシンの仕様] セクションで、可用性を確認するマシン構成と Spot VM の数を指定します。
[マシン ファミリー] リストで、[マシン ファミリー] を選択します。
[シリーズ] リストで、最大 3 つのマシンシリーズを選択します。
[マシンタイプ] リストで、最大 5 つのマシンタイプを選択します。
[VM の数] フィールドに、スポット VM の数を入力します。
[検索] をクリックします。
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: 可用性に基づいて単一のゾーンにのみ 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 の可用性を確認するリージョン。MACHINE_SELECTION_1とMACHINE_SELECTION_2: マシンタイプ選択の名前。たとえば、それぞれselection-1とselection-2を指定します。MACHINE_TYPE_1、MACHINE_TYPE_2: 可用性を確認するマシンタイプ。マシンタイプに応じて、次の点に注意してください。N1 マシンタイプ: N1 スポット VM に GPU をアタッチするには、次のように
MACHINE_SELECTION_1フィールドまたはMACHINE_SELECTION_2フィールドにguestAcceleratorsフィールドを指定します。"guestAccelerators": [ { "acceleratorCount": ACCELERATOR_COUNT, "acceleratorType": "ACCELERATOR_TYPE" } ]次のように置き換えます。
ACCELERATOR_COUNT: N1 Spot VM にアタッチする GPU の数。ACCELERATOR_TYPE: N1 マシンシリーズをサポートする GPU モデル。
デフォルトのローカル SSD ディスクがないマシンタイプ: スポット VM にローカル SSD ディスクをアタッチするには、
MACHINE_SELECTION_1フィールドまたはMACHINE_SELECTION_2フィールドにdisksフィールドを含めます。アタッチするローカル SSD ディスクごとに、typeフィールドを繰り返し、SCRATCHに設定します。たとえば、2 つのローカル SSD ディスクをアタッチするには、次のようにします。"disks": [ { "type": "SCRATCH" }, { "type": "SCRATCH" } ]
TARGET_DISTRIBUTION_SHAPE: リクエストされたリソースの分布。実行するワークロードのタイプと VM を作成するゾーンに基づいて、次のいずれかの値を指定します。ANY: 可用性に基づいて 1 つ以上のゾーンに Spot VM を作成する場合。バッチ ワークロードにこの値を指定します。ANY_SINGLE_ZONE: 可用性に基づいて単一のゾーンにのみ 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"
}
]
}
]
}
リージョン内の特定のゾーンで Spot VM の可用性を確認する場合は、リクエスト本文に zones フィールドを含めます。
次のステップ
Spot VM を作成して使用する方法を学習する。
Spot VM のベスト プラクティスの詳細を確認する。