このドキュメントでは、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.0~1.0 で、次のいずれかの成功の可能性を示します。
成功の可能性が高い(
0.7~1.0): リクエストした Spot VM を作成できる可能性が高いです。成功の可能性が中程度(
0.4~0.6): リクエストした Spot VM を作成できる可能性は中程度です。Spot 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 を使用した後に容量を取得する可能性を最大限に高めるには、次のベスト プラクティスをおすすめします。
さまざまなマシンタイプで出力を比較する: ワークロードが 柔軟な場合は、 Spot 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 を作成することをおすすめします。
始める前に
- The
advice.capacityAPI には、デフォルトで AI ゾーンが 可用性と推定稼働時間の推奨事項に含まれています。 API がこれらのゾーンのいずれかに VM を作成することを推奨する場合は、AI ゾーンで Spot VM を作成できるように、プロジェクトで AI ゾーンが有効になっていることを確認してください。 -
まだ設定していない場合は、認証を設定します。
認証では、 Google Cloud サービスと API にアクセスするための ID が確認されます。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
コンソール
コンソールを使用してサービスと API にアクセスする場合、認証を設定する必要はありません。 Google Cloud Google Cloud
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 にログインする必要があります。
詳細については、 REST を使用して認証する 認証ドキュメントの Google Cloud をご覧ください。
必要なロール
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 の可用性を表示するには、次のいずれかのオプションを選択します。
コンソール
コンソールで、[**容量アドバイザー**] ページに移動します。 Google Cloud
[フィルタ] ペインで、次の操作を行います。
[ロケーション] セクションの [リージョン] リストで、Spot VM の可用性を表示するリージョンを選択します。
[マシンの仕様] セクションで、可用性を表示する Spot VM のマシン構成と数を指定します。
[**マシン ファミリー**] リストで、 マシン ファミリーを選択します。
[シリーズ] リストで、最大 3 つのマシンシリーズを選択します。
[マシンタイプ] リストで、最大 5 つのマシンタイプを選択します。
[VM の数] フィールドに、Spot VM の数を入力します。
省略可: デフォルトでは、使用可能なリソースが限られているゾーンは非表示になっています。これらのゾーンを表示するには、[在庫僅少のリージョンを非表示にする] チェックボックスをオフにします。
[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_1とZONE_2は、Spot VM の可用性を表示する 2 つのゾーンに置き換えます。MACHINE_SELECTION_1とMACHINE_SELECTION_2: マシンタイプ選択の名前。たとえば、selection-1とselection-2をそれぞれ指定します。MACHINE_TYPE_1とMACHINE_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"
}
]
}
]
}
次のステップ
Spot VM を 作成して使用する方法を学習する。
Spot VM の ベスト プラクティスについて学習する。