Crear VMs de GPU de forma masiva

Puedes crear un grupo de máquinas virtuales (VM) que tengan unidades de procesamiento gráfico (GPU) conectadas mediante el proceso de creación masiva. Con el proceso de creación masiva, obtienes una validación por adelantado en la que la solicitud falla rápido si no es factible. Además, si usas la marca de región, la API de creación masiva elige de forma automática la zona que tiene la capacidad de completar la solicitud.

Para obtener más información sobre la creación masiva, consulta Acerca de la creación masiva de VMs. Para obtener más información sobre cómo crear VMs con GPU conectadas, consulta el Resumen de cómo crear una instancia con GPU conectadas.

Antes de comenzar

  • Para revisar las limitaciones y los pasos de requisitos previos adicionales para crear instancias con GPU conectadas, como seleccionar una imagen de SO y verificar la cuota de GPU, consulta la Descripción general de la creación de una instancia con GPU conectadas.
  • Para revisar las limitaciones de la creación masiva, consulta Acerca de la creación masiva de VMs.
  • Si aún no lo hiciste, configura la autenticación. La autenticación verifica tu identidad para acceder a los servicios y las APIs de Google Cloud . Para ejecutar código o muestras 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 Google Cloud CLI ejecutando el siguiente comando:

      gcloud init

      Si usas un proveedor de identidad externo (IdP), primero debes acceder a gcloud CLI con tu identidad federada.

    2. Set a default region and zone.

    REST

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

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

      gcloud init

      Si usas un proveedor de identidad externo (IdP), primero debes acceder a gcloud CLI con tu identidad federada.

    Para obtener más información, consulta Autentícate para usar REST en la documentación de autenticación de Google Cloud .

Roles requeridos

Para obtener los permisos que necesitas para crear VMs, pídele a tu administrador que te otorgue el rol de IAM Administrador de instancias de Compute (v1) (roles/compute.instanceAdmin.v1) en el proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para crear VM. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para crear VM:

  • compute.instances.create en el proyecto
  • Si deseas usar una imagen personalizada para crear la VM, sigue estos pasos: compute.images.useReadOnly en la imagen
  • Para usar una instantánea a fin de crear la VM, haz lo siguiente: compute.snapshots.useReadOnly en la instantánea
  • Si quieres usar una plantilla de instancias para crear la VM, sigue estos pasos: compute.instanceTemplates.useReadOnly en la plantilla de instancias
  • A fin de especificar una subred para tu VM: compute.subnetworks.use en el proyecto o en la subred elegida
  • Si deseas especificar una dirección IP estática para la VM: compute.addresses.use en el proyecto
  • Para asignar una dirección IP externa a la VM cuando se usa una red de VPC, compute.subnetworks.useExternalIp en el proyecto o en la subred elegida.
  • Para asignar una red heredada a la VM, ejecuta compute.networks.use en el proyecto.
  • Para asignar una dirección IP externa a la VM cuando se usa una red heredada, ejecuta compute.networks.useExternalIp en el proyecto
  • Para configurar los metadatos de la instancia de VM para la VM, compute.instances.setMetadata en el proyecto.
  • Para configurar etiquetas en la VM, haz lo siguiente: compute.instances.setTags en la VM
  • Para configurar etiquetas en la VM, haz lo siguiente: compute.instances.setLabels en la VM
  • A fin de configurar una cuenta de servicio para que la VM use: compute.instances.setServiceAccount en la VM
  • Crear un disco nuevo para la VM: compute.disks.create en el proyecto
  • Para conectar un disco existente en modo de solo lectura o de lectura y escritura, usa compute.disks.use en el disco.
  • Para conectar un disco existente en modo de solo lectura, haz lo siguiente: compute.disks.useReadOnly en el disco

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

Descripción general

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

Si eliges especificar una región, Compute Engine coloca las VMs en cualquier zona dentro de la región que admite las GPU.

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 de NVIDIA conectada para admitir el tipo de carga de trabajo recomendado.

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

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

Los tipos de máquinas de la serie G optimizados para aceleradores están diseñados para cargas de trabajo como las de simulación de NVIDIA Omniverse, aplicaciones de alto procesamiento gráfico, transcodificación de video y 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 conecta 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 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)

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

Crea grupos de VMs A3, A2, G4 y G2

En esta sección, se explica cómo puedes crear instancias de forma masiva para las series de máquinas A3 High, A3 Mega, A3 Edge, A2 Standard, A2 Ultra, G4 y G2 con Google Cloud CLI o REST.

gcloud

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

Ejemplo

En este ejemplo, se crean dos VMs que tienen 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

Reemplaza lo siguiente:

Si se ejecuta de forma correcta, el resultado es 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 satisfacer las necesidades de tu carga de trabajo o sistema operativo, incluye una o más de las siguientes marcas cuando ejecutes el comando gcloud compute instances bulk create.

Función Descripción
Modelo de aprovisionamiento Establece el modelo de aprovisionamiento para la instancia. Especifica SPOT o FLEX_START. FLEX_START no es compatible con las instancias G4. Si no especificas un modelo, se usará el modelo 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 es compatible con las instancias G4 y G2.
--accelerator=type=VWS_ACCELERATOR_TYPE,count=VWS_ACCELERATOR_COUNT

