Para usar GPUs con máquinas virtuales confidenciales, debes crear una instancia de máquina virtual confidencial con el modelo de aprovisionamiento de inicio flexible o de instancia de VM esporádica basado en el tipo de máquina a3-highgpu-1g y usar Intel TDX. Después de crear la instancia de VM, habilita el modo de computación confidencial en la GPU conectada.
Requisito de cuota de GPUs
Antes de crear una instancia de VM confidencial con GPU, asegúrate de que tienes suficiente cuota de GPUs asignada a tu proyecto Google Cloud. Para crear una instancia de VM confidencial con GPU, necesitas suficiente cuota de los siguientes tipos:
Cuota interrumpible para los modelos de GPU que quieras crear en cada región.
Cuota global para el número total de GPUs de todos los tipos en todas las regiones.
Para solicitar un aumento de estas cuotas de GPU, consulta Solicitar cuota de instancias de VM preemptivas y Solicitar cuota global.
Solicitar cuota de recursos preemptivos
Para solicitar un aumento de la cuota de GPUs NVIDIA H100 preemptivas regionales, haz lo siguiente:
En la Google Cloud consola, ve a la página Cuotas.
En el cuadro Filtro, escribe
PREEMPTIBLE_NVIDIA_H100_GPUS
y, a continuación, pulsa la tecla Intro o Retorno.En la columna Dimensiones de la tabla, busque la fila de la región cuya cuota quiera aumentar.
En esa fila, haz clic en
Más acciones y, a continuación, en Editar cuota.En el panel Cambios de cuota, introduce el número de GPUs que quieras en el cuadro Valor nuevo.
Haz clic en Enviar solicitud.
Solicitar una cuota global
Para solicitar un aumento de cuota global, haz lo siguiente:
En la Google Cloud consola, ve a la página Cuotas.
En el cuadro Filtro, escribe
GPUS_ALL_REGIONS
y, a continuación, pulsa la tecla Intro o Retorno.En la fila resultante, haz clic en
Más acciones y, a continuación, en Editar cuota.En el panel Cambios de cuota, introduce el número de GPUs que quieras en el cuadro Valor nuevo.
Haz clic en Enviar solicitud.
Qué ocurre después de enviar una solicitud de cuota
Si se aprueba tu solicitud de aumento de cuota, recibirás un correo de confirmación. Espera 15 minutos después de recibir el correo y, a continuación, actualiza la página Cuotas para comprobar la cuota actualizada. Si la cuota sigue sin actualizarse después de 15 minutos, ponte en contacto con Cloud Customer Care.
Si se rechaza tu solicitud de aumento de cuota, es posible que recibas un correo en el que se te expliquen los pasos que puedes seguir. Para volver a solicitar más cuota, sigue las instrucciones que se indican en el correo.
Crear una instancia de VM confidencial con GPU
Para crear una instancia de VM con el modelo de inicio flexible o de Spot, haz lo siguiente:
Para usar el modelo de Spot, crea una instancia de máquina virtual de Spot optimizada para aceleradores. Para ver los pasos detallados, consulta Modelo de spot.
Para usar el modelo de inicio flexible, crea un grupo de instancias gestionado (MIG). Para ver los pasos detallados, consulta el modelo de inicio flexible.
Modelo de Spot
gcloud
Para crear una instancia de máquina virtual Spot optimizada para aceleradores con la CLI de gcloud, usa el subcomando instances create
con la marca --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
Proporciona los siguientes valores:
INSTANCE_NAME
: nombre de la nueva instancia de VM.IMAGE_PROJECT
: el proyecto que contiene la imagen del sistema operativo compatible. Te recomendamos que uses el proyecto de imagenubuntu-os-cloud
para las imágenes de Ubuntu. También puedes usar el proyecto de imagenconfidential-vm-images
para imágenes de Container-Optimized OS.IMAGE_FAMILY_NAME
: la familia de la imagen del sistema operativo compatible con Confidential VM. 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_NAME
: la zona admitida en la que se creará la VM.
REST
Para crear una instancia de máquina virtual de 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": "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"
}
]
}
Proporciona los siguientes valores:
INSTANCE_NAME
: el nombre de la nueva plantilla de instancia de VM.IMAGE_PROJECT
: el proyecto que contiene la imagen del sistema operativo compatible. Te recomendamos que uses el proyecto de imagenubuntu-os-cloud
para las imágenes de Ubuntu. También puedes usar el proyecto de imagenconfidential-vm-images
para imágenes de Container-Optimized OS.IMAGE_FAMILY_NAME
: la familia de la imagen del sistema operativo compatible con Confidential VM. 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. El ID del proyecto en el que se va a crear la VM.ZONE_NAME
: la zona admitida en la que se creará la VM.
Modelo de inicio flexible
Para usar el modelo flex-start, primero debes crear una plantilla de instancia y, a continuación, un grupo de instancias gestionadas (MIG) con esa plantilla. A continuación, puedes añadir instancias de VM con GPU al MIG mediante solicitudes de cambio de tamaño.
Si usas una solicitud de cambio de tamaño de MIG con el modelo de aprovisionamiento de inicio flexible, podrás obtener instancias de VM con GPU más fácilmente. Para obtener más información, consulta Acerca de las solicitudes de cambio de tamaño en un MIG.
Antes de empezar
Consulta los requisitos para crear un MIG y las limitaciones para crear una solicitud de cambio de tamaño en un MIG.
Crear un MIG con instancias de máquina virtual con GPU
Para crear una plantilla de instancia y, después, usarla para crear un MIG, sigue estos pasos.
Crea una plantilla de instancia.
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
Para habilitar Arranque seguro, puedes usar la marca
--shielded-secure-boot
para los arranques de instancias de VM.Proporciona los siguientes valores:
INSTANCE_TEMPLATE_NAME
: nombre de la nueva plantilla de instancia de VM.IMAGE_PROJECT
: el proyecto que contiene la imagen del sistema operativo compatible. Te recomendamos que uses el proyecto de imagenubuntu-os-cloud
para las imágenes de Ubuntu. También puedes usar el proyecto de imagenconfidential-vm-images
para imágenes de Container-Optimized OS.IMAGE_FAMILY_NAME
: la familia de la imagen del sistema operativo compatible con Confidential VM. 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
.RUN_DURATION
: la duración que quieres que se ejecuten las instancias de VM solicitadas. Debes dar formato al valor como el número de días, horas, minutos o segundos seguido ded
,h
,m
ys
, respectivamente. Por ejemplo, especifica30m
para 30 minutos o1d2h3m4s
para un día, dos horas, tres minutos y cuatro segundos. El valor debe estar entre 10 minutos y 7 días.PROJECT_ID
: opcional. El ID del proyecto en el que se va a crear la VM.
REST
Para crear una plantilla de instancia de VM confidencial, 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/beta/projects/PROJECT_ID/regions/ZONE_NAME/instanceTemplates
Cuerpo JSON de la solicitud:
{ "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 } }
Para habilitar el arranque seguro, puedes incluir de forma opcional el siguiente objeto para los arranques de instancias de VM.
"shieldedInstanceConfig": { "enableIntegrityMonitoring": true, "enableSecureBoot": true, "enableVtpm": true }
Proporciona los siguientes valores:
PROJECT_ID
: opcional. El ID del proyecto en el que se va a crear la VM.ZONE_NAME
: la zona admitida en la que se creará el MIG.INSTANCE_TEMPLATE_NAME
: nombre de la nueva plantilla de instancia de VM.IMAGE_PROJECT
: el proyecto que contiene la imagen del sistema operativo compatible. Te recomendamos que uses el proyecto de imagenubuntu-os-cloud
para las imágenes de Ubuntu. También puedes usar el proyecto de imagenconfidential-vm-images
para imágenes de Container-Optimized OS.IMAGE_FAMILY_NAME
: la familia de la imagen del sistema operativo compatible con Confidential VM. 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
.RUN_DURATION
: la duración, en segundos, que quieres que se ejecuten las instancias de VM solicitadas. El valor debe estar comprendido entre600
y604800
segundos, lo que corresponde a un intervalo de entre 10 minutos y 7 días.
Crea un MIG y una solicitud de cambio de tamaño para añadir instancias de máquina virtual con GPU a la vez.
Lista las instancias presentes en el MIG.
gcloud
gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \ --zone=ZONE_NAME \ --project=PROJECT_ID
Proporciona los siguientes valores:
INSTANCE_GROUP_NAME
: el nombre del MIG.ZONE_NAME
: la zona admitida de la que se va a obtener una lista de instancias de VM.PROJECT_ID
: opcional. El ID del proyecto del que se va a obtener 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_NAME/instanceTemplates
Proporciona los siguientes valores:
ZONE_NAME
: la zona admitida de la que se va a obtener una lista de instancias de VM.PROJECT_ID
: ID del proyecto del que se va a obtener una lista de instancias de VM.
Habilitar el modo de computación confidencial en la GPU
Conéctate a una instancia de VM de la MIG mediante el comando gcloud compute ssh.
gcloud compute ssh
Actualiza la lista de paquetes e 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. En el caso de las instancias de VM con el arranque seguro habilitado, consulta Instalar controladores de GPU (VMs con arranque seguro). Te recomendamos que utilices la
nvidia-driver-575-open
versión del controlador.Para configurar una comunicación segura entre la GPU y el controlador de la GPU, habilita la API Crypto del kernel de Linux (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
Habilita el modo de persistencia para establecer una conexión segura de protocolo de seguridad y modelo de datos (SPDM) entre la GPU y el controlador de la GPU.
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 las configuraciones de LKCA y 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
Siguientes pasos
Consulta cómo verificar que el modo Confidencial está habilitado en las GPUs.
Consulta cómo comprobar tu cuota de GPU.
Consulta Cuotas de asignación de máquinas virtuales con GPU y máquinas virtuales interrumpibles para saber cómo se consumen las cuotas.