Flex Start VM を作成する

このドキュメントでは、フレキシブル スタートの仮想マシン(VM)インスタンスを作成する方法について説明します。Flex Start VM は最大 7 日間実行され、GPU などの需要の高いリソースを割引価格で取得できます。これらの機能により、Flex-start VM は、モデルのファインチューニングやバッチ推論などの短期間のワークロードを実行するための費用対効果の高いソリューションになります。

Flex Start VM の主な特性(作成時に適用する要件と制限事項など)の詳細については、Flex Start VM についてをご覧ください。

始める前に

  • 使用するマシンタイプに基づいて、次のいずれかの構成要件を確認します。

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

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. Google Cloud CLI をインストールします。 インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。

      gcloud init

      外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

    2. Set a default region and zone.

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールします。 インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。

      gcloud init

      外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

    詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

必要なロール

フレキシブル スタート VM の作成に必要な権限を取得するには、プロジェクトに対する Compute インスタンス管理者(v1) roles/compute.instanceAdmin.v1)IAM ロールを付与するよう管理者に依頼します。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

この事前定義ロールには、フレキシブル スタート VM の作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

フレキシブル スタート VM を作成するには、次の権限が必要です。

  • プロジェクトに対する compute.instances.create
  • カスタム イメージを使用して VM を作成する: イメージに対する compute.images.useReadOnly
  • スナップショットを使用して VM を作成する: スナップショットに対する compute.snapshots.useReadOnly
  • インスタンス テンプレートを使用して VM を作成する: インスタンス テンプレートに対する compute.instanceTemplates.useReadOnly
  • VM のサブネットを指定する: プロジェクトまたは選択したサブネットに対する compute.subnetworks.use
  • VM の静的 IP アドレスを指定する: プロジェクトに対する compute.addresses.use
  • VPC ネットワークの使用時に VM に外部 IP アドレスを割り当てる: プロジェクトまたは選択したサブネットに対する compute.subnetworks.useExternalIp
  • VM にレガシー ネットワークを割り当てる: プロジェクトに対する compute.networks.use
  • レガシー ネットワークを使用する際に VM に外部 IP アドレスを割り当てる: プロジェクトに対する compute.networks.useExternalIp
  • VM の VM インスタンス メタデータを設定する: プロジェクトに対する compute.instances.setMetadata
  • VM にタグを設定する: VM に対する compute.instances.setTags
  • VM にラベルを設定する: VM に対する compute.instances.setLabels
  • VM が使用するサービス アカウントを設定する: VM に対する compute.instances.setServiceAccount
  • VM 用の新しいディスクを作成する: プロジェクトに対する compute.disks.create
  • 既存のディスクを読み取り専用モードまたは読み取り / 書き込みモードでアタッチする: ディスクに対する compute.disks.use
  • 既存のディスクを読み取り専用モードでアタッチする: ディスクに対する compute.disks.useReadOnly

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

Flex Start VM を作成する

フレックススタート VM を作成するには、次のいずれかのオプションを選択します。

gcloud

フレキシブル スタート VM を作成するには、次のフラグを指定して gcloud compute instances create コマンドを使用します。

  • --request-valid-for-duration フラグ。

  • --provisioning-model=FLEX_START フラグ。

  • --instance-termination-action フラグ。

  • --max-run-duration フラグ。

  • --maintenance-policy=TERMINATE フラグ。

  • --reservation-affinity=none フラグ。

Flex-start VM を作成するには、次のコマンドを実行します。

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --zone=ZONE \
    --request-valid-for-duration=VALID_FOR_DURATION \
    --provisioning-model=FLEX_START \
    --instance-termination-action=TERMINATION_ACTION \
    --max-run-duration=RUN_DURATION \
    --maintenance-policy=TERMINATE \
    --reservation-affinity=none

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

  • VM_NAME: 新しい VM の名前。

  • MACHINE_TYPE: フレックススタート VM に使用するマシンタイプ。G2 または N1 マシンタイプを指定する場合は、次の点を考慮してください。

    • G2 マシンタイプでは、グラフィックを多用するワークロードに使用する NVIDIA RTX 仮想ワークステーション(vWS)を必要に応じて指定できます。これを行うには、次のようにコマンドに --accelerator フラグを含めます。

      --accelerator=count=VWS_ACCELERATOR_COUNT,type=nvidia-l4-vws
      

      VWS_ACCELERATOR_COUNT は、ワークロードに必要な NVIDIA RTX vWS の数に置き換えます。

    • N1 マシンタイプの場合は、VM にアタッチする GPU の数とタイプを指定する必要があります。それ以外の場合、VM の作成は失敗します。N1 VM に GPU を接続するには、コマンドに --accelerator フラグを指定します。

      --accelerator=count=NUMBER_OF_ACCELERATORS,type=ACCELERATOR_TYPE
      

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

  • ZONE: VM を作成するゾーン。指定したマシンタイプが VM を作成するゾーンで使用可能であることを確認するには、使用可能なリージョンとゾーンをご覧ください。

  • VALID_FOR_DURATION: リクエストされたリソースのプロビジョニングを待つ最大時間。数値と単位(smhd)を組み合わせて指定します。たとえば、30m は 30 分、1h2m3s は 1 時間 2 分 3 秒を表します。ワークロードのゾーン要件に基づいて、VM 作成リクエストが成功する可能性を高めるために、次のいずれかの期間を指定することをおすすめします。

    • ワークロードで特定のゾーンに VM を作成する必要がある場合は、90 秒(90s)から 2 時間(2h)の期間を指定します。期間が長いほど、リソースを取得できる可能性が高くなります。

    • VM がリージョン内の任意のゾーンで実行できる場合は、期間を 0 秒(0s)に指定します。この値は、リソースがすぐに使用可能な場合にのみ Compute Engine がリソースを割り当てることを指定します。リソースが使用できないため作成リクエストが失敗した場合は、別のゾーンでリクエストを再試行します。

  • TERMINATION_ACTION: 実行期間の終了時に VM を停止するか削除するか。次のいずれかの値を指定します。

    • VM を停止するには: STOP

    • VM を削除するには: DELETE

  • RUN_DURATION: Compute Engine が VM を削除するまでの VM の最大実行時間。数値の後に単位(smhd)を付けた形式で指定します。値は 10 分から 7 日の間で指定する必要があります。

