Crear máquinas virtuales con GPU en bloque


Puedes crear un grupo de máquinas virtuales (VMs) que tengan unidades de procesamiento gráfico (GPUs) vinculadas mediante el proceso de creación en bloque. Con el proceso de creación en bloque, obtienes una validación inicial en la que la solicitud falla rápidamente si no es viable. Además, si usas la marca de región, la API de creación en bloque elige automáticamente la zona que tiene capacidad para completar la solicitud.

Para obtener más información sobre la creación en bloque, consulta Información sobre la creación en bloque de VMs. Para obtener más información sobre cómo crear máquinas virtuales con GPUs vinculadas, consulta el artículo sobre cómo crear una instancia con GPUs vinculadas.

Antes de empezar

  • Para consultar las limitaciones y los pasos previos adicionales para crear instancias con GPUs conectadas, como seleccionar una imagen de SO y comprobar la cuota de GPUs, consulta el artículo sobre cómo crear una instancia con GPUs conectadas.
  • Para consultar las limitaciones de la creación en bloque, consulta Información sobre la creación de VMs en bloque.
  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    REST

    Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.

      Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Roles obligatorios

Para obtener los permisos que necesitas para crear VMs, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de instancias de Compute (v. 1) (roles/compute.instanceAdmin.v1) en el proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para crear máquinas virtuales. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Se necesitan los siguientes permisos para crear VMs:

  • compute.instances.create del proyecto
  • Para usar una imagen personalizada para crear la VM, sigue estos pasos: compute.images.useReadOnly en la imagen
  • Para usar una captura para crear la VM, sigue estos pasos: compute.snapshots.useReadOnly en la captura
  • Para usar una plantilla de instancia para crear la VM, haz lo siguiente: compute.instanceTemplates.useReadOnly en la plantilla de instancia
  • Para asignar una red antigua a la VM, sigue estos pasos: compute.networks.use en el proyecto
  • Para especificar una dirección IP estática para la máquina virtual, haz lo siguiente: compute.addresses.use en el proyecto
  • Para asignar una dirección IP externa a la VM cuando se usa una red antigua, haz lo siguiente: compute.networks.useExternalIp en el proyecto
  • Para especificar una subred para tu VM, haz lo siguiente: compute.subnetworks.use en el proyecto o en la subred elegida
  • Para asignar una dirección IP externa a la VM cuando se usa una red de VPC, sigue estos pasos: compute.subnetworks.useExternalIp en el proyecto o en la subred elegida
  • Para definir los metadatos de la instancia de VM: compute.instances.setMetadata en el proyecto
  • Para definir etiquetas en la VM, haz lo siguiente: compute.instances.setTags en la VM
  • Para definir etiquetas en la VM, sigue estos pasos: compute.instances.setLabels en la VM
  • Para definir una cuenta de servicio que pueda usar la VM, sigue estos pasos: compute.instances.setServiceAccount en la VM
  • Para crear un disco para la VM, sigue estos pasos: compute.disks.create en el proyecto
  • Para adjuntar un disco en modo de solo lectura o de lectura y escritura, sigue estos pasos: compute.disks.use en el disco
  • Para adjuntar un disco en modo de solo lectura, sigue estos pasos: compute.disks.useReadOnly en el disco

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

Información general

Cuando creas VMs con GPUs vinculadas mediante el método de creación en bloque, puedes elegir crear VMs en una región (como us-central1) o en una zona específica (como us-central1-a).

Si decides especificar una región, Compute Engine colocará las VMs en cualquier zona de la región que admita GPUs.

Tipos de máquina

La familia de máquinas optimizadas para aceleradores contiene varios tipos de máquinas.

Cada tipo de máquina optimizada para aceleradores tiene un modelo específico de GPU NVIDIA conectada. Si tienes cargas de trabajo que utilizan un gran número de gráficos, como la visualización en 3D, también puedes crear estaciones de trabajo virtuales que usen estaciones de trabajo virtuales (vWS) NVIDIA RTX. La estación de trabajo virtual NVIDIA RTX está disponible para algunos modelos de GPU.

Tipo de máquina Modelo de GPU Modelo de estación de trabajo virtual (vWS) NVIDIA RTX
A4X Superchips NVIDIA GB200 Grace Blackwell (nvidia-gb200).

Cada Superchip contiene cuatro GPUs NVIDIA B200 Blackwell.

