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 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 especificar una subred para tu VM, haz lo siguiente: compute.subnetworks.use en el proyecto o en la subred elegida
  • 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 de VPC, sigue estos pasos: compute.subnetworks.useExternalIp en el proyecto o en la subred elegida
  • Para asignar una red antigua a la VM, sigue estos pasos: compute.networks.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 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: 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 para admitir el tipo de carga de trabajo recomendado.

Cargas de trabajo de IA y aprendizaje automático Gráficos y visualización
Los tipos de máquinas de la serie A optimizados para aceleradores se han diseñado para cargas de trabajo de computación de alto rendimiento (HPC), inteligencia artificial (IA) y aprendizaje automático (ML).

En estos tipos de máquinas, el modelo de GPU se adjunta automáticamente a la instancia.

Los tipos de máquinas de la serie G optimizados para aceleradores se han diseñado para cargas de trabajo como las de simulación de NVIDIA Omniverse, las aplicaciones que requieren muchos gráficos, la transcodificación de vídeo y los escritorios virtuales. Estos tipos de máquinas admiten estaciones de trabajo virtuales (vWS) NVIDIA RTX.

En estos tipos de máquinas, el modelo de GPU se adjunta automáticamente a la instancia.

  • A4X (Superchips NVIDIA GB200)
    (nvidia-gb200)
  • A4 (NVIDIA B200)
    (nvidia-b200)
  • A3 Ultra (NVIDIA H200)
    (nvidia-h200-141gb)
  • A3 Mega (NVIDIA H100)
    (nvidia-h100-mega-80gb)
  • A3 High (NVIDIA H100)
    (nvidia-h100-80gb)
  • A3 Edge (NVIDIA H100)
    (nvidia-h100-80gb)
  • A2 Ultra (NVIDIA A100 de 80 GB)
    (nvidia-a100-80gb)
  • A2 Standard (NVIDIA A100)
    (nvidia-a100-40gb)
  • G4 (NVIDIA RTX PRO 6000)
    (nvidia-rtx-pro-6000)
    (nvidia-rtx-pro-6000-vws)
  • G2 (NVIDIA L4)
    (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, G4 y G2

En esta sección se explica cómo puedes crear instancias en bloque para las series de máquinas A3 High, A3 Mega, A3 Edge, A2 Standard, A2 Ultra, G4 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.

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

Haz los cambios siguientes:

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

Marcas opcionales

Para configurar aún más tu instancia y adaptarla a tus cargas de trabajo o a tu sistema operativo, incluye una o varias de las siguientes marcas al ejecutar el comando gcloud compute instances bulk create.

Función Descripción
Modelo de aprovisionamiento Define el modelo de aprovisionamiento de la instancia. Especifica SPOT o FLEX_START. FLEX_START no es compatible con las instancias G4. Si no especifica ningún modelo, se usará el estándar. Para obtener más información, consulta Modelos de aprovisionamiento de instancias de Compute Engine.
--provisioning-model=PROVISIONING_MODEL
Estación de trabajo virtual Especifica una estación de trabajo virtual (vWS) NVIDIA RTX para cargas de trabajo de gráficos. Esta función solo se admite en las instancias G4 y G2.
--accelerator=type=VWS_ACCELERATOR_TYPE,count=VWS_ACCELERATOR_COUNT

Haz los cambios siguientes:

  • En el caso de VWS_ACCELERATOR_TYPE, elija una de las siguientes opciones:
    • En el caso de las instancias G4, especifica nvidia-rtx-pro-6000-vws.
    • En las instancias G2, especifica nvidia-l4-vws.
  • En VWS_ACCELERATOR_COUNT, especifica el número de GPUs virtuales que necesitas.
SSD local Monta una o varias SSDs locales en tu instancia. Los SSD locales se pueden usar como discos de trabajo rápidos o para introducir datos en las GPUs y, al mismo tiempo, evitar cuellos de botella de E/S.
    --local-ssd=interface=nvme \
    --local-ssd=interface=nvme \
    --local-ssd=interface=nvme ...
Para consultar el número máximo de discos SSD locales que puedes conectar por instancia de VM, consulta Límites de SSD local.
Interfaz de red Asigna varias interfaces de red a tu instancia. En el caso de las instancias g4-standard-384, puedes adjuntar hasta dos interfaces de red. Puedes usar esta marca para crear una instancia con interfaces de red duales (2x 200 Gbps). Cada interfaz de red debe estar en una red de VPC única.

   --network-interface=network=VPC_NAME_1,subnet=SUBNET_NAME_1,nic-type=GVNIC \
   --network-interface=network=VPC_NAME_2,subnet=SUBNET_NAME_2,nic-type=GVNIC
   

Las interfaces de red duales solo se admiten en los tipos de máquina g4-standard-384.

Haz los cambios siguientes:

  • VPC_NAME: el nombre de tu red de VPC.
  • SUBNET_NAME: el nombre de la subred que forma parte de la red de VPC especificada.

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:

Marcas opcionales

Para configurar aún más tu instancia de forma que se adapte a tus necesidades de carga de trabajo o sistema operativo, incluye una o varias de las siguientes marcas al ejecutar el método instances.bulkInsert.

Función Descripción
Modelo de aprovisionamiento Para reducir los costes, puede especificar otro modelo de aprovisionamiento añadiendo el campo "provisioningModel": "PROVISIONING_MODEL" al objeto scheduling de su solicitud. Si especificas que se creen VMs de acceso puntual, se ignorarán los campos onHostMaintenance y automaticRestart. Para obtener más información, consulta Modelos de aprovisionamiento de instancias de Compute Engine.
    "scheduling":
     {
       "onHostMaintenance": "terminate",
       "provisioningModel": "PROVISIONING_MODEL"
     }
  

Sustituye PROVISIONING_MODEL por una de las siguientes opciones:

  • STANDARD (predeterminada): una instancia estándar.
  • SPOT: una VM de acceso puntual.
  • FLEX_START: una VM de inicio flexible. Las VMs de inicio flexible se ejecutan durante un máximo de siete días y pueden ayudarte a adquirir recursos de alta demanda, como GPUs, a un precio con descuento. Este modelo de aprovisionamiento no es compatible con las instancias G4.
Estación de trabajo virtual Especifica una estación de trabajo virtual (vWS) NVIDIA RTX para cargas de trabajo de gráficos. Esta función solo se admite en las instancias G4 y G2.
   "guestAccelerators":
     [
       {
         "acceleratorCount": VWS_ACCELERATOR_COUNT,
         "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/VWS_ACCELERATOR_TYPE"
       }
     ]
    

Haz los cambios siguientes:

  • En el caso de VWS_ACCELERATOR_TYPE, elija una de las siguientes opciones:
    • En el caso de las instancias G4, especifica nvidia-rtx-pro-6000-vws.
    • En las instancias G2, especifica nvidia-l4-vws.
  • En VWS_ACCELERATOR_COUNT, especifica el número de GPUs virtuales que necesitas.
SSD local Monta una o varias SSDs locales en tu instancia. Los SSD locales se pueden usar como discos de trabajo rápidos o para introducir datos en las GPUs y, al mismo tiempo, evitar cuellos de botella de E/S.
   {
     "type": "SCRATCH",
     "autoDelete": true,
     "initializeParams": {
       "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/local-nvme-ssd"
     }
   }
  
Para consultar el número máximo de discos SSD locales que puedes conectar por instancia de VM, consulta Límites de SSD local.
Interfaz de red Asigna varias interfaces de red a tu instancia. En el caso de las instancias g4-standard-384, puedes adjuntar hasta dos interfaces de red. De esta forma, se crea una instancia con dos interfaces de red (2 de 200 Gbps). Cada interfaz de red debe estar en una red de VPC única.

   "networkInterfaces":
   [
     {
       "network": "projects/PROJECT_ID/global/networks/VPC_NAME_1",
       "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME_1",
       "nicType": "GVNIC"
     },
     {
       "network": "projects/PROJECT_ID/global/networks/VPC_NAME_2",
       "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME_2",
       "nicType": "GVNIC"
     }
   ]
  

Las interfaces de red duales solo se admiten en los tipos de máquina g4-standard-384.

Haz los cambios siguientes:

  • VPC_NAME: el nombre de tu red de VPC.
  • SUBNET_NAME: el nombre de la subred que forma parte de la red de VPC especificada.

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