予約が関連付けられているハードウェア コミットメントを購入する

Compute Engine では、予測可能なワークロードに対してリソースベースの確約利用割引(CUD)が提供されています。GPU またはほとんどのローカル SSD ディスクのコミットメントを購入する場合は、これらのリソースを予約し、予約をコミットメントに関連付ける必要があります。

このドキュメントでは、 Google Cloud コンソール、gcloud CLI、REST を使用して、予約が関連付けられたリソースベースのコミットメントを購入する方法について説明します。

関連付けられた予約の仕組みについては、予約をリソースベースのコミットメントに関連付けるをご覧ください。

予約が関連付けられていない vCPU とメモリのコミットメントを購入するには、予約が関連付けられていないリソースベースのコミットメントを購入するをご覧ください。

始める前に

  • まだ設定していない場合は、認証を設定します。認証では、 Google Cloud サービスと API にアクセスするための ID が確認されます。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. 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 を使用して認証するをご覧ください。

必要なロール

コミットメントの購入と予約の作成に必要な権限を取得するには、プロジェクトに対する Compute 管理者 roles/compute.admin)IAM ロールの付与を管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

この事前定義ロールには、コミットメントの購入と予約の作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

コミットメントを購入して予約を作成するには、次の権限が必要です。

  • compute.commitments.create
  • compute.reservations.create

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

デフォルトでは、プロジェクト オーナーにリソースベースのコミットメントを購入する権限が付与されています。ただし、オーナーが、特定のユーザーを追加または除外するカスタムロールを作成することもできます。リソースベースのコミットメントを購入する権限があるかどうか確認する方法については、アクセス制御をご覧ください。

予約が関連付けられているハードウェア リソースベースのコミットメントを購入する

新しいコミットメントを購入する際、次のいずれかの方法で予約をコミットメントに関連付けることができます。

コミットメントを購入すると、米国およびカナダの太平洋時間(UTC-8 または夏時間の UTC-7)で翌日の午前 0 時にコミットメントが有効になります。Compute Engine では、コミットメントを購入したプロジェクトのリージョンごとに、プロジェクトのリーエンが維持されます。プロジェクトの任意のリージョンに対して新しいコミットメントを購入すると、そのリージョンのリーエンが新しく作成されたコミットメントに関連付けられます。

コミットメントの購入から有効化までの間、コミットメントのステータスは NOT_YET_ACTIVE(Google Cloud コンソールでは PENDING)のままとなります。有効になると、コミットメントのステータスは ACTIVE に変わります。たとえば、米国とカナダの太平洋時間(UTC-8 または UTC-7)の 2024 年 1 月 20 日午後 10 時にコミットメントを購入したとします。Compute Engine は、ステータスが NOT_YET_ACTIVE のコミットメントをすぐに作成します。コミットメントは、2024 年 1 月 21 日午前 0 時(米国およびカナダの太平洋時間(UTC-8 または UTC-7))に ACTIVE になります。

要件

予約が関連付けられたコミットメントを購入する前に、これらの要件を確認し、コミットメントと予約が次の条件を満たしていることを確認してください。

  • コミットメントを購入し、関連付ける予約を同じプロジェクトとリージョンに作成する必要があります。
  • コミットメントを購入し、関連付ける予約を同じマシン ファミリー シリーズのリソースに作成する必要があります。
  • コミットメントで、関連付けられた予約が必要なリソースタイプを指定している場合は、関連付けられた予約の自動削除オプションを無効にする必要があります。予約の関連付けが必要なリソースタイプの詳細を確認する。
  • コミットメントに GPU がある場合、予約とコミットメントに指定された GPU タイプが一致している必要があります。
  • GPU とほとんどのローカル SSD ディスクの場合、各リソースタイプの予約リソースの数は、そのリソースタイプの確約されたリソースの数と正確に一致している必要があります。ただし、C4、C4A、C4D、C4N、G4、H4D、Z3 のマシンタイプで使用するローカル Titanium SSD ディスクをコミットメントで指定する場合は、この要件は適用されません。

    たとえば、4 つの V100 GPU と 2 つのローカル SSD ディスクのコミットメントを購入する場合、コミットメントに関連付ける予約には、合計 4 つの V100 GPU と 2 つのローカル SSD を指定する必要があります。予約する vCPU とメモリの量は、コミットメントよりも少なくまたは多くすることができます。ただし、コミットメントで 4 つの C4A vCPU と 2 つのローカル Titanium SSD ディスクを指定する場合は、コミットメントに予約を関連付ける必要はありません。

  • GPU の場合、使用する特定の GPU タイプのコミットメントを購入します。たとえば、NVIDIA P100 または NVIDIA V100 のいずれかのコミットメントを購入できますが、NVIDIA P100 GPU 用に購入したコミットメントを NVIDIA V100 GPU に使用することはできません。

  • 関連付ける予約が共有予約であり、コミットメントのプロジェクト外で予約を使用するときに該当する CUD を受け取る場合は、次の両方を行う必要があります。

    • コミットメントと同じ Cloud 請求先アカウントに属するプロジェクト間でのみ予約を共有する。
    • その Cloud 請求先アカウントで CUD 共有が有効になっていることを確認します。

既存の予約を関連付ける

コミットメントを購入する際に、 Google Cloud コンソール、Google Cloud CLI、または REST を使用して既存の予約に関連付けることができます。

コンソール