A4 GPUs NVIDIA B200 Blackwell (nvidia-b200)
A3 Ultra GPUs NVIDIA H200 SXM (nvidia-h200-141gb)
A3 Mega GPUs NVIDIA H100 SXM (nvidia-h100-mega-80gb)
A3 High, A3 Edge GPUs NVIDIA H100 SXM (nvidia-h100-80gb)
A2 Ultra GPUs NVIDIA A100 de 80 GB (nvidia-a100-80gb)
A2 Standard GPUs NVIDIA A100 de 40 GB (nvidia-a100-40gb)
G4 (Vista previa) NVIDIA RTX PRO 6000 Blackwell Server Edition (nvidia-rtx-pro-6000)
G2 GPUs NVIDIA L4 (nvidia-l4) GPUs de estaciones de trabajo virtuales con NVIDIA L4 (nvidia-l4-vws)

Crear grupos de A4X, A4 y A3 Ultra

Para crear instancias de forma masiva para las series de máquinas A4X, A4 y A3 Ultra, consulta la descripción general de las opciones de implementación en la documentación de AI Hypercomputer.

Crear grupos de VMs A3, A2 y G2

En esta sección se explica cómo crear instancias en bloque para las series de máquinas A3 High, A3 Mega, A3 Edge, A2 y G2 mediante la CLI de Google Cloud o REST.

gcloud

Para crear un grupo de VMs, usa el gcloud compute instances bulk create comando. Para obtener más información sobre los parámetros y cómo usar este comando, consulta Crear VMs en bloque.

En el comando de ejemplo se muestran las siguientes marcas opcionales:

  • --provisioning-model=SPOT es una marca opcional que configura tus VMs como VMs esporádicas. Si tu carga de trabajo es tolerante a fallos y puede soportar posibles interrupciones de las máquinas virtuales, te recomendamos que uses máquinas virtuales de acceso puntual para reducir el coste de tus máquinas virtuales y las GPUs conectadas. Para obtener más información, consulta GPUs en VMs de acceso puntual. En las VMs de Spot, las opciones de reinicio automático y mantenimiento del host están inhabilitadas.

  • La marca --accelerator para especificar una estación de trabajo virtual. Las estaciones de trabajo virtuales (vWS) NVIDIA RTX solo son compatibles con las máquinas virtuales G2.

Ejemplo

En este ejemplo se crean dos VMs con GPUs conectadas mediante las siguientes especificaciones:

gcloud compute instances bulk create \
    --name-pattern="my-test-vm-#" \
    --region=REGION \
    --count=2 \
    --machine-type=MACHINE_TYPE \
    --boot-disk-size=200 \
    --image=IMAGE \
    --image-project=IMAGE_PROJECT \
    --on-host-maintenance=TERMINATE \
    [--provisioning-model=SPOT] \
    [--accelerator=type=nvidia-l4-vws,count=VWS_ACCELERATOR_COUNT]

Haz los cambios siguientes:

  • REGION: la región de las VMs. Esta región debe ser compatible con el modelo de GPU seleccionado.
  • MACHINE_TYPE: el tipo de máquina que has seleccionado. Elige una de estas opciones:

    • Un tipo de máquina A3.
    • Un tipo de máquina A2.
    • Un tipo de máquina G2. Los tipos de máquinas G2 también admiten memoria personalizada. La memoria debe ser un múltiplo de 1024 MB y estar dentro del intervalo de memoria admitido. Por ejemplo, para crear una VM con 4 vCPUs y 19 GB de memoria, especifica --machine-type=g2-custom-4-19456.
  • IMAGE: una imagen de sistema operativo que admita GPUs.

    Si quieres usar la imagen más reciente en una familia de imágenes, sustituye la marca --image por la marca --image-family y asigna a esta última el valor de una familia de imágenes que admita GPUs. Por ejemplo: --image-family=rocky-linux-8-optimized-gcp.

    También puedes especificar una imagen personalizada o imágenes de máquina virtual de aprendizaje profundo.

  • IMAGE_PROJECT: el proyecto de imagen de Compute Engine al que pertenece la imagen del SO. Si usas una imagen personalizada o una imagen de máquina virtual de aprendizaje profundo, especifica el proyecto al que pertenecen esas imágenes.

  • VWS_ACCELERATOR_COUNT: el número de GPUs virtuales que necesitas.

