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

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

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

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

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

    Confidential G4 VM インスタンスで NVIDIA RTX Pro 6000 GPU を使用すると、NVIDIA Confidential Computing ソフトウェアとサービスのライセンス料金が自動的に発生します。詳細については、 GPU を使用した Confidential Computing の料金をご覧ください。

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

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

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

標準(オンデマンド)モデルまたは Spot モデル

gcloud

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

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 フラグを使用します。

次の値を指定します。

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"
    }
  ]
}

次の値を指定します。

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 \
        --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 マシンタイプ。次のいずれかを選択します。

      • a3-highgpu-1g

      • g4-standard-48

    • IMAGE_PROJECT: GPU 用の Confidential VM 対応オペレーティング システム イメージを含むプロジェクト。

    • IMAGE_FAMILY_NAME: 使用する GPU 用の Confidential VM 対応オペレーティング システム イメージのファミリー。

    • RUN_DURATION: リクエストされた VM インスタンスを実行する期間。値は、日数、時間、分、秒の後にそれぞれ d、h、m、s を付けてフォーマットする必要があります。例: 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"
          }
        ],
        "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 マシンタイプ。次のいずれかを選択します。

      • a3-highgpu-1g

      • g4-standard-48

    • RUN_DURATION_IN_SECONDS: リクエストされた VM インスタンスを実行する期間(秒単位)。値は 600 秒から 604800 秒の間で指定する必要があります。

    • IMAGE_PROJECT: GPU 用の Confidential VM 対応オペレーティング システム イメージを含むプロジェクト。

    • IMAGE_FAMILY_NAME: 使用する GPU 用の Confidential VM 対応オペレーティング システム イメージのファミリー。

  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
    

次のステップ