GPU を使用して Confidential VM インスタンスを作成する

Confidential VM インスタンスで GPU を使用するには、サポートされているマシンタイプとインスタンスのプロビジョニング モデルを使用して VM インスタンスを作成する必要があります。VM インスタンスを作成したら、接続された GPU で Confidential Computing モードを有効にします。

NVIDIA GPU を搭載した Confidential VM インスタンスは、次のマシンタイプで使用できます。

  • A3 High マシンタイプ: Intel TDX を搭載した NVIDIA H100 GPU。スポット プロビジョニング モデルと Flex Start プロビジョニング モデルをサポートします。

  • G4 マシンタイププレビュー): AMD SEV を搭載した NVIDIA RTX PRO 6000。標準(オンデマンド)、スポット、Flex Start のプロビジョニング モデルと予約をサポートします。

GPU を使用して Confidential VM インスタンスを作成する前に、十分な GPU 割り当てがあることを確認してください。詳細については、GPU 割り当ての要件をご覧ください。

GPU を使用して Confidential VM インスタンスを作成する

GPU が接続された Confidential VM インスタンスを作成するには、次のいずれかのプロビジョニング モデルを使用します。

標準(オンデマンド)モデルまたはスポットモデル

gcloud

gcloud CLI を使用してアクセラレータ最適化標準(オンデマンド)または Spot VM インスタンスを作成するには、--provisioning-model フラグを指定して instances create サブコマンドを使用します。

gcloud compute instances create INSTANCE_NAME \
    --provisioning-model=PROVISIONING_MODEL \
    --confidential-compute-type=CONFIDENTIAL_COMPUTING_TECHNOLOGY \
    --machine-type=MACHINE_TYPE_NAME \
    --maintenance-policy=TERMINATE \
    --zone=ZONE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY_NAME \
    --boot-disk-size=30G

セキュアブートを有効にするには、VM インスタンスの起動に --shielded-secure-boot フラグを使用します。

次の値を指定します。

  • INSTANCE_NAME: 新しい VM インスタンスの名前。

  • PROVISIONING_MODEL: マシンタイプでサポートされているプロビジョニング モデル。次のいずれかを選択します。

    • A3 High マシンタイプ: Spot VM インスタンスの場合は SPOT

    • G4 マシンタイププレビュー): 標準(オンデマンド)VM インスタンスの場合は STANDARD、Spot VM インスタンスの場合は SPOT。指定しない場合、この値はデフォルトで STANDARD になります。

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY: 使用する Confidential Computing テクノロジーのタイプ。次のいずれかを選択します。

    • A3 High マシンタイプa3-highgpu-1g): TDX

    • G4 マシンタイプg4-standard-48): SEV

  • MACHINE_TYPE_NAME: VM のマシンタイプ。次のいずれかの方法をお選びください。

  • ZONE_NAME: VM を作成するサポートされているゾーン

  • IMAGE_PROJECT: サポートされているオペレーティング システム イメージを含むプロジェクト。次のいずれかを選択します。

    • A3 High マシンタイプ: Ubuntu イメージの場合は ubuntu-os-cloud、Container-Optimized OS イメージの場合は confidential-vm-images

    • G4 マシンタイププレビュー): Ubuntu イメージの場合は ubuntu-os-cloud、Container-Optimized OS イメージの場合は cos-cloud

  • IMAGE_FAMILY_NAME: Confidential VM でサポートされるオペレーティング システム イメージのファミリー。マシンタイプに基づいてイメージ ファミリーを選択します。

    • A3 High マシンタイプ:

      • Ubuntu イメージ プロジェクトの ubuntu-2204-lts

      • Container-Optimized OS イメージ プロジェクトの cos-tdx-113-lts

    • G4 マシンタイププレビュー):

      • Ubuntu イメージ プロジェクトの ubuntu-2404-lts-amd64

      • Container-Optimized OS イメージ プロジェクトの cos-125-lts

REST

標準(オンデマンド)または Spot VM インスタンスを作成するには、適切な本文コンテンツを含む次の POST リクエストを送信します。

次の HTTP メソッドと URL を使用します。

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

次のリクエスト JSON 本文を使用します。

