Crea una instancia de Confidential VM con GPU

Para usar GPU con instancias de Confidential VM, debes crear una instancia de VM con un tipo de máquina y un modelo de aprovisionamiento de instancias compatibles. Después de crear la instancia de VM, debes habilitar el modo de Confidential Computing en la GPU adjunta.

Las instancias de Confidential VM con GPU de NVIDIA están disponibles en los siguientes tipos de máquinas:

  • Tipo de máquina A3 High: GPUs NVIDIA H100 con Intel TDX. Admite modelos de aprovisionamiento de inicio flexible y de instancias Spot.

  • Tipo de máquina G4: NVIDIA RTX PRO 6000 con AMD SEV. Admite modelos de aprovisionamiento estándar (según demanda), de instancias interrumpibles y de inicio flexible, así como reservas.

    El uso de GPU NVIDIA RTX Pro 6000 con instancias de Confidential VM G4 genera automáticamente una tarifa de licencia para el software y los servicios de NVIDIA Confidential Computing. Para obtener más detalles, consulta Precios de Confidential Computing con GPUs.

Antes de crear una instancia de VM confidencial con GPU, asegúrate de tener suficiente cuota de GPU. Para obtener más información, consulta Requisito de cuota de GPU.

Crea una instancia de Confidential VM con GPU

Para crear una instancia de Confidential VM con una GPU conectada, usa uno de los siguientes modelos de aprovisionamiento:

Modelo estándar (a pedido) o de spot

gcloud

Para crear una instancia de VM estándar (a pedido) o de VM Spot optimizada para aceleradores con la gcloud CLI, usa el subcomando instances create con la marca --provisioning-model.

gcloud compute instances create INSTANCE_NAME \
    --provisioning-model=PROVISIONING_MODEL \
    --confidential-compute-type=CONFIDENTIAL_COMPUTING_TECHNOLOGY \
    --machine-type=MACHINE_TYPE_NAME \
    --maintenance-policy=TERMINATE \
    --zone=ZONE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY_NAME \
    --boot-disk-size=30G

Para habilitar el inicio seguro, puedes usar la marca --shielded-secure-boot para los inicios de instancias de VM.

Ingresa los siguientes valores:

  • INSTANCE_NAME: Es el nombre de la instancia de VM nueva.

  • PROVISIONING_MODEL: Es el modelo de aprovisionamiento que admite el tipo de máquina. Elige una de estas opciones:

    • Tipo de máquina A3 High: SPOT para instancias de VM Spot.

    • Tipo de máquina G4: STANDARD para instancias de VM estándar (a pedido) o SPOT para instancias de VM Spot Si no se especifica, el valor predeterminado es STANDARD.

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY: Es el tipo de tecnología de Confidential Computing que se usará. Elige una de estas opciones:

    • Tipo de máquina A3 High (a3-highgpu-1g): TDX

    • Tipo de máquina G4 (g4-standard-48): SEV

  • MACHINE_TYPE_NAME: Es el tipo de máquina de la VM. Elige una de las siguientes opciones:

    • a3-highgpu-1g

    • g4-standard-48

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

  • IMAGE_PROJECT: Es el proyecto que contiene la imagen del sistema operativo compatible. Elige una de estas opciones:

    • Tipo de máquina A3 High: ubuntu-os-cloud para imágenes de Ubuntu o confidential-vm-images para imágenes de Container-Optimized OS.

    • Tipo de máquina G4: ubuntu-os-cloud para imágenes de Ubuntu o cos-cloud para imágenes de Container-Optimized OS

  • IMAGE_FAMILY_NAME: Es la familia de la imagen del sistema operativo compatible con Confidential VM. Elige la familia de imágenes según el tipo de máquina:

    • Tipo de máquina A3 High:

      • ubuntu-2204-lts para proyectos de imágenes de Ubuntu.

      • cos-tdx-113-lts para proyectos de imágenes de Container-Optimized OS

    • Tipo de máquina G4:

      • ubuntu-2404-lts-amd64 para proyectos de imágenes de Ubuntu.

      • cos-125-lts para proyectos de imágenes de Container-Optimized OS

REST

Para crear una instancia de VM estándar (a pedido) o Spot, envía la siguiente solicitud POST con el contenido del cuerpo adecuado.

Usa el siguiente método y URL de HTTP:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

Usa el siguiente cuerpo de la solicitud JSON:

