如要在 Confidential VM 中使用 GPU,您必須根據 a3-highgpu-1g 機器類型,使用佈建模式為「現成」或「彈性啟動」的 Confidential VM 執行個體,並使用 Intel TDX。建立 VM 執行個體後,請在連結的 GPU 上啟用機密運算模式。
GPU 配額需求
建立含 GPU 的機密 VM 執行個體前,請確認專案已分配到足夠的GPU 配額。 Google Cloud如要成功建立搭載 GPU 的機密 VM 執行個體,您必須擁有下列配額類型的足夠配額:
要在各個地區建立的 GPU 型號先占配額。
所有地區中各類 GPU 的總數全域配額。
如要申請提高這些 GPU 配額,請參閱「申請搶占型配額」和「申請全域配額」。
要求搶占型配額
如要申請提高區域先占 NVIDIA H100 GPU 配額,請按照下列步驟操作:
前往 Google Cloud 控制台的「Quotas」(配額) 頁面。
在「篩選器」方塊中輸入
PREEMPTIBLE_NVIDIA_H100_GPUS
,然後按下 Enter 鍵或 Return 鍵。在表格的「維度」欄中,找出要提高配額的區域所在列。
在該資料列中,依序點選
「更多動作」和「編輯配額」。在「Quota changes」(配額變更) 窗格的「New value」(新值) 方塊中,輸入所需的 GPU 數量。
按一下 [提交要求]。
要求全域配額
如要申請提高全域配額,請按照下列步驟操作:
前往 Google Cloud 控制台的「Quotas」(配額) 頁面。
在「篩選器」方塊中輸入
GPUS_ALL_REGIONS
,然後按下 Enter 鍵或 Return 鍵。在產生的資料列中,依序按一下
「更多動作」和「編輯配額」。在「Quota changes」(配額變更) 窗格的「New value」(新值) 方塊中,輸入所需的 GPU 數量。
按一下 [提交要求]。
提出配額要求後的影響
如果配額要求獲准,您會收到核准電子郵件。收到電子郵件後,請等待 15 分鐘,然後重新整理「配額」頁面,確認配額是否已更新。如果 15 分鐘後配額仍未更新,請與 Cloud Customer Care 聯絡。
如果配額要求遭拒,您可能會收到電子郵件,說明可採取的後續步驟。如要重新申請提高配額,請按照電子郵件中的指示操作。
建立搭載 GPU 的機密 VM 執行個體
如要使用 Spot 或彈性啟動模式建立 VM 執行個體,請按照下列步驟操作:
如要使用 Spot 模式,請建立經過加速器最佳化的Spot VM 執行個體。如需詳細步驟,請參閱「Spot model」。
如要使用彈性啟動模式,請建立代管執行個體群組 (MIG)。詳細步驟請參閱彈性啟動模式。
Spot 模型
gcloud
如要使用 gcloud CLI 建立經過加速器最佳化的 Spot VM 執行個體,請使用 instances create
子指令和 --provisioning-model
標記。
gcloud compute instances create INSTANCE_NAME \
--provisioning-model=SPOT \
--confidential-compute-type=TDX \
--machine-type=a3-highgpu-1g \
--maintenance-policy=TERMINATE \
--zone=ZONE_NAME \
--image-project=IMAGE_PROJECT \
--image-family=IMAGE_FAMILY_NAME \
--boot-disk-size=30G
提供以下這些值:
INSTANCE_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_NAME
:用於建立 VM 的支援區域。
REST
如要建立 Spot VM 執行個體,請傳送下列 POST 要求,並附上適當的內容。
HTTP 方法和網址:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
JSON 要求內文:
{
"name": "INSTANCE_NAME",
"confidentialInstanceConfig": {
"confidentialInstanceType": "TDX"
},
"machineType": "zones/ZONE_NAME/machineTypes/a3-highgpu-1g",
"scheduling": {
"onHostMaintenance": "TERMINATE",
"provisioningModel": "SPOT"
},
"disks": [
{
"autoDelete": true,
"boot": true,
"index": 0,
"initializeParams": {
"diskSizeGb": "30",
"sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME"
},
"kind": "compute#attachedDisk",
"mode": "READ_WRITE",
"type": "PERSISTENT"
}
],
"networkInterfaces": [
{
"accessConfigs": [
{
"name": "external-nat",
"type": "ONE_TO_ONE_NAT",
"kind": "compute#accessConfig",
"networkTier": "PREMIUM"
}
],
"kind": "compute#networkInterface",
"name": "nic0",
"network": "projects/PROJECT_ID/global/networks/default"
}
]
}
提供以下這些值:
INSTANCE_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_NAME
:用於建立 VM 的支援區域。
彈性啟動模式
如要使用彈性啟動模式,請先建立執行個體範本,然後使用該範本建立代管執行個體群組 (MIG)。然後,您可以使用調整大小要求,將 GPU VM 執行個體新增至 MIG。
搭配「彈性啟動」佈建模式使用 MIG 調整大小要求,可提高 GPU VM 執行個體的取得率。詳情請參閱關於 MIG 中的大小調整要求。
事前準備
如要建立 MIG,請參閱必要條件,如要建立 MIG 中的規模調整要求,請參閱限制。
建立含有 GPU VM 執行個體的 MIG
如要建立執行個體範本,然後使用該範本建立 MIG,請完成下列步驟。
建立執行個體範本。
gcloud
gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \ --provisioning-model=FLEX_START \ --confidential-compute-type=TDX \ --machine-type=a3-highgpu-1g \ --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
如要啟用安全啟動,您可以選擇使用
--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
映像檔系列。RUN_DURATION
:您希望要求的 VM 執行個體執行的時間長度。您必須將值格式化為天數、時數、分鐘數或秒數,並分別加上d
、h
、m
和s
。舉例來說,指定30m
代表 30 分鐘,指定1d2h3m4s
代表 1 天 2 小時 3 分 4 秒。值必須介於 10 分鐘至 7 天之間。PROJECT_ID
:選用。要在其中建立 VM 的專案 ID。
REST
如要建立機密 VM 執行個體範本,請傳送下列 POST 要求,並提供適當的主體內容。
HTTP 方法和網址:
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/ZONE_NAME/instanceTemplates
JSON 要求內文:
{ "name": "INSTANCE_TEMPLATE_NAME", "properties": { "confidentialInstanceConfig": { "confidentialInstanceType": "TDX" }, "machineType": "a3-highgpu-1g", "scheduling": { "instanceTerminationAction": "DELETE", "maxRunDuration": { "seconds": RUN_DURATION }, "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
:選用。要在其中建立 VM 的專案 ID。ZONE_NAME
:建立 MIG 的支援區域。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
映像檔系列。RUN_DURATION
:您希望要求的 VM 執行個體執行的時間長度 (以秒為單位)。這個值必須介於600
至604800
秒之間,也就是 10 分鐘到 7 天。
建立 MIG 和大小調整要求,一次新增多個 GPU VM 執行個體。
列出 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。
在 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-driver-575-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 已啟用機密模式。
瞭解如何查看 GPU 配額。
請參閱「GPU VM 和先占分配配額」,瞭解配額用量。