Para usar GPUs con Confidential VM, debes crear una instancia de Confidential VM con el modelo de aprovisionamiento de inicio flexible o de instancia Spot basado en el tipo de máquina a3-highgpu-1g y usar Intel TDX. Después de crear la instancia de VM, debes habilitar el modo de Confidential Computing en la GPU conectada.
Para crear una instancia de VM con el modelo Spot o de inicio flexible, haz lo siguiente:
Para usar el modelo Spot, crea una instancia de VM Spot optimizada para aceleradores. Para obtener pasos detallados, consulta Modelo de Spot.
Para usar el modelo de inicio flexible, crea un grupo de instancias administrado (MIG). Para ver los pasos detallados, consulta Modelo de inicio flexible.
Modelo de Spot
gcloud
Para crear una instancia de VM Spot optimizada para aceleradores con gcloud CLI, usa el subcomando instances create
con la marca --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
Ingresa los siguientes valores:
VM_NAME
: Es el nombre de la instancia de VM nueva.IMAGE_PROJECT
: Es el proyecto que contiene la imagen del sistema operativo compatible. Recomendamos usar el proyecto de imágenesubuntu-os-cloud
para las imágenes de Ubuntu. De manera opcional, puedes usar el proyecto de imágenesconfidential-vm-images
para las imágenes de Container-Optimized OS.IMAGE_FAMILY_NAME
: Es la familia de la imagen del sistema operativo compatible con Confidential VMs. Cuando uses el proyecto de imagenubuntu-os-cloud
, te recomendamos que uses la familia de imágenesubuntu-2204-lts
. Para las imágenes de Container-Optimized OS del proyectoconfidential-vm-images
, usa la familia de imágenescos-tdx-113-lts
.ZONE
: Es la zona admitida en la que se creará la VM.
REST
Para crear una instancia de VM Spot, envía la siguiente solicitud POST con el contenido del cuerpo adecuado.
El método HTTP y la URL:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
Cuerpo JSON de la solicitud:
{
"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",
}
Ingresa los siguientes valores:
VM_NAME
: Es el nombre de la nueva plantilla de instancias de VM.IMAGE_PROJECT
: Es el proyecto que contiene la imagen del sistema operativo compatible. Recomendamos usar el proyecto de imágenesubuntu-os-cloud
para las imágenes de Ubuntu. De manera opcional, puedes usar el proyecto de imágenesconfidential-vm-images
para las imágenes de Container-Optimized OS.IMAGE_FAMILY_NAME
: Es la familia de la imagen del sistema operativo compatible con Confidential VMs. Cuando uses el proyecto de imagenubuntu-os-cloud
, te recomendamos que uses la familia de imágenesubuntu-2204-lts
. Para las imágenes de Container-Optimized OS del proyectoconfidential-vm-images
, usa la familia de imágenescos-tdx-113-lts
.PROJECT_ID
: Opcional ID del proyecto en el que se creará la VM.ZONE
: Es la zona admitida en la que se creará la VM.
Modelo de inicio flexible
Para usar el modelo de inicio flexible, crea una plantilla de instancias y, luego, crea un MIG con esa plantilla. Luego, puedes agregar instancias de VM con GPU al MIG con solicitudes de cambio de tamaño.
Usar una solicitud de cambio de tamaño del MIG con el modelo de aprovisionamiento de inicio flexible mejora la disponibilidad de las instancias de VM con GPU. Para obtener más información, consulta Información sobre las solicitudes de cambio de tamaño en un MIG.
Antes de comenzar
- A fin de asegurarte de que tienes suficiente cuota de GPU para los recursos que solicitas, verifica tu cuota de GPU.
En el caso de una instancia de VM confidencial con una GPU, solicita una cuota de GPU interrumpible para usar los recursos. Cuando solicitas una cuota de GPU, debes especificar una cuota de los modelos de GPU que quieres crear en cada región, así como indicar la cuota global (
GPUs (all regions)
) con la cantidad total de GPU de todos los tipos en todas las regiones. - Para comprender el consumo de cuotas, consulta VMs de GPU y cuotas de asignación interrumpibles.
- Consulta los requisitos previos para crear un MIG y las limitaciones para crear una solicitud de cambio de tamaño en un MIG.
Crea un MIG con instancias de VM de GPU
Para crear una plantilla de instancias y, luego, usarla para crear un MIG, completa los siguientes pasos.
Crea una plantilla de instancias.
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
Para habilitar el inicio seguro, puedes usar de forma opcional la marca
--shielded-secure-boot
para los inicios de instancias de VM.Ingresa los siguientes valores:
INSTANCE_TEMPLATE_NAME
: Es el nombre de la nueva plantilla de instancias de VM.IMAGE_PROJECT
: Es el proyecto que contiene la imagen del sistema operativo compatible. Recomendamos usar el proyecto de imágenesubuntu-os-cloud
para las imágenes de Ubuntu. De manera opcional, puedes usar el proyecto de imágenesconfidential-vm-images
para las imágenes de Container-Optimized OS.IMAGE_FAMILY_NAME
: Es la familia de la imagen del sistema operativo compatible con Confidential VMs. Cuando uses el proyecto de imagenubuntu-os-cloud
, te recomendamos que uses la familia de imágenesubuntu-2204-lts
. Para las imágenes de Container-Optimized OS del proyectoconfidential-vm-images
, usa la familia de imágenescos-tdx-113-lts
.PROJECT_ID
: Opcional ID del proyecto en el que se creará la VM.
REST
Para crear una plantilla de instancias de Confidential VM, envía la siguiente solicitud POST con el contenido del cuerpo adecuado.
El método HTTP y la URL:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/ZONE_NAME/instanceTemplates
Cuerpo JSON de la solicitud:
{ "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" } } }
Para habilitar el inicio seguro, puedes incluir de forma opcional el siguiente objeto para los inicios de instancias de VM.
"shieldedInstanceConfig": { "enableIntegrityMonitoring": true, "enableSecureBoot": true, "enableVtpm": true }
Ingresa los siguientes valores:
INSTANCE_TEMPLATE_NAME
: Es el nombre de la nueva plantilla de instancias de VM.IMAGE_PROJECT
: Es el proyecto que contiene la imagen del sistema operativo compatible. Recomendamos usar el proyecto de imágenesubuntu-os-cloud
para las imágenes de Ubuntu. De manera opcional, puedes usar el proyecto de imágenesconfidential-vm-images
para las imágenes de Container-Optimized OS.IMAGE_FAMILY_NAME
: Es la familia de la imagen del sistema operativo compatible con Confidential VMs. Cuando uses el proyecto de imagenubuntu-os-cloud
, te recomendamos que uses la familia de imágenesubuntu-2204-lts
. Para las imágenes de Container-Optimized OS del proyectoconfidential-vm-images
, usa la familia de imágenescos-tdx-113-lts
.PROJECT_ID
: Opcional ID del proyecto en el que se creará la VM.ZONE
: Es la zona admitida en la que se creará el MIG.
Crea un MIG y una solicitud de cambio de tamaño para agregar instancias de VM con GPU de una sola vez.
Enumera las instancias presentes en el MIG.
gcloud
gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ --zone=ZONE \ --project=PROJECT_ID
Ingresa los siguientes valores:
INSTANCE_GROUP_NAME
: el nombre del MIGZONE
: Es la zona admitida desde la que se obtendrá una lista de instancias de VM.PROJECT_ID
: Opcional Es el ID del proyecto del que se obtendrá una lista de instancias de VM.
REST
Para enumerar todas las instancias, envía la siguiente solicitud GET.
El método HTTP y la URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
Para limitar la lista de instancias a una zona específica, envía la siguiente solicitud GET.
El método HTTP y la URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/ZONE/instanceTemplates
Ingresa los siguientes valores:
ZONE
: Es la zona admitida desde la que se obtendrá una lista de instancias de VM.PROJECT_ID
: Es el ID del proyecto del que se obtendrá una lista de instancias de VM.
Habilita el modo de Confidential Computing en la GPU
Conéctate a una instancia de VM en el MIG con el comando gcloud compute ssh.
gcloud compute ssh
Actualiza la lista de paquetes y, luego, instala las herramientas y bibliotecas necesarias.
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
Instala los controladores de GPU adecuados en la instancia de VM. Para las instancias de VM con el inicio seguro habilitado, consulta Instala controladores de GPU (VMs con inicio seguro). Recomendamos usar la versión del controlador
nvidia-550-server-open
.Para configurar una comunicación segura entre la GPU y el controlador de GPU, habilita la API de Linux Kernel Crypto (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
Para garantizar una conexión segura del Protocolo de seguridad y el Modelo de datos (SPDM) entre la GPU y el controlador de la GPU, habilita el modo de persistencia.
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
Reinicia la instancia de VM para aplicar la LKCA y la configuración del modo de persistencia.
sudo reboot
(Opcional) Instala los siguientes ejemplos de 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
¿Qué sigue?
- Obtén más información para verificar que el modo confidencial esté habilitado en las GPUs.