如需将 GPU 与机密虚拟机搭配使用,您必须基于 a3-highgpu-1g 机器类型,使用基于 Spot 或灵活启动的预配模型创建机密虚拟机实例,并使用 Intel TDX。创建虚拟机实例后,您需要在所挂接的 GPU 上启用机密计算模式。
如需使用 Spot 或灵活启动模型创建虚拟机实例,请执行以下操作:
如需使用 Spot 模型,请创建经过加速器优化的 Spot 虚拟机实例。如需了解详细步骤,请参阅现货模型。
如需使用灵活启动模型,请创建托管式实例组 (MIG)。 如需了解详细步骤,请参阅弹性开始模式。
Spot 模型
gcloud
如需使用 gcloud CLI 创建加速器优化的 Spot 虚拟机实例,请使用带有 --provisioning-model
标志的 instances create
子命令。
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
:新虚拟机实例的名称。IMAGE_PROJECT
:包含受支持的操作系统映像的项目。我们建议使用ubuntu-os-cloud
映像项目来创建 Ubuntu 映像。您可以选择使用confidential-vm-images
映像项目来获取 Container-Optimized OS 映像。IMAGE_FAMILY_NAME
:机密虚拟机支持的操作系统映像的系列。 使用ubuntu-os-cloud
映像项目时,我们建议使用ubuntu-2204-lts
映像系列。对于confidential-vm-images
项目中的 Container-Optimized OS 映像,请使用cos-tdx-113-lts
映像系列。ZONE
:要在其中创建虚拟机的支持的可用区。
REST
如需创建 Spot 虚拟机实例,请发送以下 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
:新虚拟机实例模板的名称。IMAGE_PROJECT
:包含受支持的操作系统映像的项目。我们建议使用ubuntu-os-cloud
映像项目来创建 Ubuntu 映像。您可以选择使用confidential-vm-images
映像项目来获取 Container-Optimized OS 映像。IMAGE_FAMILY_NAME
:支持机密虚拟机的操作系统映像的系列。 使用ubuntu-os-cloud
映像项目时,我们建议使用ubuntu-2204-lts
映像系列。对于confidential-vm-images
项目中的 Container-Optimized OS 映像,请使用cos-tdx-113-lts
映像系列。PROJECT_ID
:可选。要在其中创建虚拟机的项目的 ID。ZONE
:要在其中创建虚拟机的支持的可用区。
灵活启动模式
如需使用灵活启动模型,请先创建实例模板,然后使用该模板创建 MIG。然后,您可以使用调整大小请求将 GPU 虚拟机实例添加到 MIG。
将 MIG 调整大小请求与弹性启动预配模型结合使用可提高 GPU 虚拟机实例的获取率。如需了解详情,请参阅关于调整 MIG 中的请求大小。
准备工作
- 为确保您有足够的 GPU 配额可以用于请求的资源,请检查您的 GPU 配额。
对于具有 GPU 的机密虚拟机实例,请申请抢占式 GPU 配额以使用这些资源。申请 GPU 配额时,您必须为要在每个区域中创建的 GPU 型号申请一个配额,并根据所有区域中所有类型的 GPU 总数另外申请一个全球配额 (
GPUs (all regions)
)。 - 如需了解配额用量,请参阅 GPU 虚拟机和抢占式分配配额。
- 查看创建 MIG 的前提条件以及在 MIG 中创建调整大小请求的限制。
创建具有 GPU 虚拟机实例的 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
标志。请提供以下值:
INSTANCE_TEMPLATE_NAME
:新虚拟机实例模板的名称。IMAGE_PROJECT
:包含受支持的操作系统映像的项目。我们建议使用ubuntu-os-cloud
映像项目来创建 Ubuntu 映像。您可以选择使用confidential-vm-images
映像项目来获取 Container-Optimized OS 映像。IMAGE_FAMILY_NAME
:支持机密虚拟机的操作系统映像的系列。 使用ubuntu-os-cloud
映像项目时,我们建议使用ubuntu-2204-lts
映像系列。对于confidential-vm-images
项目中的 Container-Optimized OS 映像,请使用cos-tdx-113-lts
映像系列。PROJECT_ID
:可选。要在其中创建虚拟机的项目的 ID。
REST
如需创建机密虚拟机实例模板,请发送以下 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" } } }
如需启用安全启动,您可以选择性地为虚拟机实例启动添加以下对象。
"shieldedInstanceConfig": { "enableIntegrityMonitoring": true, "enableSecureBoot": true, "enableVtpm": true }
请提供以下值:
INSTANCE_TEMPLATE_NAME
:新虚拟机实例模板的名称。IMAGE_PROJECT
:包含受支持的操作系统映像的项目。我们建议使用ubuntu-os-cloud
映像项目来创建 Ubuntu 映像。您可以选择使用confidential-vm-images
映像项目来获取 Container-Optimized OS 映像。IMAGE_FAMILY_NAME
:机密虚拟机支持的操作系统映像的系列。 使用ubuntu-os-cloud
映像项目时,我们建议使用ubuntu-2204-lts
映像系列。对于confidential-vm-images
项目中的 Container-Optimized OS 映像,请使用cos-tdx-113-lts
映像系列。PROJECT_ID
:可选。要在其中创建虚拟机的项目的 ID。ZONE
:用于创建 MIG 的支持的可用区。
创建 MIG 和调整大小请求,以便一次性添加所有 GPU 虚拟机实例。
列出 MIG 中的实例。
gcloud
gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ --zone=ZONE \ --project=PROJECT_ID
请提供以下值:
INSTANCE_GROUP_NAME
:MIG 的名称。ZONE
:要从中获取虚拟机实例列表的支持的可用区。PROJECT_ID
:可选。要从中获取虚拟机实例列表的项目的 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
:要从中获取虚拟机实例列表的支持的可用区。PROJECT_ID
:要从中获取虚拟机实例列表的项目的 ID。
在 GPU 上启用机密计算模式
使用 gcloud compute ssh 命令连接到 MIG 中的虚拟机实例。
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
在虚拟机实例上安装相应的 GPU 驱动程序。 对于已启用安全启动的虚拟机实例,请参阅安装 GPU 驱动程序(安全启动虚拟机)。 我们建议使用
nvidia-550-server-open
版驱动程序。如需配置 GPU 与 GPU 驱动程序之间的安全通信,请启用 Linux 内核加密 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
重新启动虚拟机实例以应用 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 是否已启用机密模式。