建立具有 GPU 的機密 VM 執行個體

如要在 Confidential VM 執行個體中使用 GPU,您必須使用支援的機型和執行個體���建模型建立 VM 執行個體。建立 VM 執行個體後,請在所連 GPU 上啟用機密運算模式。

搭載 NVIDIA GPU 的 Confidential VM 執行個體適用於下列機器類型:

  • A3 High 機型:搭載 Intel TDX 的 NVIDIA H100 GPU。支援 Spot 和彈性啟動佈建模式。

  • G4 機型:搭載 AMD SEV 的 NVIDIA RTX PRO 6000。支援標準 (隨選)、Spot 和彈性啟動佈建模式,以及預留項目。

    使用搭載 NVIDIA RTX Pro 6000 GPU 的 Confidential G4 VM 執行個體時,系統會自動收取 NVIDIA 機密運算軟體和服務的授權費用。詳情請參閱「GPU 機密運算定價」。

建立具有 GPU 的機密 VM 執行個體前,請確認您有足夠的 GPU 配額。詳情請參閱「配額」。

建立搭載 GPU 的機密 VM 執行個體

如要建立附加 GPU 的機密 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

如要啟用安全啟動,您可以使用 --shielded-secure-boot 旗標啟動 VM 執行個體。

提供以下這些值:

  • INSTANCE_NAME:新 VM 執行個體的名稱。

  • PROVISIONING_MODEL:機型支援的佈建模型。選擇下列其中一個選項:

    • A3 High 機型:適用於 Spot VM 執行個體。SPOT

    • G4 機型:STANDARD適用於標準 (隨選) VM 執行個體,或 SPOT適用於 Spot VM 執行個體。如未指定,這個值預設為 STANDARD。

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY:要使用的機密運算技術類型。選擇下列其中一個選項:

    • A3 High 機型 (a3-highgpu-1g):TDX

    • G4 機型 (g4-standard-48):SEV

  • MACHINE_TYPE_NAME:虛擬機器的機型。選擇下列其中一個選項:

    • a3-highgpu-1g

    • g4-standard-48

  • 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:支援機密 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 方法和網址:

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:虛擬機器的機型。選擇下列其中一項:

    • a3-highgpu-1g

    • g4-standard-48

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY:要使用的機密運算技術類型。選擇下列其中一個選項:

    • 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:支援機密 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。

彈性啟動模式

如要使用彈性啟動模式,請先建立執行個體範本,然後使用該範本建立代管執行個體群組 (MIG)。然後,您可以使用規模調整要求,將 GPU VM 執行個體新增至 MIG。

搭配使用 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:要使用的機密運算技術類型。選擇下列其中一個選項:

      • A3 High 機型 (a3-highgpu-1g):TDX

      • G4 機型 (g4-standard-48):SEV

    • MACHINE_TYPE_NAME:虛擬機器的機型。選擇下列其中一個選項:

      • a3-highgpu-1g

      • g4-standard-48

    • 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:要使用的機密 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 執行個體執行的時間長度。您必須將值格式化為天數、時數、分鐘數或秒數,並分別加上 d、h、m 和 s。例如:6d8h44m。

    • PROJECT_ID:要在其中建立 VM 的專案 ID。

    REST

    如要建立機密 VM 執行個體範本,請傳送下列 POST 要求,並附上適當的主體內容。

    請使用下列 HTTP 方法和網址:

    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:要使用的機密運算技術類型。選擇下列其中一個選項:

      • A3 High 機型 (a3-highgpu-1g):TDX

      • G4 機型 (g4-standard-48):SEV

    • MACHINE_TYPE_NAME:虛擬機器的機型。選擇下列其中一個選項:

      • a3-highgpu-1g

      • g4-standard-48

    • RUN_DURATION_IN_SECONDS:您希望要求的 VM 執行個體執行的時間長度 (以秒為單位)。這個值必須介於 600 至 604800 秒之間。

    • 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:要使用的機密 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 方法和網址:

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

    如要將執行個體清單縮小至特定區域,請傳送下列 GET 要求。

    請使用下列 HTTP 方法和網址:

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

    提供以下這些值:

    • ZONE_NAME:要從中取得 VM 執行個體清單的支援區域。

    • PROJECT_ID:要從中取得 VM 執行個體清單的專案 ID。

搭配機密 VM 執行個體使用預留項目

您可以透過預留項目,確保只有 G4 機型能為 Confidential VM 執行個體提供容量。

如要為 Confidential VM 執行個體使用保留項目,請按照下列步驟操作:

  1. 在支援的可用區中建立標準預留項目。 您可以在建立預留項目時使用 --require-specific-reservation 標記,控管執行個體耗用預留項目的方式。

  2. 建立 Confidential VM 執行個體來使用預留項目。 建立 VM 執行個體時,請加入 --confidential-compute-type=SEV 旗標,將其設為機密 VM 執行個體。這個執行個體如何使用預訂項目,取決於預訂項目的親和性設定。

以下範例說明如何搭配機密 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 上啟用機密運算模式

  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 驅動程式,請參閱這篇文章。建議使用 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 驅動程式之間建立安全的安全性通訊協定和資料模型 (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
    

後續步驟