Google Cloud コンソールを使用してコミットメントを購入する前に、コミットメントの購入に使用するプロジェクトを選択します。Cloud 請求先アカウントで CUD の共有が有効になっている場合、その Cloud 請求先アカウントの任意のプロジェクトを使用してコミットメントを購入できます。プロジェクトを選択したら、次の操作を行います。

  1. Google Cloud コンソールで [確約利用割引] ページに移動します。[確約利用割引] ページに移動

  2. [コミットメントを購入] をクリックします。[コミットメントの購入] ページが表示されます。

  3. [名前] フィールドに、コミットメントの名前を入力します。

  4. [リージョン] フィールドで、コミットメントを購入するリージョンを選択します。

  5. [コミットメント タイプ] フィールドで、コミットメントのマシン ファミリー シリーズを選択します。次のコミットメント タイプでは、GPU、ローカル SSD ディスク、またはその両方を使用できます。

    • A2 マシンタイプの場合は、[アクセラレータ最適化 A2] を選択します。
    • A3 Edge および A3 High のマシンタイプの場合は、[アクセラレータ最適化 A3] を選択します。
    • A3 Mega マシンタイプの場合は、[アクセラレータ最適化 A3 Mega] を選択します。
    • G2 マシンタイプの場合は、[グラフィック最適化 G2] を選択します。
    • G4 マシンタイプの場合は、[グラフィック最適化 G4] を選択します。
    • C2 マシンタイプの場合は、[コンピューティング最適化 C2] を選択します。
    • C2D マシンタイプの場合は、[コンピューティング最適化 C2D] を選択します。
    • C3 マシンタイプの場合は、[汎用 C3] を選択します。
    • C3D マシンタイプの場合は、[汎用 C3D] を選択します。
    • C4 マシンタイプの場合は、[汎用 C4] を選択します。
    • C4A マシンタイプの場合は、[汎用 C4A] を選択します。
    • C4D マシンタイプの場合は、[汎用 C4D] を選択します。
    • C4N マシンタイプの場合は、[ネットワーク最適化 C4N] を選択します。
    • N1 マシンタイプの場合は、[汎用 N1] を選択します。
    • N2 マシンタイプの場合は、[汎用 N2] を選択します。
    • N2D マシンタイプの場合は、[汎用 N2D] を選択します。
    • M1 マシンタイプの場合は、[メモリ最適化 M1 / M2] を選択します。
    • M3 マシンタイプの場合は、[メモリ最適化 M3] を選択します。
    • Z3 マシンタイプの場合は、[ストレージ最適化 Z3] を選択します。

  6. 1 つ以上の既存の予約をコミットメントに関連付けるには、次の操作を行います。

    1. [新規または既存の予約をアタッチする] チェックボックスをオンにします。

    2. [既存の予約をアタッチ] をクリックします。[既存の予約を関連付ける] ペインが表示され、プロジェクトの予約が表示されます。このリストは、指定したリージョンとコミットメント タイプに一致するようにフィルタされます。

    3. [既存の予約を関連付ける] ペインで、関連付ける予約のチェックボックスをオンにします。

    4. 選択した予約のリソースの概要を確認し、[関連付け] をクリックします。

    予約を関連付けると、Compute Engine は、関連付けられた予約のリソースの数とタイプに合わせて、[コミットメントの詳細] セクションのフィールドを自動的に入力します。予約を関連付ける前に、[コミットメントの詳細] セクションでリソースの値を手動で入力した場合、その値は予約の値で上書きされます。

  7. [コミットメントの詳細] セクションで、次の操作を行います。

    1. [コア] フィールドで、事前入力された値を確認します。必要に応じて、別の vCPU 数を指定できます。

    2. [メモリ] フィールドで、事前入力されたメモリ容量(GB)を確認します。必要に応じて、別の金額を指定することもできます。メモリは 0.25 GB 単位でのみ指定できます。コミットメントにカスタムメモリ値を指定するには、代わりに gcloud CLI または REST を使用します。

    3. [GPU とローカル SSD] セクションを開き、コミットメントと関連付けられた予約の間でタイプと数が一致していることを確認します。

      1. [GPU のタイプ] フィールドで、事前入力された GPU のタイプを確認します。

      2. [GPU の数] フィールドで、事前に入力された GPU の数を確認します。

      3. [ローカル SSD] フィールドで、事前に入力されたディスクの数を確認します。

      これらのフィールドのいずれかに、関連付けられた予約とは異なる値を手動で指定すると、コミットメントの購入は完了しません。すべての GPU とほとんどのローカル SSD ディスクでは、コミットメントと関連付けられた予約の間で合計数とタイプが一致している必要があります。

  8. [期間] セクションで、次の操作を行います。

    1. コミットメントのプランを指定するには、[1 年] または [3 年] を選択します。プランによって、コミットメントの CUD 割引率と既定の期間が決まります。

    2. [開始日] フィールドを確認します。このフィールドには、コミットメントが有効になる日時が表示されます。このフィールドは、現在の日付の翌日の午前 12 時(米国とカナダの太平洋時間)に自動的に設定されます。

    3. 省略可。コミットメントの期間を、コミットメント プランで定義されている既定の期間を超えて延長するには、[終了日] フィールドで、コミットメントのカスタム終了日を指定します。詳細については、コミットメント期間を延長するをご覧ください。

    4. 省略可。コミットメントの期間の終了時に自動更新する場合は、[コミットメントを自動更新する] チェックボックスをオンにします。

  9. [概要] ペインで、コミットメントの詳細と割り当ての制限を確認します。

  10. コミットメントの購入を完了するには、次の操作を行います。

    1. ページの一番下に移動します。

    2. 料金、割引の対象、利用規約に関する情報が記載されている開示情報セクションを確認します。

    3. コミットメント料金サービス固有の規約に同意する場合は、チェックボックスをオンにします。

    4. [購入] をクリックします。

gcloud

既存の予約を関連付けてコミットメントを購入するには、gcloud compute commitments create コマンドを実行します。コマンドに --existing-reservation フラグを指定して、コミットメントに関連付ける既存の予約を指定します。関連付ける予約ごとに、このフラグの新しいインスタンスを追加します。コミットメントには任意の数の既存の予約を関連付けることができます。

たとえば、2 つの予約をコミットメントに関連付けるには、次のコマンドを実行します。

gcloud compute commitments create COMMITMENT_NAME \
    --region=REGION \
    --project=PROJECT_ID \
    --resources=vcpu=COMMITTED_VCPUS,memory=COMMITTED_MEMORY,local-ssd=COMMITTED_LOCAL_SSD \
    --resources-accelerator=count=COMMITTED_ACCELERATOR_COUNT,type=COMMITTED_ACCELERATOR_TYPE \
    --plan=PLAN \
    --type=COMMITMENT_TYPE \
    --custom-end-time=CUSTOM_END_DATE \
    --existing-reservation=name='RESERVATION_NAME_1',zone='RESERVATION_ZONE_1' \
    --existing-reservation=name='RESERVATION_NAME_2',zone='RESERVATION_ZONE_2'

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

  • COMMITMENT_NAME: コミットメントの名前。
  • REGION: コミットメントのリージョン。
  • PROJECT_ID: 予約が関連付けられているコミットメントを購入するプロジェクトの ID。
  • PLAN: コミットメント プラン。CUD 料金と既定の期間が決まります。12-month または 36-month を指定します。
  • CUSTOM_END_DATE: 省略可。期間のカスタム終了日。形式は YYYY-MM-DD にする必要があります。たとえば、2024 年 4 月 20 日をカスタム終了日として指定するには、2024-04-20 という形式で指定します。
  • COMMITMENT_TYPE: コミットメントのタイプ。次のコミットメントのタイプでは、GPU、ローカル SSD ディスク、またはその両方を使用できます。

    • A2 マシンタイプの場合は、accelerator-optimized を使用します。
    • A3 Edge および A3 High マシンタイプの場合は、accelerator-optimized-a3 を使用します。
    • A3 Mega マシンタイプの場合は、accelerator-optimized-a3-mega を使用します。
    • G2 マシンタイプの場合は、graphics-optimized を使用します。
    • G4 マシンタイプの場合は、graphics-optimized-g4 を使用します。
    • C2 マシンタイプの場合は、compute-optimized を使用します。
    • C2D マシンタイプの場合は、compute-optimized-c2d を使用します
    • C3 マシンタイプの場合は、compute-optimized-c3 を使用します。
    • C3D マシンタイプの場合は、compute-optimized-c3d を使用します。
    • N1 マシンタイプの場合、general-purpose を使用します。
    • C4 マシンタイプの場合は、general-purpose-c4 を使用します。
    • C4A マシンタイプの場合は、general-purpose-c4a を使用します。
    • C4D マシンタイプの場合は、general-purpose-c4d を使用します。
    • C4N マシンタイプの場合は、network-optimized-c4n を使用します
    • N2 マシンタイプの場合は、general-purpose-n2 を使用します。
    • N2D マシンタイプの場合は、general-purpose-n2d を使用します。
    • M1 マシンタイプの場合は、memory-optimized を使用します。
    • M3 マシンタイプの場合は、memory-optimized-m3 を使用します。
    • Z3 マシンタイプの場合は、storage-optimized-z3 を使用します。

  • COMMITTED_VCPUS: コミットメントに必要な vCPU の数。数値には任意の正の整数を指定できます。

  • COMMITTED_MEMORY: コミットメントに必要なメモリの量(MB または GB)。たとえば、10240MB10GB です。gcloud CLI では、メモリを MB または GB で指定できます。単位を指定しない場合、Compute Engine はデフォルトの単位として GB を使用します。ただし、REST を使用する場合、Compute Engine はデフォルトの単位として MB を使用します。

  • COMMITTED_LOCAL_SSD: コミットメントに必要なローカル SSD 容量の容量(GB)。

  • COMMITTED_ACCELERATOR_COUNT: コミットメントで必要な GPU の数。

  • COMMITTED_ACCELERATOR_TYPE: コミットメントに必要な GPU タイプ。

  • RESERVATION_NAME_1RESERVATION_NAME_2: コミットメントに関連付ける既存の予約の名前。

  • RESERVATION_ZONE_1RESERVATION_ZONE_2: コミットメントに関連付ける既存の予約のゾーン。

例: 既存の予約を関連付けてコミットメントを購入する

プロジェクト myprojectus-central1-a ゾーンと us-central1-b ゾーンに、res-01res-02 の 2 つの予約があるとします。これらの予約で 4 個の NVIDIA P100 GPU と 4 個のローカル SSD ディスクの合計容量が指定されているとします。このプロジェクトの us-central1 リージョンでこれらの GPU とローカル SSD ディスクの新しいコミットメントを購入し、これらの既存の予約を関連付けられた予約として使用するには、次のコマンドを実行します。コミットメントでは、96 個の vCPU、624 GB のメモリ、4 個の NVIDIA P100 GPU、1,500 GB のローカル SSD ストレージ(4 個のローカル SSD ディスクに相当)が指定されています。ローカル SSD ストレージの値は GB 単位で指定する必要があります(例: 375GB)。gcloud CLI では、メモリを MB または GB で指定できます。単位を指定しない場合、Compute Engine はデフォルトの単位として GB を使用します。ただし、REST を使用する場合、Compute Engine はデフォルトの単位として MB を使用します。