Si la acción se realiza correctamente, el resultado será similar al siguiente:

NAME          ZONE
my-test-vm-1  us-central1-b
my-test-vm-2  us-central1-b
Bulk create request finished with status message: [VM instances created: 2, failed: 0.]

REST

Usa el método instances.bulkInsert con los parámetros obligatorios para crear varias VMs en una zona. Para obtener más información sobre los parámetros y cómo usar este comando, consulta Crear VMs en bloque.

Ejemplo

En este ejemplo se crean dos VMs con GPUs conectadas mediante las siguientes especificaciones:

  • Nombres de las VMs: my-test-vm-1, my-test-vm-2
  • Cada máquina virtual tiene dos GPUs conectadas, especificadas mediante el tipo de máquina optimizada para aceleradores adecuado.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
    {
    "namePattern":"my-test-vm-#",
    "count":"2",
    "instanceProperties": {
      "machineType":MACHINE_TYPE,
      "disks":[
        {
          "type":"PERSISTENT",
          "initializeParams":{
            "diskSizeGb":"200",
            "sourceImage":SOURCE_IMAGE_URI
          },
          "boot":true
        }
      ],
      "name": "default",
      "networkInterfaces":
      [
        {
          "network": "projects/PROJECT_ID/global/networks/default"
        }
      ],
      "scheduling":{
        "onHostMaintenance":"TERMINATE",
        ["automaticRestart":true]
      }
    }
    }
    

Haz los cambios siguientes:

  • PROJECT_ID: tu ID de proyecto
  • REGION: la región de las VMs. Esta región debe ser compatible con el modelo de GPU seleccionado.
  • MACHINE_TYPE: el tipo de máquina que has seleccionado. Elige una de estas opciones:

    • Un tipo de máquina A2.
    • Un tipo de máquina G2. Los tipos de máquinas G2 también admiten memoria personalizada. La memoria debe ser un múltiplo de 1024 MB y estar dentro del intervalo de memoria admitido. Por ejemplo, para crear una VM con 4 vCPUs y 19 GB de memoria, especifica --machine-type=g2-custom-4-19456.
  • SOURCE_IMAGE_URI: el URI de la imagen o familia de imágenes específica que quieras usar.

    Por ejemplo:

    • Imagen específica: "sourceImage": "projects/rocky-linux-cloud/global/images/rocky-linux-8-optimized-gcp-v20220719"
    • Familia de imágenes: "sourceImage": "projects/rocky-linux-cloud/global/images/family/rocky-linux-8-optimized-gcp".

    Cuando especificas una familia de imágenes, Compute Engine crea una VM a partir de la imagen de SO más reciente y no obsoleta de esa familia. Para obtener más información sobre cuándo usar familias de imágenes, consulta las prácticas recomendadas para familias de imágenes.

Configuración adicional:

  • Si tu carga de trabajo es tolerante a fallos y puede soportar posibles interrupciones de las máquinas virtuales, te recomendamos que uses máquinas virtuales de acceso puntual para reducir el coste de tus máquinas virtuales y las GPUs conectadas. Para obtener más información, consulta GPUs en VMs de acceso puntual. Para usar una VM de acceso puntual, añade la opción "provisioningModel": "SPOT a tu solicitud. En las VMs de acceso puntual, las marcas de las opciones de reinicio automático y mantenimiento del host están inhabilitadas.

    "scheduling":
      {
        "provisioningModel": "SPOT"
      }
    
  • En las máquinas virtuales G2, se admiten las estaciones de trabajo virtuales (vWS) NVIDIA RTX. Para especificar una estación de trabajo virtual, añade la opción guestAccelerators a tu solicitud. Sustituye VWS_ACCELERATOR_COUNT por el número de GPUs virtuales que necesites.

    "guestAccelerators":
     [
       {
         "acceleratorCount": VWS_ACCELERATOR_COUNT,
         "acceleratorType": "projects/PROJECT_ID/zones/ZONEacceleratorTypes/nvidia-l4-vws"
       }
     ]
    

Crear grupos de VMs de uso general N1

Para crear un grupo de máquinas virtuales con GPUs conectadas, puedes usar Google Cloud CLI o REST.

En esta sección se describe cómo crear varias VMs con los siguientes tipos de GPU:

