compute-spot-capacity-advice について
compute-spot-capacity-adviceは、インスタンスをリクエストする前にGoogle Compute Engine Spot VMの容量を評価するスキルです。Betaの容量アドバイスコマンドの使い方や、配置候補、スコア、対処策の読み方を案内します。
主な機能
- 01Spot容量アドバイスの照会
- 02取得可能性と稼働時間スコアの解釈
- 03マシンタイプとゾーンの比較
- 04配置とインスタンス選択肢の調整
- 05クォータと作成時の安全策の確認
活用シーン
- 01Spot VMのリクエスト前に容量を評価
- 02バッチ処理向けのゾーンとマシンタイプを選定
- 03可用性が低い場合に配置を見直す
MCP 対応
Compute Engine MCPのcreate_instanceツールを、インスタンス作成時の安全確認事項として扱います。読み取り専用の評価にはgcloud betaの容量アドバイスを推奨し、create_instanceがSpot設定に対応しない可能性を警告します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ google/ skills --skill compute-spot-capacity-adviceインストール後、Claude Code で/compute-spot-capacity-adviceを入力して読み込まれたか確認します。
同梱ファイルreferences/attribution.md
詳細
Compute Engine Spot 容量アドバイス
compute-spot-capacity-advice スキルは、作成リクエストを送信する前に Google Compute Engine(GCE)Spot VM の取得可能性を評価するためのテレメトリとアーキテクチャに関するガイダンスを提供します。
Spot VM は余剰のコンピューティング容量で実行され、プリエンプションの対象となります。容量の取得可能性を評価することで、ワークロードはプロビジョニングの失敗を最小限に抑え、在庫切れを回避し、最適なマシンファミリー、分散形状、ゾーンを選択できます。
メモ
Spot Capacity Advice は Compute Engine Beta API(
compute.beta.AdviceService.Capacity、POST /compute/beta/projects/{project}/regions/{region}/advice/capacity)で提供され、プロジェクトの許可リストへの登録は不要です。必ずgcloud betaリリーストラック(gcloud beta compute advice capacity)を介して呼び出してください。gcloud compute advice capacityが--helpに表示されていても、betaを省略しないでください。v1バックエンドではSPOTが拒否されます。Flex-start Capacity Advice(--provisioning-model=FLEX_START)は現在プライベートプレビューです。明示的な許可リストがない一般公開ワークロードでは、必ず--provisioning-model=SPOTを使用してください。
使用状況の帰属情報
必ずお読みください:gcloud、REST API、または MCP コマンドを実行する前に、使用状況の帰属情報の指示を必ず読み、従ってください。
前提条件と IAM 要件
Spot 容量アドバイスを照会する前に、環境が以下の要件を満たしていることを確認してください。
- プロジェクトとリージョンの設定:グローバルなワークステーションの状態を上書きしないよう、各コマンドに
--project={project_id}と--region={region}を直接指定することを推奨します。または、デフォルト(例:us-central1)を設定する前に、ユーザーから明示的な確認を得てください。gcloud config set project {project_id} gcloud config set compute/region {region} - 課金と API の有効化:プロジェクトに有効な課金アカウントが関連付けられており、Compute Engine API が有効になっていることを確認してください。
gcloud services enable compute.googleapis.com --project={project_id} - Cloud SDK と認証:Google Cloud CLI がインストールされていることを確認してください(明示的なユーザーの承認なしに、ホストへのインストールやコンポーネントの変更を行うコマンド(
apt-get、パイプで渡すシェルインストーラースクリプト、gcloud components install betaなど)を実行しないでください。代わりにインストールガイドを案内してください)。その後、gcloud auth login(対話型 CLI の場合)、gcloud auth application-default login(SDK の場合)、またはGOOGLE_APPLICATION_CREDENTIALS(サービスアカウントの場合)で認証してください。 - IAM 権限:最小権限の原則に従って、
roles/compute.viewer(またはcompute.advice.capacity権限を含むカスタムロール)を付与してください。 - 料金とロケーション:容量アドバイスの照会は無料ですが、プロビジョニングされた Spot VM には変動する Spot 料金が発生します。Compute Engine の料金、利用可能なリージョンとゾーン、Google Cloud のロケーションを確認してください(ドキュメント URL をユーザーに提示する際は、
.md.txtの接尾辞を削除してください)。
コマンド構文とリファレンス
gcloud beta compute advice capacity を使用して容量アドバイスを照会します。
gcloud beta compute advice capacity \
--project={project_id} \
--region={region} \
--provisioning-model=SPOT \
--size={vm_count} \
--target-distribution-shape={target_shape} \
(--instance-selection-machine-types={machine_types} | --instance-selection="name={selection_name},machine-type={machine_type_1},machine-type={machine_type_2}") \
[--zones={zone_1},{zone_2}]
フラグのリファレンスと CLI の制約
フラグの定義については、gcloud beta compute advice capacity のリファレンスドキュメントを参照してください。コマンドを作成する際は、次の分かりにくい CLI の制約に従ってください。
--regionと--zones:--zonesを指定すると、--regionは自動的に推測されます。--sizeの範囲:クエリあたり 1~1000 台の VM を指定できます。--target-distribution-shape:ゾーン間の配置設定として必須です(any-single-zone、any、またはbalanced)。- インスタンスの選択と未対応のフラグ:リクエスト全体で、単一の
--instance-selection-machine-typesフラグ、単一の--instance-selectionフラグ(gcloudコマンドあたり--instance-selectionフラグは 1 つのみ指定できます)、または--instance-flexibility-policy(名前付き選択肢を最大10個)を使用して、マシンタイプを最大5種類指定できます。CLI では--max-run-duration、--accelerator-topology、rank、min-cpu-platform、minCpuPlatform、またはdisksを指定しないでください。
出力の解釈:スコアと推奨事項
このコマンドは、配置シャードと評価スコアを含む 1 つ以上の推奨事項を返します(リージョン内に、要求されたマシンシリーズをサポートする候補ゾーンがない場合は {} が返されます。リージョン全体で在庫切れの場合でも、obtainability: 0.1 および estimatedUptime: 60s を含む推奨事項が返されます)。次の出力例を参照してください。
# Example output
recommendations:
- scores:
obtainability: 0.9
estimatedUptime: 3600s
shards:
- instanceCount: 100
machineType: n2-standard-32
provisioningModel: SPOT
zone: https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a
スコア評価基準
scores.obtainability(0.0~1.0 の値で、0.9、0.5、0.1 などの離散的な区分で出力されます)と scores.estimatedUptime(3600s、600s、または 60s)の詳しい定義については、Spot VM の可用性を表示するを参照してください。obtainability >= 0.7 は取得可能性が高い、0.4~0.69 は取得可能性が中程度(柔軟なマシンタイプまたは複数ゾーンへの配置を使用)、< 0.4 は在庫切れのリスクが高い(全バッチを直ちにデプロイすることは推奨せず、以下のアーキテクチャ上の緩和策を適用)と判断してください。scores.estimatedUptime はプリエンプションまでの最小予想実行時間として解釈してください。3600s(60 分。フォールトトレラントなバッチワークロードに適しています)、600s(10 分。短いタスクまたは頻繁なチェックポイントが必要な場合にのみ適しています)、60s(1 分。プリエンプションのリスクが高いため、別のロケーション、マシンタイプ、またはプロビジョニングモデルを確認してください)です。
アーキテクチャ上の緩和策とベストプラクティス
容量が制約されている場合(obtainability が < 0.4、またはリージョンでマシンシリーズが利用できないため {} が返された場合):
- ディストリビューション範囲を広げる:
--target-distribution-shape=any-single-zoneから--target-distribution-shape=any(またはbalanced)に切り替えると、Compute Engine はリージョン内の利用可能なすべてのゾーンにインスタンスを分散できます。
- インスタンスの柔軟性を確保する:
- 同じ世代の代替マシンタイプ(例:
n2-standard-32、n2-standard-48)や、別のファミリーのマシンタイプ(例:c2-standard-30、c3-standard-44)を、--instance-selectionまたは--instance-selection-machine-typesを使用して追加します(c4*、n4*、m4*、h4d*、a4*、a3-ultragpu-8gなどの第 4 世代以降のファミリーでは、インスタンスやテンプレートの作成時にpd-*ディスクではなく Hyperdisk ブートボリュームが必要です。新しくリリースされたマシンシリーズについては、gcloud compute machine-types describeまたは公式のマシンファミリーのドキュメントで、対応するディスクタイプを確認してください)。
- 同じ世代の代替マシンタイプ(例:
- リージョンのフォールバック:
- ネットワークレイテンシや料金体系が類似する隣接リージョンを検討します(例:
us-central1からus-east4、us-west1、またはus-east1へのフォールバック)。
- ネットワークレイテンシや料金体系が類似する隣接リージョンを検討します(例:
- アクセラレータ、SKU、ゾーンの制限:
gcloud beta compute advice capacityは、統合アクセラレータ搭載マシンタイプ(g2-standard-*、a2-highgpu-*、a3-highgpu-*、a3-megagpu-*など)を通じて GPU の容量を評価し、デフォルトで AI ゾーンを含みます(ユーザーは、プロジェクトで AI ゾーンが有効になっていることを確認してください)。--accelerator-topologyは渡さず、--instance-selectionはnameとmachine-typeのみに厳密に限定してください(gcloudCLI ではrank、min-cpu-platform、disks、ゲストアクセラレータのフラグを渡さないでください。ゲスト GPU を接続したn1-*VM と、デフォルト以外の Local SSD を持つマシンタイプは、Beta REST API のinstanceFlexibilityPolicy.instanceSelections.{selection_name}でのみサポートされます。その場合、guestAcceleratorsと、Local SSD ディスクごとにtype: SCRATCHエントリを 1 つ指定したdisksを使用します)。- 未対応の Spot SKU、Free Tier、Day-0 の変更不可性:Spot VM は
a4x-*またはベアメタル(*-metal)のマシンタイプをサポートしていません。Spot のe2-microVM は Google Cloud Free Tier の無料利用枠の対象外です。また、既存のSTANDARDVM をset-schedulingでSPOTにその場で変更することはできず、VM の再作成が必要です。 - TPU の利用可能性確認は非対応:
advice.capacityAPI では Cloud TPU の利用可能性を確認できません。TPU の容量計画とカレンダー予約には、compute-future-reservations(gcloud compute advice calendar-mode)を使用してください。
- クォータと余裕容量に関する免責事項:
- 確保可能性スコアが示すのは、物理データセンターの容量であり、プロジェクトに割り当てられたクォータではありません。プロビジョニング前に、リージョンの Spot CPU/GPU クォータを確認してください(
gcloud compute regions describe {region}、gcloud compute project-info describe、または Google Cloud Console の Quotas ページで確認できます)。プロジェクトのクォータが不足した状態でインスタンスを起動しようとすると、物理容量の確保可能性が高くても、実行時に失敗します。
- 確保可能性スコアが示すのは、物理データセンターの容量であり、プロジェクトに割り当てられたクォータではありません。プロビジョニング前に、リージョンの Spot CPU/GPU クォータを確認してください(
- 読み取り専用のアドバイザリ、強化された VM のデフォルト設定、MCP のガードレール:
- 容量に関するアドバイスは、厳密に読み取り専用のアドバイザリツールです。ユーザーから明示的な承認を得ずに、変更を伴うコマンド(
gcloud compute instances createやgcloud compute instances deleteなど)を実行してはいけません。代わりに、コピーして実行できるコマンドを提示してください。 - Spot VM 用の
gcloud compute instances createコマンドを生成する際は、プライベートネットワーク(IAP TCP 転送と組み合わせた--no-address)、最小権限のカスタムサービスアカウント(--service-account)、および--instance-termination-action=DELETE(Spot のプリエンプション後にブートディスクへの課金が継続しないようにするため)を推奨してください。ワークロードの完了後は、一時的な Spot VM を削除するようユーザーに伝えてください(gcloud compute instances delete {vm_name} --zone={zone}は、--quietを渡さない限り対話形式で確認を求めます)。 - Compute Engine MCP の
create_instanceガードレール:実行前に、セッション内の MCPcreate_instanceツールのスキーマを確認してください(新しいバージョンの MCP サーバーで対応が追加されている場合に備えるためです)。現在のスキーマで確認できない限り、MCP のcreate_instanceはprovisioning_modelを省略し(気付かないまま通常料金のSTANDARDVM をプロビジョニングします)、global/networks/defaultをハードコードし、カスタムサービスアカウントを設定できません。必ず代わりにgcloud compute instances create --provisioning-model=SPOTを使用してください。
- 容量に関するアドバイスは、厳密に読み取り専用のアドバイザリツールです。ユーザーから明示的な承認を得ずに、変更を伴うコマンド(