gcloud compute commitments create commitment-01 \
    --region=us-central1 \
    --project=myproject \
    --resources=vcpu=96,memory=624GB,local-ssd=1500 \
    --resources-accelerator=type=nvidia-tesla-p100,count=4 \
    --plan 12-month \
    --existing-reservation=name=res-01,zone=us-central1-a \
    --existing-reservation=name=res-02,zone=us-central1-b
    

REST

既存の予約を関連付けてコミットメントを購入するには、regionCommitments.insert メソッドPOST リクエストを送信します。リクエストに existingReservations フィールドを含めて、コミットメントに関連付ける既存の予約をカンマ区切りのリストで指定します。コミットメントには任意の数の既存の予約を関連付けることができます。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/commitments

{
  "name": "COMMITMENT_NAME",
  "plan": "PLAN",
  "type": "COMMITMENT_TYPE",
  "resources":
  [
    {
      "amount": "COMMITTED_VCPUS",
      "type": "VCPU"
    },
    {
      "amount": "COMMITTED_MEMORY",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "COMMITTED_ACCELERATOR_TYPE",
      "amount": "COMMITTED_ACCELERATOR_COUNT",
      "type": "ACCELERATOR"
    },
    {
      "amount": "COMMITTED_LOCAL_SSD",
      "type": "LOCAL_SSD"
    }
  ],
  "customEndTimestamp": "CUSTOM_END_DATETEND_TIMEZ",
  "existingReservations": "RESERVATION_URLs"
}

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

  • COMMITMENT_NAME: コミットメントの名前。
  • REGION: コミットメントのリージョン。
  • PROJECT_ID: 予約が関連付けられているコミットメントを購入するプロジェクトの ID。
  • PLAN: コミットメント プラン。CUD 料金と既定の期間が決まります。TWELVE_MONTH または THIRTY_SIX_MONTH を指定します。
  • COMMITMENT_TYPE: コミットメントのタイプ。次のコミットメントのタイプでは、GPU、ローカル SSD ディスク、またはその両方を使用できます。

    • A2 マシンタイプの場合は、ACCELERATOR_OPTIMIZED を使用します。
    • A3 Edge および A3 High マシンタイプの場合は、ACCELERATOR_OPTIMIZED_A3 を使用します。
    • A3 Mega マシンタイプの場合は、ACCELERATOR_OPTIMIZED_A3_MEGA を使用します。
    • G2 マシンタイプの場合は、GRAPHICS_OPTIMIZED を使用します。
    • G4 マシンタイプの場合は、GRAPHICS_OPTIMIZED_G4 を使用します。
    • C2 マシンタイプの場合は、COMPUTE_OPTIMIZED を使用します。
    • C2D マシンタイプの場合は、COMPUTE_OPTIMIZED_C2D を使用します
    • C3 マシンタイプの場合は、COMPUTE_OPTIMIZED_C3 を使用します。
    • C3D マシンタイプの場合は、COMPUTE_OPTIMIZED_C3D を使用します。
    • N1 マシンタイプの場合、GENERAL_PURPOSE を使用します。
    • C4 マシンタイプの場合は、GENERAL_PURPOSE_C4 を使用します。
    • C4A マシンタイプの場合は、GENERAL_PURPOSE_C4A を使用します。
    • C4D マシンタイプの場合は、GENERAL_PURPOSE_C4D を使用します。
    • C4N マシンタイプの場合は、NETWORK_OPTIMIZED_C4N を使用します
    • N2 マシンタイプの場合は、GENERAL_PURPOSE_N2 を使用します。
    • N2D マシンタイプの場合は、GENERAL_PURPOSE_N2D を使用します。
    • M1 マシンタイプの場合は、MEMORY_OPTIMIZED を使用します。
    • M3 マシンタイプの場合は、MEMORY_OPTIMIZED_M3 を使用します。
    • Z3 マシンタイプの場合は、STORAGE_OPTIMIZED_Z3 を使用します。

  • COMMITTED_VCPUS: コミットメントに必要な vCPU の数。数値には任意の正の整数を指定できます。

  • COMMITTED_MEMORY: コミットメントに必要なメモリ容量。REST の場合、Compute Engine はデフォルトの単位として MB を使用します。ただし、gcloud CLI を使用する場合、Compute Engine はデフォルトの単位として GB を使用します。

  • COMMITTED_LOCAL_SSD: コミットメントに必要なローカル SSD ストレージの量(GB)。

  • COMMITTED_ACCELERATOR_COUNT: コミットメントで必要な GPU の数。

  • COMMITTED_ACCELERATOR_TYPE: コミットメントに必要な GPU タイプ。

  • CUSTOM_END_DATE: 省略可。期間のカスタム終了日。形式は YYYY-MM-DD にする必要があります。たとえば、2024 年 4 月 20 日をカスタム終了日として指定するには、2024-04-20 という形式で指定します。

  • END_TIME: 米国とカナダの太平洋時間(UTC-8 または UTC-7)の午前 12 時(協定世界時(UTC)からのオフセット)。この値は、コミットメントのカスタム終了日を指定した場合にのみ指定します。次のいずれかの値を指定します。

    • 夏時間中: 07:00:00
    • それ以外の時間: 08:00:00
  • RESERVATION_URLs: コミットメントに関連付ける既存の予約の URL のカンマ区切りリスト。たとえば、res-1res-2 の 2 つの予約を関連付けるには、次のように指定します。

    "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/example-res-1",
    "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c/reservations/example-res-2"
    

例: 既存の予約を関連付けてコミットメントを購入する

プロジェクト myprojectus-central1-a ゾーンと us-central1-b ゾーンに、res-01res-02 の 2 つの予約があるとします。これらの予約で 4 個の NVIDIA P100 GPU と 4 個のローカル SSD ディスクの合計容量が指定されているとします。このプロジェクトの us-central1 リージョンでこれらの GPU とローカル SSD ディスクの新しいコミットメントを購入し、これらの既存の予約を関連付けられた予約として使用するには、次の POST リクエストを送信します。コミットメントでは、96 個の vCPU、624 GB のメモリ、4 個の NVIDIA P100 GPU、1,500 GB のローカル SSD ストレージが指定されています。ローカル SSD ストレージの値は GB で指定する必要があります。メモリについては、値を MB 単位で指定する必要があります。ただし、gcloud CLI を使用する場合、Compute Engine はメモリのデフォルトの単位として GB を使用します。

POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/commitments

{
  "name": "commitment-01",
  "plan": "TWELVE_MONTH",
  "type": "GENERAL_PURPOSE",
  "resources":
  [
    {
      "amount": "96",
      "type": "VCPU"
    },
    {
      "amount": "638976",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-p100",
      "amount": "4",
      "type": "ACCELERATOR"
    },
    {
      "amount": "1500",
      "type": "LOCAL_SSD"
    }
  ],
  "existingReservations":
  [
    "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/res-01",
    "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-b/reservations/res-02"
  ]
}

関連付ける新しい予約を作成する

コミットメントを購入する際に、 Google Cloud コンソール、Google Cloud CLI、または REST を使用して、関連付ける予約を作成できます。

コンソール