GPUs NVIDIA:

  • NVIDIA T4: nvidia-tesla-t4
  • NVIDIA P4: nvidia-tesla-p4
  • NVIDIA P100: nvidia-tesla-p100
  • NVIDIA V100: nvidia-tesla-v100

Estación de trabajo virtual (vWS) NVIDIA RTX (antes NVIDIA GRID):

  • Estación de trabajo virtual con NVIDIA T4: nvidia-tesla-t4-vws
  • Estación de trabajo virtual con NVIDIA P4: nvidia-tesla-p4-vws
  • Estación de trabajo virtual con NVIDIA P100: nvidia-tesla-p100-vws

    En el caso de estas estaciones de trabajo virtuales, se añade automáticamente una licencia de estación de trabajo virtual (vWS) NVIDIA RTX a tu instancia.

gcloud

Para crear un grupo de VMs, usa el gcloud compute instances bulk create comando. Para obtener más información sobre los parámetros y cómo usar este comando, consulta Crear VMs en bloque.

Ejemplo

En el siguiente ejemplo se crean dos máquinas virtuales con GPUs conectadas que tienen las siguientes especificaciones:

  • Nombres de las VMs: my-test-vm-1, my-test-vm-2
  • Máquinas virtuales creadas en cualquier zona de us-central1 que admita GPUs
  • Cada máquina virtual tiene dos GPUs T4 conectadas, especificadas mediante las marcas de tipo de acelerador y número de aceleradores.
  • Cada VM tiene instalados los controladores de GPU
  • Cada máquina virtual usa la imagen de máquina virtual de aprendizaje profundo pytorch-latest-gpu-v20211028-debian-10
gcloud compute instances bulk create \
    --name-pattern="my-test-vm-#" \
    --count=2 \
    --region=us-central1 \
    --machine-type=n1-standard-2 \
    --accelerator type=nvidia-tesla-t4,count=2 \
    --boot-disk-size=200 \
    --metadata="install-nvidia-driver=True" \
    --scopes="https://www.googleapis.com/auth/cloud-platform" \
    --image=pytorch-latest-gpu-v20211028-debian-10 \
    --image-project=deeplearning-platform-release \
    --on-host-maintenance=TERMINATE --restart-on-failure

Si la acción se realiza correctamente, el resultado será similar al siguiente:

NAME          ZONE
my-test-vm-1  us-central1-b
my-test-vm-2  us-central1-b
Bulk create request finished with status message: [VM instances created: 2, failed: 0.]

REST

Usa el método instances.bulkInsert con los parámetros obligatorios para crear varias VMs en una zona. Para obtener más información sobre los parámetros y cómo usar este comando, consulta Crear VMs en bloque.

Ejemplo

En el siguiente ejemplo se crean dos máquinas virtuales con GPUs conectadas que tienen las siguientes especificaciones:

  • Nombres de las VMs: my-test-vm-1, my-test-vm-2
  • Máquinas virtuales creadas en cualquier zona de us-central1 que admita GPUs
  • Cada máquina virtual tiene dos GPUs T4 conectadas, especificadas mediante las marcas de tipo de acelerador y número de aceleradores.
  • Cada VM tiene instalados los controladores de GPU
  • Cada máquina virtual usa la imagen de máquina virtual de aprendizaje profundo pytorch-latest-gpu-v20211028-debian-10

Sustituye PROJECT_ID por el ID del proyecto.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/instances/bulkInsert

{
    "namePattern":"my-test-vm-#",
    "count":"2",
    "instanceProperties": {
      "machineType":"n1-standard-2",
      "disks":[
        {
          "type":"PERSISTENT",
          "initializeParams":{
            "diskSizeGb":"200",
            "sourceImage":"projects/deeplearning-platform-release/global/images/pytorch-latest-gpu-v20211028-debian-10"
          },
          "boot":true
        }
      ],
      "name": "default",
      "networkInterfaces":
      [
        {
          "network": "projects/PROJECT_ID/global/networks/default"
        }
      ],
      "guestAccelerators":
      [
        {
          "acceleratorCount": 2,
          "acceleratorType": "nvidia-tesla-t4"
        }
      ],
      "scheduling":{
        "onHostMaintenance":"TERMINATE",
        "automaticRestart":true
      },
      "metadata":{
        "items":[
          {
            "key":"install-nvidia-driver",
            "value":"True"
          }
        ]
      }
  }
 }

Siguientes pasos