{
  "name": "INSTANCE_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE_NAME",
  "confidentialInstanceConfig": {
    "confidentialInstanceType": "CONFIDENTIAL_COMPUTING_TECHNOLOGY"
  },
  "scheduling": {
    "onHostMaintenance": "TERMINATE",
    "automaticRestart": true,
    "provisioningModel": "PROVISIONING_MODEL"
  },
  "disks": [
    {
      "boot": true,
      "autoDelete": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY",
        "diskSizeGb": "30"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ]
}

次の値を指定します。

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

  • ZONE: VM を作成するサポートされているゾーン

  • INSTANCE_NAME: 新しい VM インスタンスの名前。

  • MACHINE_TYPE_NAME: VM のマシンタイプ。次のいずれかを選択します。

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY: 使用する Confidential Computing テクノロジーのタイプ。次のいずれかを選択します。

    • A3 High マシンタイプa3-highgpu-1g): TDX

    • G4 マシンタイプg4-standard-48): SEV

  • PROVISIONING_MODEL: マシンシリーズでサポートされているプロビジョニング モデル。次のいずれかを選択します。

    • A3 High マシンタイプ: Spot VM インスタンスの場合は SPOT

    • G4 マシンタイププレビュー): 標準(オンデマンド)VM インスタンスの場合は STANDARD、Spot VM インスタンスの場合は SPOT。指定しない場合、この値はデフォルトで STANDARD になります。

  • IMAGE_PROJECT: サポートされているオペレーティング システム イメージを含むプロジェクト。次のいずれかを選択します。

    • A3 High マシンタイプ: Ubuntu イメージの場合は ubuntu-os-cloud、Container-Optimized OS イメージの場合は confidential-vm-images

    • G4 マシンタイププレビュー): Ubuntu イメージの場合は ubuntu-os-cloud、Container-Optimized OS イメージの場合は cos-cloud

  • IMAGE_FAMILY: Confidential VM でサポートされるオペレーティング システム イメージのファミリー。マシンタイプに基づいてイメージ ファミリーを選択します。

    • A3 High マシンタイプ:

      • Ubuntu イメージ プロジェクトの ubuntu-2204-lts

      • Container-Optimized OS イメージ プロジェクトの cos-tdx-113-lts

    • G4 マシンタイププレビュー):

      • Ubuntu イメージ プロジェクトの ubuntu-2404-lts-amd64

      • Container-Optimized OS イメージ プロジェクトの cos-125-lts

Flex Start モデル

Flex Start モデルを使用するには、まずインスタンス テンプレートを作成し、そのテンプレートを使用してマネージド インスタンス グループ(MIG)を作成します。その後、サイズ変更リクエストを使用して、GPU VM インスタンスを MIG に追加できます。

Flex Start プロビジョニング モデルで MIG サイズ変更リクエストを使用すると、GPU VM インスタンスの取得可能性が向上します。詳細については、MIG のサイズ変更リクエストについてをご覧ください。

始める前に

GPU VM インスタンスを使用して MIG を作成する