Google Cloud コンソールを使用してコミットメントを購入する前に、コミットメントの購入に使用するプロジェクトを選択します。Cloud 請求先アカウントで CUD の共有が有効になっている場合、その Cloud 請求先アカウントの任意のプロジェクトを使用してコミットメントを購入できます。プロジェクトを選択したら、次の操作を行います。

  1. Google Cloud コンソールで [確約利用割引] ページに移動します。[確約利用割引] ページに移動

  2. [コミットメントを購入] をクリックします。[コミットメントの購入] ページが表示されます。

  3. [名前] フィールドに、コミットメントの名前を入力します。

  4. [リージョン] フィールドで、コミットメントを購入するリージョンを選択します。

  5. [コミットメント タイプ] フィールドで、コミットメントのマシン ファミリー シリーズを選択します。次のコミットメント タイプでは、GPU、ローカル SSD ディスク、またはその両方を使用できます。

    • A2 マシンタイプの場合は、[アクセラレータ最適化 A2] を選択します。
    • A3 Edge および A3 High のマシンタイプの場合は、[アクセラレータ最適化 A3] を選択します。
    • A3 Mega マシンタイプの場合は、[アクセラレータ最適化 A3 Mega] を選択します。
    • G2 マシンタイプの場合は、[グラフィック最適化 G2] を選択します。
    • G4 マシンタイプの場合は、[グラフィック最適化 G4] を選択します。
    • C2 マシンタイプの場合は、[コンピューティング最適化 C2] を選択します。
    • C2D マシンタイプの場合は、[コンピューティング最適化 C2D] を選択します。
    • C3 マシンタイプの場合は、[汎用 C3] を選択します。
    • C3D マシンタイプの場合は、[汎用 C3D] を選択します。
    • C4 マシンタイプの場合は、[汎用 C4] を選択します。
    • C4A マシンタイプの場合は、[汎用 C4A] を選択します。
    • C4D マシンタイプの場合は、[汎用 C4D] を選択します。
    • C4N マシンタイプの場合は、[ネットワーク最適化 C4N] を選択します。
    • N1 マシンタイプの場合は、[汎用 N1] を選択します。
    • N2 マシンタイプの場合は、[汎用 N2] を選択します。
    • N2D マシンタイプの場合は、[汎用 N2D] を選択します。
    • M1 マシンタイプの場合は、[メモリ最適化 M1 / M2] を選択します。
    • M3 マシンタイプの場合は、[メモリ最適化 M3] を選択します。
    • Z3 マシンタイプの場合は、[ストレージ最適化 Z3] を選択します。

  6. 新しい予約を作成してコミットメントに関連付けるには、次の操作を行います。

    1. [新規または既存の予約をアタッチする] チェックボックスをオンにします。

    2. [新しい予約を作成] をクリックします。[新しい予約を作成] ペインが表示されます。

    3. [名前] フィールドに、予約の名前を入力します。

    4. 省略可: [説明] フィールドに説明を入力します。

    5. [ゾーン] フィールドで、予約済みリソースを使用可能にするゾーンを選択します。

    6. [共有タイプ] セクションで、この予約を共有する方法を指定します。

      • 単一プロジェクトの予約を作成するには、[ローカル] を選択します。
      • 複数のプロジェクトで共有される予約を作成するには、[共有] を選択します。[プロジェクトを追加] をクリックし、必要なプロジェクトを選択します。
    7. [Google Cloud Services] セクションで、この予約を Google Kubernetes Engine や Vertex AI などの他のサービスと共有するかどうかを指定します。

    8. [VM インスタンスでの使用] セクションで、VM が予約を消費する方法を選択します。

      • 一致するプロパティを持つ VM がこの予約を自動的に使用できるようにするには、[予約を自動的に使用する] を選択します。
      • 名前で特にターゲットにされている場合にのみ、この予約のリソースを使用するには、[特定の予約を選択する] を選択します。
    9. [リソースの詳細] セクションで、次の操作を行います。

      1. [VM インスタンスの数] フィールドに、VM の数を入力します。

      2. [マシンの構成] セクションで、[マシンタイプ] を選択してプロパティを指定します。リストからマシンタイプを選択するか、[カスタム] を選択してコア数メモリ容量を指定します。

      3. 省略可: GPU を予約する場合は、[GPU を追加] をクリックして、各 VM の GPU タイプGPU の数を指定します。

      4. 省略可: ローカル SSD ディスクを予約する場合は、[ディスク数] と [インターフェース タイプ] を指定します。

      5. 省略可: グループ プレースメント ポリシーを指定する場合は、[グループ プレースメント ポリシー] リストでポリシーを選択または作成します。

    10. この予約のプロパティの指定を完了するには、[作成して関連付ける] をクリックします。

    11. 省略可: 新しい予約を作成して関連付ける場合は、[新しい予約を作成] をもう一度クリックして、上記の手順を繰り返します。

    予約を関連付けると、Compute Engine は、関連付けられた予約のリソースの数とタイプに合わせて、[コミットメントの詳細] セクションのフィールドを自動的に入力します。予約を関連付ける前に、[コミットメントの詳細] セクションでリソースの値を手動で入力した場合、その値は予約の値で上書きされます。

  7. [コミットメントの詳細] セクションで、次の操作を行います。

    1. [コア] フィールドで、事前入力された値を確認します。必要に応じて、別の vCPU 数を指定できます。

    2. [メモリ] フィールドで、事前入力されたメモリ容量(GB)を確認します。必要に応じて、別の金額を指定することもできます。メモリは 0.25 GB 単位でのみ指定できます。コミットメントにカスタムメモリ値を指定するには、代わりに gcloud CLI または REST を使用します。

    3. [GPU とローカル SSD] セクションを開き、コミットメントと関連付けられた予約の間でタイプと数が一致していることを確認します。

      1. [GPU のタイプ] フィールドで、事前入力された GPU のタイプを確認します。

      2. [GPU の数] フィールドで、事前に入力された GPU の数を確認します。

      3. [ローカル SSD] フィールドで、事前に入力されたディスクの数を確認します。

      これらのフィールドのいずれかに、関連付けられた予約とは異なる値を手動で指定すると、コミットメントの購入は完了しません。すべての GPU とほとんどのローカル SSD ディスクでは、コミットメントと関連付けられた予約の間で合計数とタイプが一致している必要があります。

  8. [期間] セクションで、次の操作を行います。

    1. コミットメントのプランを指定するには、[1 年] または [3 年] を選択します。プランによって、コミットメントの CUD 割引率と既定の期間が決まります。

    2. [開始日] フィールドを確認します。このフィールドには、コミットメントが有効になる日時が表示されます。このフィールドは、現在の日付の翌日の午前 12 時(米国とカナダの太平洋時間)に自動的に設定されます。

    3. 省略可。コミットメントの期間を、コミットメント プランで定義されている既定の期間を超えて延長するには、[終了日] フィールドで、コミットメントのカスタム終了日を指定します。詳細については、コミットメント期間を延長するをご覧ください。

    4. 省略可。コミットメントの期間の終了時に自動更新する場合は、[コミットメントを自動更新する] チェックボックスをオンにします。

  9. [概要] ペインで、コミットメントの詳細と割り当ての制限を確認します。

  10. コミットメントの購入を完了するには、次の操作を行います。

    1. ページの一番下に移動します。

    2. 料金、割引の対象、利用規約に関する情報が記載されている開示情報セクションを確認します。

    3. コミットメント料金サービス固有の規約に同意する場合は、チェックボックスをオンにします。

    4. [購入] をクリックします。

gcloud

コミットメントの購入時に関連付ける予約を作成するには、gcloud compute commitments create コマンドを実行します。

