如要在 Confidential VM 中使用 GPU,您必須根據 a3-highgpu-1g 機器類型,使用現成或彈性啟動佈建模式建立 Confidential VM 執行個體,並使用 Intel TDX。建立 VM 執行個體後,請在連結的 GPU 上啟用機密運算模式。
如要使用 Spot 或彈性啟動模式建立 VM 執行個體,請完成下列步驟:
如要使用 Spot 模式,請建立經過加速器最佳化的Spot VM 執行個體。如需詳細步驟,請參閱「Spot 模型」。
如要使用彈性啟動模式,請建立代管執行個體群組 (MIG)。詳細步驟請參閱彈性啟動模式。
Spot 模型
gcloud
如要使用 gcloud CLI 建立經過加速器最佳化的 Spot VM 執行個體,請使用 instances create
子指令和 --provisioning-model
標記。
gcloud compute instances create VM_NAME \
--provisioning-model=SPOT \
--image-family=IMAGE_FAMILY_NAME \
--image-project=IMAGE_PROJECT \
--machine-type=a3-highgpu-1g \
--zone=ZONE \
--maintenance-policy=TERMINATE \
--boot-disk-size=30G \
--confidential-compute-type=TDX
提供以下這些值:
VM_NAME
:新 VM 執行個體的名稱。IMAGE_PROJECT
:包含支援作業系統映像檔的專案。建議使用 Ubuntu 映像檔的ubuntu-os-cloud
映像檔專案。您可以選擇使用 Container-Optimized OS 映像檔的confidential-vm-images
映像檔專案。IMAGE_FAMILY_NAME
:支援機密 VM 的作業系統映像檔系列。使用ubuntu-os-cloud
映像檔專案時,建議使用ubuntu-2204-lts
映像檔系列。如要使用confidential-vm-images
專案的 Container-Optimized OS 映像檔,請使用cos-tdx-113-lts
映像檔系列。ZONE
:用於建立 VM 的支援區域。
REST
如要建立 Spot VM 執行個體,請傳送下列 POST 要求,並附上適當的內容主體。
HTTP 方法和網址:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
JSON 要求內文:
{
"name": "VM_NAME",
"confidentialInstanceConfig": {
"confidentialInstanceType": "TDX"
},
"scheduling": {
"onHostMaintenance": "TERMINATE",
"provisioningModel": "SPOT"
},
"disks": [
{
"type": "PERSISTENT",
"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"
}
}
],
"networkInterfaces": [
{
"name": "nic0",
"network": "projects/PROJECT_ID/global/networks/default",
"accessConfigs": [
{
"name": "external-nat",
"type": "ONE_TO_ONE_NAT",
"kind": "compute#accessConfig",
"networkTier": "PREMIUM"
}
],
"kind": "compute#networkInterface"
}
],
"machineType": "zones/ZONE/machineTypes/a3-highgpu-1g",
}
提供以下這些值:
VM_NAME
:新 VM 執行個體範本的名稱。IMAGE_PROJECT
:包含支援作業系統映像檔的專案。建議使用 Ubuntu 映像檔的ubuntu-os-cloud
映像檔專案。您可以選擇使用 Container-Optimized OS 映像檔的confidential-vm-images
映像檔專案。IMAGE_FAMILY_NAME
:支援機密 VM 的作業系統映像檔系列。使用ubuntu-os-cloud
映像檔專案時,建議使用ubuntu-2204-lts
映像檔系列。如要使用confidential-vm-images
專案的 Container-Optimized OS 映像檔,請使用cos-tdx-113-lts
映像檔系列。PROJECT_ID
:選用。要在其中建立 VM 的專案 ID。ZONE
:用於建立 VM 的支援區域。
彈性啟動模式
如要使用彈性啟動模式,請建立執行個體範本,然後使用該範本建立 MIG。然後使用規模調整要求,將 GPU VM 執行個體新增至 MIG。
搭配使用 MIG 規模調整要求和「彈性啟動」佈建模式,可提高 GPU VM 執行個體的取得率。詳情請參閱關於 MIG 中的大小調整要求。
事前準備
- 如要確保您有足夠的 GPU 配額來使用所要求的資源,請檢查 GPU 配額。如要使用搭載 GPU 的機密 VM 執行個體,請申請先占 GPU 配額。要求 GPU 配額時,您必須為要在各個地區中建立的 GPU 模型要求配額,並依據所有地區中全部類型之 GPU 的總數要求額外的全域配額 (
GPUs (all regions)
)。 - 如要瞭解配額用量,請參閱「GPU VM 和先占分配配額」。
- 如要建立 MIG,請參閱必要條件,如要建立 MIG 中的大小調整要求,請參閱限制。
建立含有 GPU VM 執行個體的 MIG
如要建立執行個體範本,然後使用該範本建立 MIG,請完成下列步驟。
建立執行個體範本。
gcloud
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --machine-type=a3-highgpu-1g \ --image-project=IMAGE_PROJECT \ --image-family=IMAGE_FAMILY_NAME \ --maintenance-policy=TERMINATE \ --reservation-affinity=none \ --boot-disk-size=30G \ --confidential-compute-type=TDX \ --project=PROJECT_ID
如要啟用「安全啟動」,您可以選擇使用
--shielded-secure-boot
旗標啟動 VM 執行個體。提供以下這些值:
INSTANCE_TEMPLATE_NAME
:新 VM 執行個體範本的名稱。IMAGE_PROJECT
:包含支援作業系統映像檔的專案。建議使用 Ubuntu 映像檔的ubuntu-os-cloud
映像檔專案。您可以選擇使用 Container-Optimized OS 映像檔的confidential-vm-images
映像檔專案。IMAGE_FAMILY_NAME
:支援機密 VM 的作業系統映像檔系列。使用ubuntu-os-cloud
映像檔專案時,建議使用ubuntu-2204-lts
映像檔系列。如要使用confidential-vm-images
專案的 Container-Optimized OS 映像檔,請使用cos-tdx-113-lts
映像檔系列。PROJECT_ID
:選用。要在其中建立 VM 的專案 ID。
REST
如要建立機密 VM 執行個體範本,請傳送下列 POST 要求,並提供適當的主體內容。
HTTP 方法和網址:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/ZONE_NAME/instanceTemplates
JSON 要求內文:
{ "name": "INSTANCE_TEMPLATE_NAME", "properties": { "confidentialInstanceConfig": { "confidentialInstanceType": "TDX" }, "scheduling": { "onHostMaintenance": "TERMINATE", "provisioningModel": "STANDARD", "automaticRestart": true, "preemptible": false }, "disks": [ { "type": "PERSISTENT", "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" } } ], "networkInterfaces": [ { "name": "nic0", "network": "projects/PROJECT_ID/global/networks/default", "accessConfigs": [ { "name": "external-nat", "type": "ONE_TO_ONE_NAT", "kind": "compute#accessConfig", "networkTier": "PREMIUM" } ], "kind": "compute#networkInterface" } ], "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" }, "canIpForward": false, "machineType": "a3-highgpu-1g", "metadata": { "fingerprint": "3y_uc6s9Qvs=", "kind": "compute#metadata" } } }
如要啟用安全啟動功能,您可以選擇在 VM 執行個體啟動時加入下列物件。
"shieldedInstanceConfig": { "enableIntegrityMonitoring": true, "enableSecureBoot": true, "enableVtpm": true }
提供以下這些值:
INSTANCE_TEMPLATE_NAME
:新 VM 執行個體範本的名稱。IMAGE_PROJECT
:包含支援作業系統映像檔的專案。建議使用 Ubuntu 映像檔的ubuntu-os-cloud
映像檔專案。您可以選擇使用 Container-Optimized OS 映像檔的confidential-vm-images
映像檔專案。IMAGE_FAMILY_NAME
:支援機密 VM 的作業系統映像檔系列。使用ubuntu-os-cloud
映像檔專案時,建議使用ubuntu-2204-lts
映像檔系列。如要使用confidential-vm-images
專案的 Container-Optimized OS 映像檔,請使用cos-tdx-113-lts
映像檔系列。PROJECT_ID
:選用。要在其中建立 VM 的專案 ID。ZONE
:建立 MIG 的支援區域。
建立 MIG 和大小調整要求,一次新增多個 GPU VM 執行個體。
列出 MIG 中的執行個體。
gcloud
gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ --zone=ZONE \ --project=PROJECT_ID
提供以下這些值:
INSTANCE_GROUP_NAME
:MIG 的名稱。ZONE
:要取得 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/instanceTemplates
提供以下這些值:
ZONE
:要取得 VM 執行個體清單的支援區域。PROJECT_ID
:要從中取得 VM 執行個體清單的專案 ID。
在 GPU 上啟用機密運算模式
使用 gcloud compute ssh 指令連線至 MIG 中的 VM 執行個體。
gcloud compute ssh
更新套件清單,並安裝必要的工具和程式庫。
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
在 VM 執行個體上安裝適當的 GPU 驅動程式。 如要瞭解如何為啟用安全啟動功能的 VM 執行個體安裝 GPU 驅動程式,請參閱這篇文章。建議使用
nvidia-550-server-open
驅動程式版本。如要設定 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
如要確保 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
重新啟動 VM 執行個體,套用 LKCA 和持續性模式設定。
sudo reboot
(選用) 安裝下列 CUDA 範例。
wget -O cuda-samples.tar.gz https://github.com/NVIDIA/cuda-samples/archive/refs/tags/v12.5.tar.gz tar xzvf cuda-samples.tar.gz
後續步驟
- 瞭解如何確認 GPU 已啟用機密模式。