インスタンス テンプレートを作成し、そのテンプレートを使用して MIG を作成するには、次の手順を行います。

  1. インスタンス テンプレートを作成します。

    gcloud

    gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \
        --provisioning-model=FLEX_START \
        --confidential-compute-type=CONFIDENTIAL_COMPUTING_TECHNOLOGY \
        --machine-type=MACHINE_TYPE_NAME \
        --maintenance-policy=TERMINATE \
        --image-project=IMAGE_PROJECT \
        --image-family=IMAGE_FAMILY_NAME \
        --reservation-affinity=none \
        --boot-disk-size=30G \
        --instance-termination-action=DELETE \
        --max-run-duration=RUN_DURATION \
        --project=PROJECT_ID
    

    次の値を指定します。

    • INSTANCE_TEMPLATE_NAME: 新しい VM インスタンス テンプレートの名前。

    • CONFIDENTIAL_COMPUTING_TECHNOLOGY: 使用する Confidential Computing テクノロジーのタイプ。次のいずれかを選択します。

      • A3 High マシンタイプa3-highgpu-1g): TDX

      • G4 マシンタイプg4-standard-48): SEV

    • MACHINE_TYPE_NAME: VM のマシンタイプ。次のいずれかを選択します。

    • IMAGE_PROJECT: サポートされているオペレーティング システム イメージを含むプロジェクト。次のいずれかを選択します。

      • A3 High マシンタイプ: Ubuntu イメージの場合は ubuntu-os-cloud、Container-Optimized OS イメージの場合は confidential-vm-images

      • G4 マシンタイププレビュー): Ubuntu イメージの場合は ubuntu-os-cloud、Container-Optimized OS イメージの場合は cos-cloud

    • IMAGE_FAMILY_NAME: 使用する Confidential VM 対応のオペレーティング システム イメージのファミリー。マシンタイプに基づいてイメージ ファミリーを選択します。

      • A3 High マシンタイプ:

        • Ubuntu イメージ プロジェクトの ubuntu-2204-lts

        • Container-Optimized OS イメージ プロジェクトの cos-tdx-113-lts

      • G4 マシンタイププレビュー):

        • Ubuntu イメージ プロジェクトの ubuntu-2404-lts-amd64

        • Container-Optimized OS イメージ プロジェクトの cos-125-lts

    • RUN_DURATION: リクエストされた VM インスタンスを実行する期間。値は、日数、時間、分、秒として指定し、その後にそれぞれ dhms を続ける必要があります。例: 6d8h44m

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

    REST

    Confidential VM インスタンス テンプレートを作成するには、適切な本文コンテンツを含む次の POST リクエストを送信します。

    次の HTTP メソッドと URL を使用します。

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceTemplates
    

    次のリクエスト JSON 本文を使用します。

    {
      "name": "INSTANCE_TEMPLATE_NAME",
      "properties": {
        "confidentialInstanceConfig": {
          "confidentialInstanceType": "CONFIDENTIAL_COMPUTING_TECHNOLOGY"
        },
        "machineType": "MACHINE_TYPE_NAME",
        "scheduling": {
          "instanceTerminationAction": "DELETE",
          "maxRunDuration": {
            "seconds": "RUN_DURATION_IN_SECONDS"
          },
          "automaticRestart": true,
          "onHostMaintenance": "TERMINATE",
          "provisioningModel": "FLEX_START",
          "preemptible": false
        },
        "disks": [
          {
            "autoDelete": true,
            "index": 0,
            "boot": true,
            "kind": "compute#attachedDisk",
            "mode": "READ_WRITE",
            "initializeParams": {
              "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME",
              "diskSizeGb": "30"
            },
            "type": "PERSISTENT"
          }
        ],
        "networkInterfaces": [
          {
            "accessConfigs": [
              {
                "kind": "compute#accessConfig",
                "name": "external-nat",
                "networkTier": "PREMIUM",
                "type": "ONE_TO_ONE_NAT"
              }
            ],
            "kind": "compute#networkInterface",
            "name": "nic0",
            "network": "projects/PROJECT_ID/global/networks/default"
          }
        ],
        "reservationAffinity": {
          "consumeReservationType": "NO_RESERVATION"
        },
        "canIpForward": false
      }
    }
    

    セキュアブートを有効にするには、VM インスタンスの起動に次のオブジェクトを含めます。

    "shieldedInstanceConfig": {
      "enableIntegrityMonitoring": true,
      "enableSecureBoot": true,
      "enableVtpm": true
    }
    

    次の値を指定します。

    • PROJECT_ID: テンプレートを作成するプロジェクトの ID。

    • REGION: テンプレートを作成するリージョン。

    • INSTANCE_TEMPLATE_NAME: 新しい VM インスタンス テンプレートの名前。

    • CONFIDENTIAL_COMPUTING_TECHNOLOGY: 使用する Confidential Computing テクノロジーのタイプ。次のいずれかを選択します。

      • A3 High マシンタイプa3-highgpu-1g): TDX

      • G4 マシンタイプg4-standard-48): SEV

    • MACHINE_TYPE_NAME: VM のマシンタイプ。次のいずれかを選択します。

    • RUN_DURATION_IN_SECONDS: リクエストされた VM インスタンスを実行する期間(秒単位)。値は 600604800 秒の範囲で指定してください。

    • IMAGE_PROJECT: サポートされているオペレーティング システム イメージを含むプロジェクト。次のいずれかを選択します。

      • A3 High マシンタイプ: Ubuntu イメージの場合は ubuntu-os-cloud、Container-Optimized OS イメージの場合は confidential-vm-images

      • G4 マシンタイププレビュー): Ubuntu イメージの場合は ubuntu-os-cloud、Container-Optimized OS イメージの場合は cos-cloud

    • IMAGE_FAMILY_NAME: 使用する Confidential VM 対応のオペレーティング システム イメージのファミリー。マシンタイプに基づいてイメージ ファミリーを選択します。

      • A3 High マシンタイプ:

        • Ubuntu イメージ プロジェクトの ubuntu-2204-lts

        • Container-Optimized OS イメージ プロジェクトの cos-tdx-113-lts

      • G4 マシンタイププレビュー):

        • Ubuntu イメージ プロジェクトの ubuntu-2404-lts-amd64

        • Container-Optimized OS イメージ プロジェクトの cos-125-lts

  2. MIG とサイズ変更リクエストを作成して、GPU VM インスタンスを一度にすべて追加します。

  3. MIG に存在するインスタンスを一覧表示します。

    gcloud

    gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \
        --zone=ZONE_NAME \
        --project=PROJECT_ID
    

    次の値を指定します。

    • INSTANCE_GROUP_NAME: MIG の名前。

    • ZONE_NAME: VM インスタンスのリストを取得するサポートされているゾーン

    • PROJECT_ID: 省略可。VM インスタンスのリストを取得するプロジェクトの ID。

    REST

    すべてのテンプレートを一覧表示するには、次の GET リクエストを送信します。

    次の HTTP メソッドと URL を使用します。

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
    

    インスタンスのリストを特定のゾーンに絞り込むには、次の GET リクエストを送信します。

    次の HTTP メソッドと URL を使用します。

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/ZONE_NAME/instanceTemplates
    

    次の値を指定します。

    • ZONE_NAME: VM インスタンスのリストを取得するサポートされているゾーン

    • PROJECT_ID: VM インスタンスのリストを取得するプロジェクトの ID。

