建立具有 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 和彈性啟動佈建模式,以及預留項目

建立搭載 GPU 的 Confidential VM 執行個體前,請確認您有足夠的 GPU 配額。詳情請參閱「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

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

提供以下這些值:

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

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

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

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

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

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

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

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

  • 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-2204-lts 適用於 Ubuntu 映像檔專案。

      • Container-Optimized OS 映像檔專案的 cos-tdx-113-lts

    • G4 機型 (預先發布版):

      • ubuntu-2404-lts-amd64 適用於 Ubuntu 映像檔專案。

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

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

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

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

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

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

    • 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-2204-lts 適用於 Ubuntu 映像檔專案。

      • cos-tdx-113-lts,適用於 Container-Optimized OS 映像檔專案。

    • G4 機型 (預先發布版):

      • ubuntu-2404-lts-amd64 適用於 Ubuntu 映像檔專案。

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

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

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

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

    • 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-2204-lts 適用於 Ubuntu 映像檔專案。

        • cos-tdx-113-lts,適用於 Container-Optimized OS 映像檔專案。

      • G4 機型 (預先發布版):

        • ubuntu-2404-lts-amd64 適用於 Ubuntu 映像檔專案。

        • Container-Optimized OS 映像檔專案的 cos-125-lts

    • RUN_DURATION:您希望要求的 VM 執行個體執行的時間長度。您必須將值格式化為天數、時數、分鐘數或秒數,並分別加上 dhms。例如: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"
          }
        ],
        "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:要使用的機密運算技術類型。選擇下列其中一個選項:

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

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

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

    • 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:要使用的機密 VM 支援的作業系統映像檔系列。根據機型選擇映像檔系列:

      • A3 High 機型

        • ubuntu-2204-lts 適用於 Ubuntu 映像檔專案。

        • cos-tdx-113-lts,適用於 Container-Optimized OS 映像檔專案。

      • G4 機型 (預先發布版):

        • ubuntu-2404-lts-amd64 適用於 Ubuntu 映像檔專案。

        • 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 機型 (搶先版) 的機密 VM 執行個體有容量。

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

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

  2. 建立 Confidential VM 執行個體來使用預留項目。建立 VM 執行個體時,請加入 --confidential-compute-type=SEV 標記,將其設為 Confidential 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 驅動程式 (安全啟動 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 驅動程式之間建立安全的安全性通訊協定和資料模型 (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 機型上機密 VM 執行個體的額外費用將免除。這些費用包括機密運算附加費用和 NVIDIA 授權費。您仍須支付基礎 Compute Engine 資源的標準費用,例如 G4 機器類型、GPU 和儲存空間。預先發布期結束後,機密運算正式推出 (GA) 時,就會開始收取這些額外費用。如要瞭解定價詳情,請參閱「機密 VM 定價」。

後續步驟