REST

フレックス スタート VM を作成するには、instances.insert メソッドPOST リクエストを送信します。リクエスト本文で、次のフィールドを指定します。

  • params.requestValidForDuration フィールド。

  • FLEX_START に設定した scheduling.provisioningModel フィールド。

  • scheduling.instanceTerminationAction フィールド。

  • scheduling.maxRunDuration フィールド。

  • TERMINATE に設定した scheduling.onHostMaintenance フィールド。

  • NO_RESERVATION に設定された reservationAffinity.consumeReservationType

フレキシブル スタート VM を作成するには、次のように POST リクエストを送信します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "params": {
    "requestValidForDuration": {
      "seconds": VALID_FOR_DURATION
    }
  },
  "scheduling": {
    "provisioningModel": "FLEX_START",
    "instanceTerminationAction": "TERMINATION_ACTION",
    "maxRunDuration": {
      "seconds": RUN_DURATION
    },
    "onHostMaintenance": "TERMINATE"
  },
  "reservationAffinity": {
    "consumeReservationType": "NO_RESERVATION"
  }
}

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

  • PROJECT_ID: VM を作成するプロジェクトの ID。

  • ZONE: VM を作成するゾーン。VM を作成するゾーンでマシンタイプが使用可能であることを確認するには、利用可能なリージョンとゾーンをご覧ください。

  • VM_NAME: 新しい VM の名前。

  • MACHINE_TYPE: フレックススタート VM に使用するマシンタイプ。G2 または N1 マシンタイプを指定する場合は、次の点を考慮してください。

    • G2 マシンタイプでは、グラフィックを多用するワークロードに使用する NVIDIA RTX 仮想ワークステーション(vWS)を必要に応じて指定できます。そのためには、リクエストの本文に次のように guestAccelerators フィールドを含めます。

      "guestAccelerators": [
        {
          "acceleratorCount": VWS_ACCELERATOR_COUNT,
          "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/nvidia-l4-vws"
        }
      ]
      

      VWS_ACCELERATOR_COUNT は、ワークロードに必要な NVIDIA RTX vWS の数に置き換えます。

    • N1 マシンタイプの場合は、VM にアタッチする GPU の数とタイプを指定する必要があります。それ以外の場合、VM の作成は失敗します。N1 VM に GPU を接続するには、次のようにリクエスト本文に guestAccelerators フィールドを含めます。

      "guestAccelerators": [
        {
          "acceleratorCount": ACCELERATOR_COUNT,
          "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/ACCELERATOR_TYPE"
        }
      ]
      

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

  • IMAGE_PROJECT: イメージを含むイメージ プロジェクト(例: debian-cloud)。サポートされているイメージ プロジェクトの詳細については、公開イメージをご覧ください。

  • IMAGE: 次のいずれかを指定します。

    • OS イメージの特定のバージョン。例: debian-12-bookworm-v20240617

    • イメージ ファミリーfamily/IMAGE_FAMILY の形式にする必要があります。この値は、非推奨ではない最新の OS イメージを使用するように指定します。たとえば、family/debian-12 を指定すると、Debian 12 イメージ ファミリーの最新バージョンが使用されます。イメージ ファミリーの使用の詳細については、イメージ ファミリーのベスト プラクティスをご覧ください。

  • VALID_FOR_DURATION: VM のプロビジョニングを待機する最大時間(秒)。ワークロードのゾーン要件に基づいて、VM 作成リクエストが成功する可能性を高めるために、次のいずれかの期間を指定することをおすすめします。

    • ワークロードで特定のゾーンに VM を作成する必要がある場合は、90 秒(90)から 2 時間(7200)の期間を指定します。期間が長いほど、リソースを取得できる可能性が高くなります。

    • VM がリージョン内の任意のゾーンで実行できる場合は、期間を 0 秒(0)に指定します。この値は、リソースがすぐに使用可能な場合にのみ Compute Engine がリソースを割り当てることを指定します。リソースが使用できないため作成リクエストが失敗した場合は、別のゾーンでリクエストを再試行します。

  • TERMINATION_ACTION: 実行期間の終了時に VM を停止するか削除するか。次のいずれかの値を指定します。

    • VM を停止するには: STOP

    • VM を削除するには: DELETE

  • RUN_DURATION: Compute Engine が VM を削除するまでの VM の最大実行時間(秒単位)。この値は 600 秒(10 分)から 604,800 秒(7 日間)の範囲で指定する必要があります。

次のステップ

使ってみる

Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオで Compute Engine のパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。

Compute Engine の無料トライアル