単一の予約を関連付けるか複数の予約を関連付けるかに応じて、次のいずれかの方法でコマンドを実行します。

  • 単一の予約を作成してコミットメントに関連付けるには、次のコマンドを実行して、関連付ける予約のプロパティを定義します。

    gcloud compute commitments create COMMITMENT_NAME \
        --region=REGION \
        --project=PROJECT_ID \
        --plan PLAN \
        --type COMMITMENT_TYPE
        --resources=vcpu=COMMITTED_VCPUS,memory=COMMITTED_MEMORY,local-ssd=COMMITTED_LOCAL_SSD \
        --resources-accelerator=count=COMMITTED_ACCELERATOR_COUNT,type=COMMITTED_ACCELERATOR_TYPE \
        --custom-end-time=CUSTOM_END_DATE \
        --reservation=RESERVATION_NAME \
        --reservation-zone=RESERVATION_ZONE \
        --machine-type=RESERVED_MACHINE_TYPE \
        --require-specific-reservation=REQUIRE_SPECIFIC_RESERVATION_VALUE \
        --vm-count=NUMBER_OF_RESERVED_VMs \
        --accelerator=type=RESERVED_ACCELERATOR_TYPE,count=RESERVED_ACCELERATOR_COUNT \
        --local-ssd=interface=INTERFACE_1,size=375 \
        --local-ssd=interface=INTERFACE_2,size=375 \
        --minimum-cpu-platform=MINIMUM_CPU_PLATFORM \
        --share-setting=SHARE_SETTING \
        --share-with=CONSUMER_PROJECT_ID_1,CONSUMER_PROJECT_ID_2
    
  • 複数の予約を作成してコミットメントに関連付けるには、YAML ファイルを使用して予約のプロパティを定義し、コミットメントの購入に使用するコマンドでその YAML ファイルを指定します。必要に応じて、この YAML ファイルを使用して単一の予約を作成し、コミットメントに関連付けることもできます。関連付けられる予約をこの方法で作成する手順は次のとおりです。

    1. 現在のディレクトリに YAML ファイルを作成し、関連付ける予約ごとに必要な構成を指定します。たとえば、GPU、2 つのローカル SSD ディスク、最小 CPU プラットフォームを指定する 2 つのプロジェクトと共有される共有予約の構成を指定するには、YAML ファイルに次のテキストを追加します。

      - reservation: RESERVATION_NAME
        reservation_zone: RESERVATION_ZONE
        require_specific_reservation: REQUIRE_SPECIFIC_RESERVATION_VALUE
        vm_count: NUMBER_OF_RESERVED_VMs
        machine_type: RESERVED_MACHINE_TYPE
        accelerator:
        - count: RESERVED_ACCELERATOR_COUNT
          type: RESERVED_ACCELERATOR_TYPE
        localssd:
        - interface: INTERFACE_1
          size: 375
        - interface: INTERFACE_2
          size: 375
        project: OWNER_PROJECT_ID
        minimum-cpu-platform: MINIMUM_CPU_PLATFORM
        share-setting: SHARE_SETTING
        share-with:
        - CONSUMER_PROJECT_ID_1
        - CONSUMER_PROJECT_ID_2
      
      

      複数の予約の構成を指定するには、作成する予約ごとにこれらのプロパティを繰り返します。コミットメントには、任意の数の既存の予約を追加できます。

    2. --reservation-from-file フラグを指定して gcloud compute commitments create コマンドを実行します。

      gcloud compute commitments create COMMITMENT_NAME \
          --region REGION \
          --project PROJECT_ID \
          --plan PLAN \
          --type COMMITMENT_TYPE \
          --resources=vcpu=COMMITTED_VCPUS,memory=COMMITTED_MEMORY,local-ssd=COMMITTED_LOCAL_SSD \
          --resources-accelerator=count=COMMITTED_ACCELERATOR_COUNT,type=COMMITTED_ACCELERATOR_TYPE \
          --reservations-from-file=YAML_FILE
      

以下は、コミットメントと関連付けられている予約の対応するプロパティに置き換えます。

コミットメント

  • COMMITMENT_NAME: コミットメントの名前。
  • REGION: コミットメントのリージョン。
  • PROJECT_ID: 予約が関連付けられているコミットメントを購入するプロジェクトの ID。
  • PLAN: コミットメント プラン。CUD 料金と既定の期間が決まります。12-month または 36-month を指定します。
  • CUSTOM_END_DATE: 省略可。期間のカスタム終了日。形式は YYYY-MM-DD にする必要があります。たとえば、2024 年 4 月 20 日をカスタム終了日として指定するには、2024-04-20 という形式で指定します。
  • COMMITMENT_TYPE: コミットメントのタイプ。次のコミットメントのタイプでは、GPU、ローカル SSD ディスク、またはその両方を使用できます。

    • A2 マシンタイプの場合は、accelerator-optimized を使用します。
    • A3 Edge および A3 High マシンタイプの場合は、accelerator-optimized-a3 を使用します。
    • A3 Mega マシンタイプの場合は、accelerator-optimized-a3-mega を使用します。
    • G2 マシンタイプの場合は、graphics-optimized を使用します。
    • G4 マシンタイプの場合は、graphics-optimized-g4 を使用します。
    • C2 マシンタイプの場合は、compute-optimized を使用します。
    • C2D マシンタイプの場合は、compute-optimized-c2d を使用します
    • C3 マシンタイプの場合は、compute-optimized-c3 を使用します。
    • C3D マシンタイプの場合は、compute-optimized-c3d を使用します。
    • N1 マシンタイプの場合、general-purpose を使用します。
    • C4 マシンタイプの場合は、general-purpose-c4 を使用します。
    • C4A マシンタイプの場合は、general-purpose-c4a を使用します。
    • C4D マシンタイプの場合は、general-purpose-c4d を使用します。
    • C4N マシンタイプの場合は、network-optimized-c4n を使用します
    • N2 マシンタイプの場合は、general-purpose-n2 を使用します。
    • N2D マシンタイプの場合は、general-purpose-n2d を使用します。
    • M1 マシンタイプの場合は、memory-optimized を使用します。
    • M3 マシンタイプの場合は、memory-optimized-m3 を使用します。
    • Z3 マシンタイプの場合は、storage-optimized-z3 を使用します。

  • COMMITTED_VCPUS: コミットメントに必要な vCPU の数。数値には任意の正の整数を指定できます。

  • COMMITTED_MEMORY: コミットメントに必要なメモリの量(MB または GB)。たとえば、10GB10240MB です。gcloud CLI では、メモリを MB または GB で指定できます。単位を指定しない場合、Compute Engine はデフォルトの単位として GB を使用します。ただし、REST を使用する場合、Compute Engine はデフォルトの単位として MB を使用します。

  • COMMITTED_LOCAL_SSD: ローカル SSD ストレージの容量。GB 単位で指定する必要があります(例: 375GB)。

  • COMMITTED_ACCELERATOR_COUNT: コミットメントで必要な GPU の数。

  • COMMITTED_ACCELERATOR_TYPE: コミットメントに必要な GPU タイプ。

  • YAML_FILE: 関連付けられた予約の構成を含む YAML ファイルのパス。

関連付けられた予約

  • RESERVATION_NAME: 関連付ける予約の名前。
  • RESERVATION_ZONE: 関連付ける予約のゾーン。
  • REQUIRE_SPECIFIC_RESERVATION_VALUE: 関連付ける予約が明示的に対象とする予約かどうかを指定します(true または false)。特定の予約について詳しくは、予約の仕組みをご覧ください。
  • NUMBER_OF_RESERVED_VMS: 関連付ける予約で予約する VM の数。
  • RESERVED_MACHINE_TYPE: 関連付ける予約の VM に必要なマシンタイプ

    • マシンタイプが事前定義の場合は、MACHINE_FAMILY-standard-CPUS の形式を使用します(例: n2-standard-4)。
    • マシンタイプがカスタムの場合は、MACHINE_FAMILY-custom-CPUS-MEMORY の形式を使用します(例: n2-custom-4-5120)。詳しい制限事項については、カスタム マシンタイプの仕様をご覧ください。

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

      • MACHINE_FAMILY: マシンタイプのファミリー。たとえば、N2 VM の場合は n2 を指定します。
      • CPUS: vCPU の数。
      • MEMORY: 予約済み VM の合計メモリ。メモリの量には、256 MB の倍数を MB 単位で指定します。たとえば、4 個の vCPU と 5 GB(5,120 MB)のメモリを搭載した N2 VM を作成するには、n2-custom-4-5120 を使用します。
  • RESERVED_ACCELERATOR_COUNT: 関連付ける予約で VM ごとに追加する GPU の数。

  • RESERVED_ACCELERATOR_TYPE: 関連付ける予約に追加するアクセラレータのタイプ

  • INTERFACE_1INTERFACE_2: 各予約済み VM のローカル SSD ディスクで使用するインターフェースのタイプ。有効なオプションは scsinvme です。追加するローカル SSD ディスクごとに local_ssd パラメータを繰り返します。ローカル SSD ディスクは 24 個まで指定できます。

  • OWNER_PROJECT_ID: 関連付ける予約でコミットメントを購入するプロジェクトの ID。複数のコンシューマー プロジェクトで関連する予約を共有する場合は、このフィールドを指定します。

  • MINIMUM_CPU_PLATFORM: 関連付ける予約に指定する最小 CPU プラットフォーム。

  • SHARE_SETTING: 関連付ける予約の共有タイプ。複数のコンシューマー プロジェクトで関連する予約を共有する場合は、このフィールドに projects の値を指定します。単一プロジェクトの予約を作成する場合は、このフィールドを除外します。

  • CONSUMER_PROJECT_ID_1CONSUMER_PROJECT_ID_2: この予約を共有できるプロジェクトのプロジェクト ID(例: project-1project-2)。最大 100 個のコンシューマー プロジェクトを含めることができます。これらのプロジェクトは、オーナー プロジェクトと同じ組織に存在している必要があります。この予約を作成したプロジェクトの ID は含めないでください。このプロジェクトはデフォルトでこの予約を使用できます。単一プロジェクトの予約を作成する場合は、これらのフィールドを除外します。