{
  "name": "INSTANCE_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE_NAME",
  "confidentialInstanceConfig": {
    "confidentialInstanceType": "CONFIDENTIAL_COMPUTING_TECHNOLOGY"
  },
  "scheduling": {
    "onHostMaintenance": "TERMINATE",
    "automaticRestart": true,
    "provisioningModel": "PROVISIONING_MODEL"
  },
  "disks": [
    {
      "boot": true,
      "autoDelete": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY",
        "diskSizeGb": "30"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ]
}

Ingresa los siguientes valores:

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

  • INSTANCE_NAME: Es el nombre de la instancia de VM nueva.

  • MACHINE_TYPE_NAME: Es el tipo de máquina de la VM. Elige una de las siguientes opciones:

    • a3-highgpu-1g

    • g4-standard-48

  • CONFIDENTIAL_COMPUTING_TECHNOLOGY: Es el tipo de tecnología de Confidential Computing que se usará. Elige una de estas opciones:

    • Tipo de máquina A3 High (a3-highgpu-1g): TDX

    • Tipo de máquina G4 (g4-standard-48): SEV

  • PROVISIONING_MODEL: Es el modelo de aprovisionamiento admitido por la serie de máquinas. Elige una de estas opciones:

    • Tipo de máquina A3 High: SPOT para instancias de VM Spot

    • Tipo de máquina G4: STANDARD para instancias de VM estándar (a pedido) o SPOT para instancias de VM Spot Si no se especifica, el valor predeterminado es STANDARD.

  • IMAGE_PROJECT: Es el proyecto que contiene la imagen del sistema operativo compatible. Elige una de estas opciones:

    • Tipo de máquina A3 High: ubuntu-os-cloud para imágenes de Ubuntu o confidential-vm-images para imágenes de Container-Optimized OS.

    • Tipo de máquina G4: ubuntu-os-cloud para imágenes de Ubuntu o cos-cloud para imágenes de Container-Optimized OS

  • IMAGE_FAMILY: Es la familia de la imagen del sistema operativo compatible con Confidential VM. Elige la familia de imágenes según el tipo de máquina:

    • Tipo de máquina A3 High:

      • ubuntu-2204-lts para proyectos de imágenes de Ubuntu.

      • cos-tdx-113-lts para proyectos de imágenes de Container-Optimized OS

    • Tipo de máquina G4:

      • ubuntu-2404-lts-amd64 para proyectos de imágenes de Ubuntu.

      • cos-125-lts para proyectos de imágenes de Container-Optimized OS

Modelo de inicio flexible

Para usar el modelo de inicio flexible, primero crea una plantilla de instancias y, luego, usa esa plantilla para crear un grupo de instancias administrado (MIG). 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

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=CONFIDENTIAL_COMPUTING_TECHNOLOGY \
        --machine-type=MACHINE_TYPE_NAME \
        --maintenance-policy=TERMINATE \
        --image-project=IMAGE_PROJECT \
        --image-family=IMAGE_FAMILY_NAME \
        --boot-disk-size=30G \
        --instance-termination-action=DELETE \
        --max-run-duration=RUN_DURATION \
        --project=PROJECT_ID
    

    Ingresa los siguientes valores:

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

    • CONFIDENTIAL_COMPUTING_TECHNOLOGY: Es el tipo de tecnología de Confidential Computing que se usará. Elige una de estas opciones:

      • Tipo de máquina A3 High (a3-highgpu-1g): TDX

      • Tipo de máquina G4 (g4-standard-48): SEV

    • MACHINE_TYPE_NAME: Es el tipo de máquina de la VM. Elige una de las siguientes opciones:

      • a3-highgpu-1g

      • g4-standard-48

    • IMAGE_PROJECT: Es el proyecto que contiene la imagen del sistema operativo compatible. Elige una de estas opciones:

      • Tipo de máquina A3 High: ubuntu-os-cloud para imágenes de Ubuntu o confidential-vm-images para imágenes de Container-Optimized OS.

      • Tipo de máquina G4: ubuntu-os-cloud para imágenes de Ubuntu o cos-cloud para imágenes de Container-Optimized OS

    • IMAGE_FAMILY_NAME: Es la familia de la imagen del sistema operativo compatible con Confidential VM que se usará. Elige la familia de imágenes según el tipo de máquina:

      • Tipo de máquina A3 High:

        • ubuntu-2204-lts para proyectos de imágenes de Ubuntu.

        • cos-tdx-113-lts para proyectos de imágenes de Container-Optimized OS

      • Tipo de máquina G4:

        • ubuntu-2404-lts-amd64 para proyectos de imágenes de Ubuntu.

        • cos-125-lts para proyectos de imágenes de Container-Optimized OS

    • RUN_DURATION: Es la duración durante 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: 6d8h44m.

    • PROJECT_ID: Es el 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.

    Usa el siguiente método HTTP y URL:

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceTemplates
    

    Usa el siguiente cuerpo de la solicitud JSON:

    {
      "name": "INSTANCE_TEMPLATE_NAME",
      "properties": {
        "confidentialInstanceConfig": {
          "confidentialInstanceType": "CONFIDENTIAL_COMPUTING_TECHNOLOGY"
        },
        "machineType": "MACHINE_TYPE_NAME",
        "scheduling": {
          "instanceTerminationAction": "DELETE",
          "maxRunDuration": {
            "seconds": "RUN_DURATION_IN_SECONDS"
          },
          "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"
          }
        ],
        "canIpForward": false
      }
    }
    

    Para habilitar el inicio seguro, puedes incluir el siguiente objeto para los inicios de instancias de VM.

    "shieldedInstanceConfig": {
      "enableIntegrityMonitoring": true,
      "enableSecureBoot": true,
      "enableVtpm": true
    }
    

    Ingresa los siguientes valores:

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

    • REGION: Es la región en la que se creará la plantilla.

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

    • CONFIDENTIAL_COMPUTING_TECHNOLOGY: Es el tipo de tecnología de Confidential Computing que se usará. Elige una de estas opciones:

      • Tipo de máquina A3 High (a3-highgpu-1g): TDX

      • Tipo de máquina G4 (g4-standard-48): SEV

    • MACHINE_TYPE_NAME: Es el tipo de máquina de la VM. Elige una de las siguientes opciones:

      • a3-highgpu-1g

      • g4-standard-48

    • RUN_DURATION_IN_SECONDS: 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.

    • IMAGE_PROJECT: Es el proyecto que contiene la imagen del sistema operativo compatible. Elige una de estas opciones:

      • Tipo de máquina A3 High: ubuntu-os-cloud para imágenes de Ubuntu o confidential-vm-images para imágenes de Container-Optimized OS.

      • Tipo de máquina G4: ubuntu-os-cloud para imágenes de Ubuntu o cos-cloud para imágenes de Container-Optimized OS

    • IMAGE_FAMILY_NAME: Es la familia de la imagen del sistema operativo compatible con Confidential VM que se usará. Elige la familia de imágenes según el tipo de máquina:

      • Tipo de máquina A3 High:

        • ubuntu-2204-lts para proyectos de imágenes de Ubuntu.

        • cos-tdx-113-lts para proyectos de imágenes de Container-Optimized OS

      • Tipo de máquina G4:

        • ubuntu-2404-lts-amd64 para proyectos de imágenes de Ubuntu.

        • cos-125-lts para proyectos de imágenes de Container-Optimized OS

  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 plantillas, envía la siguiente solicitud GET.

    Usa el siguiente método y URL de HTTP:

    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.

    Usa el siguiente método y URL de HTTP:

    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.