Reemplaza lo siguiente:

  • Para VWS_ACCELERATOR_TYPE, elige una de las siguientes opciones:
    • Para las instancias G4, especifica nvidia-rtx-pro-6000-vws.
    • Para las instancias G2, especifica nvidia-l4-vws.
  • Para VWS_ACCELERATOR_COUNT, especifica la cantidad de GPU virtuales que necesitas.
SSD local Conecta uno o más SSD locales a tu instancia. Las SSD locales se pueden usar como discos rápidos para instalación nueva o para ingresar datos a las GPU y evitar los cuellos de botella de E/S.
    --local-ssd=interface=nvme \
    --local-ssd=interface=nvme \
    --local-ssd=interface=nvme ...
Para conocer la cantidad máxima de discos SSD locales que puedes conectar por instancia de VM, consulta Límites de SSD locales.
Interfaz de red Asocia 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 dobles (2 veces 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 son compatibles con los tipos de máquinas g4-standard-384.

Reemplaza lo siguiente:

  • VPC_NAME: Es el nombre de tu red de VPC.
  • SUBNET_NAME: Es 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 necesarios para crear varias VM en una región. Para obtener más información sobre los parámetros y cómo usar este comando, consulta Crea VMs de forma masiva.

Ejemplo

En este ejemplo, se crean dos VMs que tienen GPUs conectadas mediante las siguientes especificaciones:

  • Nombres de las VM: my-test-vm-1, my-test-vm-2
  • Cada VM tiene dos GPU conectadas, especificadas mediante el tipo de máquina optimizado 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]
      }
    }
    }
    

Reemplaza lo siguiente:

Marcas opcionales

Para configurar aún más tu instancia y satisfacer las necesidades de tu carga de trabajo o sistema operativo, incluye una o más de las siguientes marcas cuando ejecutes el método instances.bulkInsert.

Función Descripción
Modelo de aprovisionamiento Para reducir los costos, puedes especificar un modelo de aprovisionamiento diferente agregando el campo "provisioningModel": "PROVISIONING_MODEL" al objeto scheduling en tu solicitud. Si especificas que se creen VMs Spot, 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"
     }
  

Reemplaza PROVISIONING_MODEL por uno de los siguientes valores:

  • STANDARD: (Predeterminado) Es una instancia estándar.
  • SPOT: Una VM Spot.
  • FLEX_START: Es 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 las 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 es compatible con las instancias G4 y G2.
   "guestAccelerators":
     [
       {
         "acceleratorCount": VWS_ACCELERATOR_COUNT,
         "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/VWS_ACCELERATOR_TYPE"
       }
     ]
    

Reemplaza lo siguiente:

  • Para VWS_ACCELERATOR_TYPE, elige una de las siguientes opciones:
    • Para las instancias G4, especifica nvidia-rtx-pro-6000-vws.
    • Para las instancias G2, especifica nvidia-l4-vws.
  • Para VWS_ACCELERATOR_COUNT, especifica la cantidad de GPU virtuales que necesitas.
SSD local Conecta uno o más SSD locales a tu instancia. Las SSD locales se pueden usar como discos rápidos para instalación nueva o para ingresar datos a las GPU y evitar los cuellos de botella de E/S.
   {
     "type": "SCRATCH",
     "autoDelete": true,
     "initializeParams": {
       "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/local-nvme-ssd"
     }
   }
  
Para conocer la cantidad máxima de discos SSD locales que puedes conectar por instancia de VM, consulta Límites de SSD locales.
Interfaz de red Asocia varias interfaces de red a tu instancia. En el caso de las instancias g4-standard-384, puedes adjuntar hasta dos interfaces de red. Esto crea una instancia con interfaces de red dobles (2 x 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 son compatibles con los tipos de máquinas g4-standard-384.

Reemplaza lo siguiente:

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

Crear grupos de VMs de uso general N1

Puedes crear un grupo de VMs con GPU conectadas mediante Google Cloud CLI o REST.

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

GPU de NVIDIA:

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

NVIDIA RTX Virtual Workstation (vWS) (antes conocida como NVIDIA GRID):

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

    Para estas estaciones de trabajo virtuales, se agrega de forma automática una licencia de estación de trabajo virtual NVIDIA RTX (vWS) a tu instancia.

gcloud

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

Ejemplo

En el siguiente ejemplo, se crean dos VMs con GPU conectadas mediante las siguientes especificaciones:

  • Nombres de las VM: my-test-vm-1, my-test-vm-2
  • VM creadas en cualquier zona de us-central1 que admita GPU
  • Cada VM tiene dos GPU T4 conectadas, especificadas mediante el tipo de acelerador y las marcas de recuento de aceleradores.
  • Cada VM tiene instalados controladores de GPU
  • Cada VM usa Deep Learning VM Image 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 se ejecuta de forma correcta, el resultado es 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 necesarios para crear varias VM en una región. Para obtener más información sobre los parámetros y cómo usar este comando, consulta Crea VMs de forma masiva.

Ejemplo

En el siguiente ejemplo, se crean dos VMs con GPU conectadas mediante las siguientes especificaciones:

  • Nombres de las VM: my-test-vm-1, my-test-vm-2
  • VM creadas en cualquier zona de us-central1 que admita GPU
  • Cada VM tiene dos GPU T4 conectadas, especificadas mediante el tipo de acelerador y las marcas de recuento de aceleradores.
  • Cada VM tiene instalados controladores de GPU
  • Cada VM usa Deep Learning VM Image pytorch-latest-gpu-v20211028-debian-10

Reemplaza PROJECT_ID con 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"
          }
        ]
      }
  }
 }

Próximos pasos