Confidential VM インスタンスで予約を使用する

予約を使用すると、G4 マシンタイプ(プレビュー)でのみ Confidential VM インスタンスの容量を確保できます。

Confidential VM インスタンスの予約を使用するには:

  1. サポートされているゾーンに標準予約を作成します。予約の作成時に --require-specific-reservation フラグを使用すると、インスタンスがこの予約を使用する方法を制御できます。

  2. 予約を使用する Confidential VM インスタンスを作成します。VM インスタンスを作成するときに、--confidential-compute-type=SEV フラグを指定して Confidential VM インスタンスにします。このインスタンスが予約を使用する方法は、予約のアフィニティ設定によって異なります。

次の例は、Confidential VM インスタンスで予約を使用する方法を示しています。予約の使用方法は、予約の作成方法によって異なります。

  • 自動消費: --require-specific-reservation フラグを指定せずに予約を作成した場合、一致するプロパティ(マシンタイプやゾーンなど)を持つ G4 Confidential VM インスタンスを作成して、予約を自動的に使用できます。

  • 特定の使用: --require-specific-reservation フラグを指定して予約を作成した場合は、インスタンスの作成時に --reservation-affinity=specific フラグと --reservation=RESERVATION_NAME フラグを使用して予約をターゲットにする必要があります。

    gcloud compute instances create INSTANCE_NAME \
        --project=PROJECT_ID \
        --zone=ZONE_NAME \
        --machine-type=g4-standard-48 \
        --confidential-compute-type=SEV \
        --image-project=ubuntu-os-cloud \
        --image-family=ubuntu-2404-lts-amd64 \
        --reservation-affinity=specific \
        --reservation=RESERVATION_NAME
    

    次の値を指定します。

    • INSTANCE_NAME: 新しい VM インスタンスの名前。

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

    • ZONE_NAME: VM を作成するサポートされているゾーン

    • RESERVATION_NAME: 予約の名前。

VM インスタンスが予約を消費する方法とアフィニティの仕組みについては、予約を消費するをご覧ください。

GPU で Confidential Computing モードを有効にする

  1. gcloud compute ssh コマンドを使用して、MIG の VM インスタンスに接続します。

    gcloud compute ssh
    
  2. パッケージ リストを更新し、必要なツールとライブラリをインストールします。

    sudo apt-get update --yes
    sudo apt-get install linux-headers-$(uname -r)
    sudo apt install -y build-essential libxml2 libncurses5-dev pkg-config libvulkan1 gcc-12
    
  3. VM インスタンスに適切な GPU ドライバをインストールします。セキュアブートが有効になっている VM インスタンスについては、GPU ドライバをインストールする(セキュアブート VM)をご覧ください。NVIDIA オープン カーネル モジュール ドライバのバージョン 580 以降を使用することをおすすめします。

  4. GPU と GPU ドライバ間の安全な通信を構成するには、Linux Kernel Crypto API(LKCA)を有効にします。

    echo "install nvidia /sbin/modprobe ecdsa_generic; /sbin/modprobe ecdh; /sbin/modprobe --ignore-install nvidia" | sudo tee /etc/modprobe.d/nvidia-lkca.conf
    sudo update-initramfs -u
    
  5. 永続モードを有効にして、GPU と GPU ドライバ間の安全な Security Protocol and Data Model(SPDM)接続を確立します。

    sudo test -f /usr/lib/systemd/system/nvidia-persistenced.service && sudo sed -i "s/no-persistence-mode/uvm-persistence-mode/g" /usr/lib/systemd/system/nvidia-persistenced.service
    sudo systemctl daemon-reload
    
  6. VM インスタンスを再起動して、LKCA と永続モードの構成を適用します。

    sudo reboot
    
  7. gcloud compute ssh コマンドを使用して、MIG の VM インスタンスに接続します。

    gcloud compute ssh
    
  8. (省略可)必要なドライバ バージョンをサポートする CUDA サンプルをインストールします。

    wget -O cuda-samples.tar.gz https://github.com/NVIDIA/cuda-samples/archive/refs/tags/v12.9.tar.gz
    tar xzvf cuda-samples.tar.gz
    

料金

プレビュー期間中は、G4 マシンタイプの Confidential VM インスタンスの追加料金は無料です。これらの料金には、Confidential Computing の追加料金と NVIDIA ライセンス料金が含まれます。基盤となる Compute Engine リソース(G4 マシンタイプ、GPU、ストレージなど)の標準料金は引き続き適用されます。これらの Confidential Computing の追加料金は、プレビュー期間が終了し、一般提供(GA)になった後に適用されます。料金の詳細については、Confidential VMs の料金をご覧ください。

次のステップ