Usa reservas con instancias de Confidential VMs

Puedes usar reservas para asegurarte de tener capacidad para tus instancias de Confidential VMs solo con el tipo de máquina G4.

Para usar una reserva para tu instancia de Confidential VM, haz lo siguiente:

  1. Crea una reserva estándar en la zona admitida. Puedes controlar cómo las instancias consumen esta reserva con la marca --require-specific-reservation durante la creación de la reserva.

  2. Crea una instancia de Confidential VM para usar la reserva. Cuando crees la instancia de VM, incluye la marca --confidential-compute-type=SEV para que sea una instancia de Confidential VM. La forma en que esta instancia consume la reserva depende de la configuración de afinidad de la reserva.

En los siguientes ejemplos, se muestra cómo usar reservas con instancias de Confidential VMs. El método para consumir la reserva depende de cómo se creó:

  • Consumo automático: Si se crea una reserva sin la marca --require-specific-reservation, puedes crear una instancia de VM confidencial de G4 con propiedades coincidentes (como el tipo de máquina o la zona) para usar automáticamente la reserva.

  • Consumo específico: Si se crea una reserva con la marca --require-specific-reservation, debes segmentar la reserva con las marcas --reservation-affinity=specific y --reservation=RESERVATION_NAME cuando crees la instancia:

    gcloud compute instances create INSTANCE_NAME \
        --project=PROJECT_ID \
        --zone=ZONE_NAME \
        --machine-type=g4-standard-48 \
        --confidential-compute-type=SEV \
        --image-project=ubuntu-os-cloud \
        --image-family=ubuntu-2404-lts-amd64 \
        --reservation-affinity=specific \
        --reservation=RESERVATION_NAME
    

    Ingresa los siguientes valores:

    • INSTANCE_NAME: Es el nombre de la instancia de VM nueva.

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

    • RESERVATION_NAME: Es el nombre de la reserva.

Para obtener información sobre cómo las instancias de VM consumen reservas y cómo funciona la afinidad, consulta Consume reservas.

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). Te recomendamos usar la versión 580 o posterior de los controladores de módulos de kernel abiertos de NVIDIA.

  4. Para configurar la 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. Conéctate a una instancia de VM en el MIG con el comando gcloud compute ssh.

    gcloud compute ssh
    
  8. Instala las muestras de CUDA que admitan la versión del controlador que necesitas (opcional).

    wget -O cuda-samples.tar.gz https://github.com/NVIDIA/cuda-samples/archive/refs/tags/v12.9.tar.gz
    tar xzvf cuda-samples.tar.gz
    

¿Qué sigue?