Compute Engine は、ターゲット ゾーンで指定されたマシンタイプに十分なリソースがあり、リクエスト時に十分な割り当てがある場合にのみ、コミットメントとそれに関連する予約を作成します。購入が成功すると、次のような成功メッセージが表示されます。

Created[https://www.googleapis.com/compute/v1/projects/your-project/regions/your-region/commitments/your-commitment-name]

次のシナリオとコマンドの例は、コミットメントに関連付ける新しい予約を作成して、GPU、ローカル SSD ディスク、またはその両方のコミットメントを購入する方法を示しています。

例 1: 新しい予約を 1 つだけ関連付けて GPU のコミットメントを購入する

us-central1 リージョンで、96 個の vCPU、624 GB のメモリ、4 個の NVIDIA V100 GPU を含む汎用リソース(または GPU リソース)の 1 年間のコミットメントを購入するとします。これらのコミットされたリソースを使用するために、us-central1-a ゾーンに 2 つの n1-standard-32 VM(各 VM に 32 個の vCPU、120 GB のメモリ、2 個の NVIDIA V100 GPU)を予約する新しい予約 reservation-01 を作成します。予約が関連付けられているこのサンプルのコミットメントを購入するには、次のコマンドを実行します。gcloud CLI では、メモリを MB または GB で指定できます。単位を指定しない場合、Compute Engine はデフォルトの単位として GB を使用します。ただし、REST を使用する場合、Compute Engine はデフォルトの単位として MB を使用します。

gcloud compute commitments create commitment-01 \
    --region=us-central1 \
    --project=myproject \
    --resources=vcpu=96,memory=624GB \
    --resources-accelerator=type=nvidia-tesla-v100,count=4 \
    --plan 12-month \
    --reservation=reservation-01 \
    --reservation-zone=us-central1-a \
    --machine-type=n1-standard-32 \
    --accelerator=type=nvidia-tesla-v100,count=2 \
    --vm-count=2

例 2: vCPU やメモリを指定せずに GPU のコミットメントを購入する

vCPU またはメモリを確約せずに GPU とローカル SSD ディスクを確約して予約するには、vCPU とメモリ量の値として 0 を指定します。たとえば、us-west2 リージョンで 0 個の vCPU、0 GB のメモリ、1 個の NVIDIA P4 GPU を含む GPU リソースの 1 年間のコミットメントを購入するとします。また、us-west2-b ゾーンに新しい予約 reservation-01 を作成し、コミットメントに関連付ける 1 個の n1-standard-2 VM(2 個の vCPU、7.5 GB のメモリ、1 個の NVIDIA P4 GPU を含む)を予約します。予約が関連付けられているこのサンプルのコミットメントを購入するには、次のコマンドを実行します。gcloud CLI では、メモリを MB または GB で指定できます。単位を指定しない場合、Compute Engine はデフォルトの単位として GB を使用します。ただし、REST を使用する場合、Compute Engine はデフォルトの単位として MB を使用します。

gcloud compute commitments create commitment-02 \
    --region=us-west2 \
    --project=myproject \
    --resources=vcpu=0,memory=0 \
    --resources-accelerator=type=nvidia-tesla-p4,count=1 \
    --plan 12-month \
    --reservation=reservation-01 \
    --reservation-zone=us-west2-b \
    --machine-type=n1-standard-2 \
    --accelerator=type=nvidia-tesla-p4,count=1 \
    --vm-count=1

例 3: 複数の新しい予約を関連付けて GPU とローカル SSD ディスクのコミットメントを購入する

us-central1 リージョンで汎用リソース(または GPU とローカル SSD リソース)の 1 年間のコミットメントを購入するとします。96 個の vCPU、624 GB のメモリ、1 個の NVIDIA V100 GPU、750 GB のローカル SSD ストレージ(2 個のローカル SSD ディスクに相当)のコミットメントが必要だとします。また、us-central1-a ゾーンに 2 個の予約を作成して関連付けます。最初の予約 res-01 では、1 台の n1-standard-2 VM(2 個の vCPU、7.5 GB のメモリ、1 個の NVIDIA V100 GPU を使用)を予約します。これはターゲット予約です。2 番目の予約 res-02 では、1 つの n1-standard-8 VM(8 個の vCPU、30 GB のメモリ)を予約し、2 つのローカル SSD ディスク(1 つの SCSI インターフェース、1 つの NVMe インターフェース)をアタッチします。

予約が関連付けられたこのコミットメントの例を購入するには、まず両方の予約のプロパティを含む YAML ファイルを次のように作成します。

- reservation: res-01
  reservation_zone: us-central1-a
  require_specific_reservation: true
  vm_count: 1
  machine_type: n1-standard-2
  accelerator:
  - count: 1
    type: nvidia-tesla-v100
- reservation: res-02
  reservation_zone: us-central1-a
  vm_count: 1
  machine_type: n1-standard-8
  local_ssd:
  - interface: scsi
    size: 375
  - interface: nvme
    size: 375

YAML ファイルを作成したら、次のコマンドを実行して、予約を追加したコミットメントの購入を完了します。ローカル SSD ストレージの値は GB 単位で指定する必要があります(例: 375GB)。gcloud CLI では、メモリを MB または GB で指定できます。単位を指定しない場合、Compute Engine はデフォルトの単位として GB を使用します。ただし、REST を使用する場合、Compute Engine はメモリのデフォルトの単位として MB を使用します。

gcloud compute commitments create commitment-03 \
    --region=us-central1 \
    --project=myproject \
    --resources=vcpu=96,memory=624,local-ssd=750 \
    --resources-accelerator=type=nvidia-tesla-v100,count=1 \
    --plan 12-month \
    --reservations-from-file=YAML_FILE

REST

コミットメントの購入時に関連付ける予約を作成するには、regionCommitments.insert メソッドPOST リクエストを送信します。リクエストに reservations フィールドを含めて、作成して関連付ける新しい予約のリストを定義します。コミットメントには、任意の数の既存の予約を追加できます。

  • すべての VM プロパティを手動で指定して新しい予約を作成するには、instanceProperties フィールドを含め、sourceInstanceTemplate フィールドを除外します。

    たとえば、GPU、2 個のローカル SSD ディスク、最小 CPU プラットフォームの 2 つのプロジェクトと共有される共有予約の構成を手動で指定するには、次のリクエストを行います。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/commitments
    
    {
    "name": "COMMITMENT_NAME",
    "plan": "PLAN",
    "type": "COMMITMENT_TYPE",
    "resources":
    [
      {
        "amount": "COMMITTED_VCPUS",
        "type": "VCPU"
      },
      {
        "amount": "COMMITTED_MEMORY",
        "type": "MEMORY"
      },
      {
        "acceleratorType": "COMMITTED_ACCELERATOR_TYPE",
        "amount": "COMMITTED_ACCELERATOR_COUNT",
        "type": "ACCELERATOR"
      },
      {
        "amount": "COMMITTED_LOCAL_SSD",
        "type": "LOCAL_SSD"
      }
    ],
    "customEndTimestamp": "CUSTOM_END_DATETEND_TIMEZ",
    "reservations":
    [
      {
        "name": "RESERVATION_NAME",
        "specificReservation":
        {
          "count": "NUMBER_OF_RESERVED_VMS",
          "instanceProperties":
          {
            "guestAccelerators":
            [
              {
                "acceleratorCount": "RESERVED_ACCELERATOR_COUNT",
                "acceleratorType": "RESERVED_ACCELERATOR_TYPE"
              }
            ],
            "localSsds":
            [
              {
                "diskSizeGb": "375",
                "interface": "RESERVED_INTERFACE_1"
              },
              {
                "diskSizeGb": "375",
                "interface": "RESERVED_INTERFACE_2"
              }
            ],
            "machineType": "RESERVED_MACHINE_TYPE",
            "minCpuPlatform": "MINIMUM_CPU_PLATFORM"
          }
        },
        "specificReservationRequired": "REQUIRE_SPECIFIC_RESERVATION_VALUE",
        "zone": "RESERVED_ZONE",
        "shareSettings":
        {
          "shareType": "SPECIFIC_PROJECTS",
          "projectMap":
          {
            "CONSUMER_PROJECT_ID_1":
            {
              "projectId": "CONSUMER_PROJECT_ID_1"
            },
            "CONSUMER_PROJECT_ID_2":
            {
              "projectId": "CONSUMER_PROJECT_ID_2"
            }
          }
        }
      }
    ]
    }
    
    
  • インスタンス テンプレートを指定して新しい予約を作成するには、sourceInstanceTemplate フィールドを追加し、instanceProperties フィールドを除外します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/commitments
    
    {
    "name": "COMMITMENT_NAME",
    "plan": "PLAN",
    "type": "COMMITMENT_TYPE",
    "resources":
    [
      {
        "amount": "COMMITTED_VCPUS",
        "type": "VCPU"
      },
      {
        "amount": "COMMITTED_MEMORY",
        "type": "MEMORY"
      },
      {
        "acceleratorType": "COMMITTED_ACCELERATOR_TYPE",
        "amount": "COMMITTED_ACCELERATOR_COUNT",
        "type": "ACCELERATOR"
      },
      {
        "amount": "COMMITTED_LOCAL_SSD",
        "type": "LOCAL_SSD"
      }
    ],
    "customEndTimestamp": "CUSTOM_END_DATETEND_TIMEZ",
    "reservations":
    [
      {
        "name": "RESERVATION_NAME",
        "specificReservation":
        {
          "count": "NUMBER_OF_RESERVED_VMS",
          "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME"
        },
        "specificReservationRequired": "REQUIRE_SPECIFIC_RESERVATION_VALUE",
        "zone": "RESERVED_ZONE",
        "shareSettings":
        {
          "shareType": "SPECIFIC_PROJECTS",
          "projectMap":
          {
            "CONSUMER_PROJECT_ID_1":
            {
              "projectId": "CONSUMER_PROJECT_ID_1"
            },
            "CONSUMER_PROJECT_ID_2":
            {
              "projectId": "CONSUMER_PROJECT_ID_2"
            }
          }
        }
      }
    ]
    }
    
    

以下は、コミットメントと関連付けられている予約の対応するプロパティに置き換えます。

コミットメント

  • COMMITMENT_NAME: コミットメントの名前。
  • REGION: コミットメントのリージョン。
  • PROJECT_ID: 予約が関連付けられているコミットメントを購入するプロジェクトの ID。
  • PLAN: コミットメント プラン。CUD 料金と既定の期間が決まります。TWELVE_MONTH または THIRTY_SIX_MONTH を指定します。
  • COMMITMENT_TYPE: コミットメントのタイプ。次のコミットメントのタイプでは、GPU、ローカル SSD ディスク、またはその両方を使用できます。

    • A2 マシンタイプの場合は、ACCELERATOR_OPTIMIZED を使用します。
    • A3 Edge および A3 High マシンタイプの場合は、ACCELERATOR_OPTIMIZED_A3 を使用します。
    • A3 Mega マシンタイプの場合は、ACCELERATOR_OPTIMIZED_A3_MEGA を使用します。
    • G2 マシンタイプの場合は、GRAPHICS_OPTIMIZED を使用します。
    • G4 マシンタイプの場合は、GRAPHICS_OPTIMIZED_G4 を使用します。
    • C2 マシンタイプの場合は、COMPUTE_OPTIMIZED を使用します。
    • C2D マシンタイプの場合は、COMPUTE_OPTIMIZED_C2D を使用します
    • C3 マシンタイプの場合は、COMPUTE_OPTIMIZED_C3 を使用します。
    • C3D マシンタイプの場合は、COMPUTE_OPTIMIZED_C3D を使用します。
    • N1 マシンタイプの場合、GENERAL_PURPOSE を使用します。
    • C4 マシンタイプの場合は、GENERAL_PURPOSE_C4 を使用します。
    • C4A マシンタイプの場合は、GENERAL_PURPOSE_C4A を使用します。
    • C4D マシンタイプの場合は、GENERAL_PURPOSE_C4D を使用します。
    • C4N マシンタイプの場合は、NETWORK_OPTIMIZED_C4N を使用します
    • N2 マシンタイプの場合は、GENERAL_PURPOSE_N2 を使用します。
    • N2D マシンタイプの場合は、GENERAL_PURPOSE_N2D を使用します。
    • M1 マシンタイプの場合は、MEMORY_OPTIMIZED を使用します。
    • M3 マシンタイプの場合は、MEMORY_OPTIMIZED_M3 を使用します。
    • Z3 マシンタイプの場合は、STORAGE_OPTIMIZED_Z3 を使用します。

  • COMMITTED_VCPUS: コミットメントに必要な vCPU の数。数値には任意の正の整数を指定できます。

  • COMMITTED_MEMORY: コミットメントに必要なメモリ容量。REST の場合、Compute Engine はデフォルトの単位として MB を使用します。ただし、gcloud CLI を使用する場合、Compute Engine はデフォルトの単位として GB を使用します。

  • COMMITTED_LOCAL_SSD: コミットメントに必要なローカル SSD ストレージの量(GB)。

  • COMMITTED_ACCELERATOR_COUNT: コミットメントで必要な GPU の数。

  • COMMITTED_ACCELERATOR_TYPE: コミットメントに必要な GPU タイプ。

  • CUSTOM_END_DATE: 省略可。期間のカスタム終了日。形式は YYYY-MM-DD にする必要があります。たとえば、2024 年 4 月 20 日をカスタム終了日として指定するには、2024-04-20 という形式で指定します。

  • END_TIME: 米国とカナダの太平洋時間(UTC-8 または UTC-7)の午前 12 時(協定世界時(UTC)からのオフセット)。この値は、コミットメントのカスタム終了日を指定した場合にのみ指定します。次のいずれかの値を指定します。

    • 夏時間中: 07:00:00
    • それ以外の時間: 08:00:00

関連付けられた予約

  • RESERVATION_NAME: 関連付ける予約の名前。
  • RESERVATION_ZONE: 関連付ける予約のゾーン。
  • REQUIRE_SPECIFIC_RESERVATION_VALUE: 関連付ける予約が明示的に対象とする予約かどうかを指定します(true または false)。特定の予約について詳しくは、予約の仕組みをご覧ください。
  • NUMBER_OF_RESERVED_VMS: 関連付ける予約で予約する VM の数。
  • RESERVED_MACHINE_TYPE: 関連付ける予約の VM に必要なマシンタイプ

    • マシンタイプが事前定義の場合は、MACHINE_FAMILY-standard-CPUS の形式を使用します(例: n2-standard-4)。
    • マシンタイプがカスタムの場合は、MACHINE_FAMILY-custom-CPUS-MEMORY の形式を使用します(例: n2-custom-4-5120)。詳しい制限事項については、カスタム マシンタイプの仕様をご覧ください。

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

      • MACHINE_FAMILY: マシンタイプのファミリー。たとえば、N2 VM の場合は n2 を指定します。
      • CPUS: vCPU の数。
      • MEMORY: 予約済み VM の合計メモリ。メモリの量には、256 MB の倍数を MB 単位で指定します。たとえば、4 個の vCPU と 5 GB(5,120 MB)のメモリを搭載した N2 VM を作成するには、n2-custom-4-5120 を使用します。
  • RESERVED_ACCELERATOR_COUNT: 関連付ける予約で VM ごとに追加する GPU の数。

  • RESERVED_ACCELERATOR_TYPE: 関連付ける予約に追加するアクセラレータのタイプ

  • INTERFACE_1INTERFACE_2: 各予約済み VM のローカル SSD ディスクで使用するインターフェースのタイプ。有効なオプションは scsinvme です。追加するローカル SSD ディスクごとに localSsds パラメータを繰り返します。ローカル SSD ディスクは 24 個まで指定できます。

  • MINIMUM_CPU_PLATFORM: 関連付ける予約に指定する最小 CPU プラットフォーム。

  • INSTANCE_TEMPLATE_NAME: 使用するインスタンス テンプレートのバージョン

  • SHARE_SETTING: 関連付ける予約の共有タイプ。複数のコンシューマー プロジェクトで関連する予約を共有する場合は、このフィールドに SPECIFIC_PROJECTS の値を指定します。単一プロジェクトの予約を作成する場合は、このフィールドを除外します。

  • CONSUMER_PROJECT_ID_1CONSUMER_PROJECT_ID_2: この予約を共有できるプロジェクトのプロジェクト ID(例: project-1project-2)。最大 100 個のコンシューマー プロジェクトを含めることができます。これらのプロジェクトは、オーナー プロジェクトと同じ組織に存在している必要があります。この予約を作成したプロジェクトの ID は含めないでください。このプロジェクトはデフォルトでこの予約を使用できます。単一プロジェクトの予約を作成する場合は、これらのフィールドを除外します。

Compute Engine は、ターゲット ゾーンで指定されたマシンタイプに十分なリソースがあり、リクエスト時に十分な割り当てがある場合にのみ、コミットメントとそれに関連する予約を作成します。購入が正常に完了すると、Compute Engine は REST API リクエストに対して 200 ステータスを返します。

次のシナリオとコマンドの例は、コミットメントに関連付ける新しい予約を作成して、GPU、ローカル SSD ディスク、またはその両方のコミットメントを購入する方法を示しています。

例 1: 新しい予約を 1 つだけ関連付けて GPU のコミットメントを購入する

us-central1 リージョンで、96 個の vCPU、624 GB のメモリ(638,976 MB 相当)、4 個の NVIDIA V100 GPU を含む汎用リソースの 1 年間のコミットメントを購入するとします。us-central1-a ゾーンに新しい予約 reservation-01 を作成し、そのコミットメントに関連付ける 2 つの n1-standard-8 VM(各 VM には 8 個の vCPU、30 GB のメモリ、2 個の NVIDIA V100 GPU が搭載されています)を予約します。この例のコミットメントとそれに関連付けられた予約を購入するには、次の POST リクエストを行います。REST の場合は、メモリを MB 単位で指定する必要があります。ただし、gcloud CLI を使用する場合、Compute Engine はデフォルトの単位として GB を使用します。

POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/commitments

{
  "name": "commitment-01",
  "plan": "TWELVE_MONTH",
  "type": "GENERAL_PURPOSE",
  "resources":
  [
    {
      "amount": "96",
      "type": "VCPU"
    },
    {
      "amount": "638976",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-v100",
      "amount": "4",
      "type": "ACCELERATOR"
    }
  ],
  "reservations":
  [
    {
      "name": "reservation-01",
      "specificReservation":
      {
        "count": "2",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 2,
              "acceleratorType": "nvidia-tesla-v100"
            }
          ],
          "machineType": "n1-standard-8"
        }
      },
      "specificReservationRequired": false,
      "zone": "us-central1-a"
    }
  ]
}

