Crea una instancia de Confidential VM con GPU

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.

Requisito de cuota de GPU

Antes de crear una instancia de VM confidencial con GPU, asegúrate de tener suficiente cuota de GPU asignada a tu proyecto de Google Cloud. Necesitas suficiente cuota en los siguientes tipos para crear correctamente una instancia de VM confidencial con GPU:

  • Cuota interrumpible para los modelos de GPU que quieres crear en cada región.

  • Es la cuota global para la cantidad total de GPUs de todos los tipos en todas las regiones.

Para solicitar un aumento de estas cuotas de GPU, consulta Solicita cuota interrumpible y Solicita cuota global.

Solicita cuota interrumpible

Para solicitar un aumento de la cuota regional de GPU NVIDIA H100 interrumpibles, haz lo siguiente:

  1. En la consola de Google Cloud , ve a la página Cuotas.

    Ir a Cuotas

  2. En la casilla Filtro, ingresa PREEMPTIBLE_NVIDIA_H100_GPUS y, luego, presiona la tecla Intro o Volver.

  3. En la columna Dimensiones de la tabla, busca la fila con la región cuya cuota deseas aumentar.

  4. En esa fila, haz clic en Más acciones y, luego, en Editar cuota.

  5. En el panel Cambios en la cuota, ingresa la cantidad de GPUs que deseas en el cuadro Valor nuevo.

  6. Haz clic en Enviar solicitud.

Solicita una cuota global

Para solicitar un aumento de la cuota global, haz lo siguiente:

  1. En la consola de Google Cloud , ve a la página Cuotas.

    Ir a Cuotas

  2. En el cuadro Filtro, ingresa GPUS_ALL_REGIONS y, luego, presiona la tecla Intro o Retorno.

  3. En la fila resultante, haz clic en Más acciones y, luego, en Editar cuota.

  4. En el panel Cambios en la cuota, ingresa la cantidad de GPUs que deseas en el cuadro Valor nuevo.

  5. Haz clic en Enviar solicitud.

Qué sucede después de una solicitud de cuota

Si tu solicitud de cuota se aprueba, recibirás un correo electrónico de aprobación. Espera 15 minutos después de recibir el correo electrónico y, luego, actualiza la página Cuotas para verificar la cuota actualizada. Si la cuota aún no se actualizó después de 15 minutos, comunícate con Atención al cliente de Cloud.

Si se rechaza tu solicitud de cuota, es posible que recibas un correo electrónico en el que se expliquen los próximos pasos que puedes seguir. Para volver a solicitar más cuota, sigue las instrucciones que se indican en el correo electrónico.

Crea una instancia de Confidential VM con GPU

Para crear una instancia de VM con el modelo Spot o de inicio flexible, haz lo siguiente:

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 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 

Ingresa los siguientes valores:

  • INSTANCE_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ágenes ubuntu-os-cloud para las imágenes de Ubuntu. De manera opcional, puedes usar el proyecto de imágenes confidential-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 imagen ubuntu-os-cloud, te recomendamos que uses la familia de imágenes ubuntu-2204-lts. Para las imágenes de Container-Optimized OS del proyecto confidential-vm-images, usa la familia de imágenes cos-tdx-113-lts.

  • ZONE_NAME: 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": "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"       }     ]   } 

Ingresa los siguientes valores:

  • INSTANCE_NAME: Es el nombre de la plantilla de instancias de VM nueva.

  • IMAGE_PROJECT: Es el proyecto que contiene la imagen del sistema operativo compatible. Recomendamos usar el proyecto de imágenes ubuntu-os-cloud para las imágenes de Ubuntu. De manera opcional, puedes usar el proyecto de imágenes confidential-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 imagen ubuntu-os-cloud, te recomendamos que uses la familia de imágenes ubuntu-2204-lts. Para las imágenes de Container-Optimized OS del proyecto confidential-vm-images, usa la familia de imágenes cos-tdx-113-lts.

  • PROJECT_ID: Opcional ID del proyecto en el que se creará la VM.

  • ZONE_NAME: Es la zona admitida en la que se creará la VM.

Modelo de inicio flexible

Para usar el modelo de inicio flexible, primero debes crear una plantilla de instancias y, luego, crear un grupo de instancias administrado (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 capacidad de obtener 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

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.

  1. Crea una plantilla de instancias.

    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 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ágenes ubuntu-os-cloud para las imágenes de Ubuntu. De manera opcional, puedes usar el proyecto de imágenes confidential-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 imagen ubuntu-os-cloud, te recomendamos que uses la familia de imágenes ubuntu-2204-lts. Para las imágenes de Container-Optimized OS del proyecto confidential-vm-images, usa la familia de imágenes cos-tdx-113-lts.

    • RUN_DURATION: Es la duración de la que deseas que se ejecuten las instancias de VM solicitadas. Debes darle formato al valor como la cantidad de días, horas, minutos o segundos, seguidos de d, h, m y s, respectivamente. Por ejemplo, especifica 30m para 30 minutos o 1d2h3m4s para un día, dos horas, tres minutos y cuatro segundos. El valor debe ser de entre 10 minutos y siete días.

    • 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/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 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:

    • PROJECT_ID: Opcional ID del proyecto en el que se creará la VM.

    • ZONE_NAME: Es la zona admitida en la que se creará el MIG.

    • 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ágenes ubuntu-os-cloud para las imágenes de Ubuntu. De manera opcional, puedes usar el proyecto de imágenes confidential-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 imagen ubuntu-os-cloud, te recomendamos que uses la familia de imágenes ubuntu-2204-lts. Para las imágenes de Container-Optimized OS del proyecto confidential-vm-images, usa la familia de imágenes cos-tdx-113-lts.

    • RUN_DURATION: Es la duración, en segundos, por la que deseas que se ejecuten las instancias de VM solicitadas. El valor debe estar entre 600 y 604800 segundos, lo que corresponde a un rango de entre 10 minutos y siete días.

  2. Crea un MIG y una solicitud de cambio de tamaño para agregar instancias de VM con GPU de una sola vez.

  3. Enumera las instancias presentes en el MIG.

    gcloud

    gcloud compute instance-groups managed list-instances INSTANCE_GROUP_NAME \     --zone=ZONE_NAME \     --project=PROJECT_ID 

    Ingresa los siguientes valores:

    • INSTANCE_GROUP_NAME: el nombre del MIG

    • ZONE_NAME: 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_NAME/instanceTemplates 

    Ingresa los siguientes valores:

    • ZONE_NAME: 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

  1. Conéctate a una instancia de VM en el MIG con el comando gcloud compute ssh.

    gcloud compute ssh 
  2. 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 
  3. 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-driver-575-open.

  4. Para configurar una comunicación segura entre la GPU y el controlador de GPU, habilita la API de criptografía 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 
  5. Habilita el modo de persistencia para establecer una conexión segura de Security Protocol and Data Model (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 
  6. Reinicia la instancia de VM para aplicar la LKCA y la configuración del modo de persistencia.

    sudo reboot 
  7. (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?