例 2: vCPU やメモリを指定せずに GPU のコミットメントを購入する

vCPU またはメモリを確約せずに GPU とローカル SSD ディスクを確約して予約するには、vCPU とメモリ量の値として 0 を指定します。たとえば、us-west2 リージョンの GPU リソースのみの 1 年間のコミットメントを購入するとします。このコミットメントには、0 個の vCPU、0 MB のメモリ、4 個の NVIDIA P4 GPU が含まれます。また、コミットメントに関連付ける 1 つの n1-standard-2 VM(2 個の vCPU、7.5 GB のメモリ、4 個の NVIDIA P4 GPU を含む)を予約する新しい予約 reservation-01us-west2-b ゾーンに作成します。この例のコミットメントとそれに関連付けられた予約を購入するには、次の POST リクエストを行います。REST の場合、メモリは MB 単位で指定する必要があります。ただし、gcloud CLI を使用する場合、Compute Engine はデフォルトの単位として GB を使用します。

POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-west2/commitments

{
  "name": "commitment-02",
  "plan": "TWELVE_MONTH",
  "type": "GENERAL_PURPOSE",
  "resources":
  [
    {
      "amount": "0",
      "type": "VCPU"
    },
    {
      "amount": "0",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-p4",
      "amount": "4",
      "type": "ACCELERATOR"
    }
  ],
  "reservations":
  [
    {
      "name": "reservation-01",
      "specificReservation":
      {
        "count": "1",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 4,
              "acceleratorType": "nvidia-tesla-p4"
            }
          ],
          "machineType": "n1-standard-2"
        }
      },
      "specificReservationRequired": false,
      "zone": "us-west2-b"
    }
  ]
}

例 3: 複数の新しい予約を関連付けて GPU とローカル SSD ディスクのコミットメントを購入する

us-central1 リージョンで汎用リソースの 1 年間のコミットメントを購入するとします。このコミットメントには、96 個の vCPU、624 GB のメモリ(638,976 MB に相当)、1 個の NVIDIA V100 GPU、750 GB のローカル SSD ストレージが含まれています。また、us-central1-a ゾーンに 2 個の予約を作成して関連付けます。最初の予約 res-01 では、1 台の n1-standard-2 VM(2 個の vCPU、7.5 GB のメモリ、1 個の NVIDIA V100 GPU を使用)を予約します。これはターゲット予約です。2 番目の予約 res-02 では、1 つの n1-standard-8 VM(8 個の vCPU、30 GB のメモリ)を予約し、2 つのローカル SSD ディスク(1 つの SCSI インターフェース、1 つの NVMe インターフェース)をアタッチします。関連付ける予約とこのコミットメントの例を購入するには、次の POST リクエストを行います。ローカル SSD ストレージの値は GB で指定する必要があります。メモリについては、値を MB 単位で指定する必要があります。ただし、gcloud CLI を使用する場合、Compute Engine はメモリのデフォルトの単位として GB を使用します。

POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/commitments

{
  "name": "commitment-03",
  "plan": "TWELVE_MONTH",
  "type": "GENERAL_PURPOSE",
  "resources":
  [
    {
      "amount": "96",
      "type": "VCPU"
    },
    {
      "amount": "638976",
      "type": "MEMORY"
    },
    {
      "acceleratorType": "nvidia-tesla-v100",
      "amount": "1",
      "type": "ACCELERATOR"
    },
    {
      "amount": "750",
      "type": "LOCAL_SSD"
    }
  ],
  "reservations":
  [
    {
      "name": "res-01",
      "specificReservation":
      {
        "count": "1",
        "instanceProperties":
        {
          "guestAccelerators":
          [
            {
              "acceleratorCount": 1,
              "acceleratorType": "nvidia-tesla-v100"
            }
          ],
          "machineType": "n1-standard-2"
        }
      },
      "specificReservationRequired": true,
      "zone": "us-central1-a"
    },
    {
      "name": "res-02",
      "specificReservation":
      {
        "count": "1",
        "instanceProperties":
        {
          "localSsds":
          [
            {
              "diskSizeGb": "375",
              "interface": "SCSI"
            },
            {
              "diskSizeGb": "375",
              "interface": "NVME"
            }
          ],
          "machineType": "n1-standard-8"
        }
      },
      "specificReservationRequired": false,
      "zone": "us-central1-a"
    }
  ]
}