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

Antes de comenzar

  • Para revisar los pasos de requisitos previos adicionales, como seleccionar una imagen de SO y verificar la cuota de GPU, revisa el documento de descripción general.
  • Si aún no lo hiciste, configura la autenticación. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API 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. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. 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 proporcionas a la CLI de gcloud.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.

Roles obligatorios

Para obtener los permisos que necesitas a fin de finalizar de forma automática, pídele al administrador que te otorgue el rol de IAM Administrador de instancias de Compute (v1) (roles/compute.instanceAdmin.v1) IAM 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
  • Para asignar una red heredada a la VM, ejecuta compute.networks.use en el proyecto.
  • 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 heredada, ejecuta compute.networks.useExternalIp en el proyecto
  • A fin de especificar una subred para tu VM: 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, compute.subnetworks.useExternalIp en el proyecto o en la subred elegida.
  • 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.

Crea grupos de VMs optimizadas para aceleradores

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

Cada tipo de máquina optimizada para acelerador tiene un modelo específico de GPU de NVIDIA conectada.

Puedes crear un grupo de VMs optimizadas para aceleradores mediante 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.

Las siguientes marcas opcionales se muestran en el comando de muestra:

  • --provisioning-model=SPOT es una marca opcional que configura tus VMs como VMs Spot. Si tu carga de trabajo es tolerante a errores y puede admitir una posible interrupciónde la VM, considera usar VMs Spot para reducir el costo de tus VMs y las GPUs adjuntas. Para obtener más información, consulta GPU en VMs Spot. En el caso de las VMs Spot, las marcas de 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 VMs de G2.

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 \
    [--provisioning-model=SPOT] \
    [--accelerator=type=nvidia-l4-vws,count=VWS_ACCELERATOR_COUNT]

Reemplaza lo siguiente:

  • REGION: la región para las VMs. Esta región debe ser compatible con el modelo de GPU seleccionado.
  • MACHINE_TYPE: el tipo de máquina que seleccionaste. Elige una de las siguientes 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 1,024 MB y debe estar dentro del rango de memoria admitido. Por ejemplo, para crear una VM con 4 CPU virtuales y 19 GB de memoria, especifica --machine-type=g2-custom-4-19456.
  • IMAGE: una imagen del sistema operativo que admite GPU.

    Si deseas usar la imagen más reciente en una familia de imágenes, reemplaza la marca --image por la marca --image-family y configura su valor en una familia de imágenes que admita GPU. Por ejemplo: --image-family=rocky-linux-8-optimized-gcp

    También puedes especificar una imagen personalizada o una Deep Learning VM Image.

  • IMAGE_PROJECT: el proyecto de imagen de Compute Engine al que pertenece la imagen de SO. Si usas una imagen personalizada o una Deep Learning VM Image, especifica el proyecto al que pertenecen esas imágenes.

  • VWS_ACCELERATOR_COUNT es la cantidad de GPUs virtuales que necesitas.

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

  • PROJECT_ID: El ID de tu proyecto
  • REGION: la región para las VMs. Esta región debe ser compatible con el modelo de GPU seleccionado.
  • MACHINE_TYPE: el tipo de máquina que seleccionaste. Elige una de las siguientes 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 1,024 MB y debe estar dentro del rango de memoria admitido. Por ejemplo, para crear una VM con 4 CPU virtuales 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íficas que deseas 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 no obsoleta más reciente de esa familia. Para obtener más información sobre el balanceo de cargas, consulta Prácticas recomendadas para las familias de imágenes.

Configuración adicional:

  • Si tu carga de trabajo es tolerante a errores y puede admitir una posible interrupciónde la VM, considera usar VMs Spot para reducir el costo de tus VMs y las GPUs adjuntas. Para obtener más información, consulta GPU en VMs Spot. Para usar una VM Spot, agrega la opción "provisioningModel": "SPOT a tu solicitud. En el caso de las VMs Spot, las marcas de las opciones de reinicio automático y mantenimiento del host están inhabilitadas.

    "scheduling":
      {
        "provisioningModel": "SPOT"
      }
    
  • Para las VM G2, se admiten estaciones de trabajo virtuales (vWS) de NVIDIA RTX. Para especificar una estación de trabajo virtual, agrega la opción guestAccelerators a tu solicitud. Reemplaza VWS_ACCELERATOR_COUNT por la cantidad de GPU virtuales que necesitas.

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

Limitaciones

VMs A3

Las siguientes limitaciones se aplican a las VMs que usan tipos de máquinas A3 Edge, A3 High y A3 Mega:

  • No recibirás descuentos por uso continuo ni descuentos flexibles por compromiso de uso para las VMs que usan tipos de máquinas G2.
  • Solo puedes usar los tipos de máquinas A3 estándar en ciertas regiones y zonas.
  • No puedes usar discos persistentes regionales en VMs que usan tipos de máquinas G2.
  • La serie de máquinas A3 solo está disponible en la plataforma Sapphire Rapids.
  • Si tu VM usa un tipo de máquina A3 estándar, no puedes cambiar el tipo de máquina. Si necesitas cambiar el tipo de máquina, debes crear una VM nueva.
  • No puedes cambiar el tipo de máquina de una VM a uno A3. Si necesitas una VM que use un tipo de máquina A3, debes crear una VM nueva.
  • Los tipos de máquinas A3 estándar no admiten usuarios únicos.
  • No puedes ejecutar sistemas operativos Windows en tipos de máquinas A3.
  • Solo puedes reservar tipos de máquinas A3 a través de ciertas reservas.
  • Para los tipos de máquinas a3-highgpu-1g, a3-highgpu-2g y a3-highgpu-4g, se aplican las siguientes limitaciones:
    • Para estos tipos de máquinas, debes usar VMs Spot o una función que use el programador de cargas de trabajo dinámico (DWS), como las solicitudes de cambio de tamaño en un MIG. Para obtener instrucciones detalladas sobre cualquiera de estas opciones, consulta lo siguiente:
    • No puedes usar Hyperdisk Balanced con estos tipos de máquinas.
    • No puedes crear reservas.
    Si intentas crear una VM con el aprovisionamiento estándar o intentas crear una reserva para estos tipos de máquinas, recibirás un mensaje de error.

VMs estándar A2

  • No recibirás descuentos por uso continuo ni descuentos por compromiso de uso flexibles para las VMs que usan tipos de máquinas A2 estándar.
  • Solo puedes usar los tipos de máquinas A2 estándar en ciertas regiones y zonas.
  • No puedes usar discos persistentes regionales en VMs que usan tipos de máquinas A2 estándar.
  • Los tipos de máquinas A2 estándar solo están disponibles en la plataforma Cascade Lake.
  • Si tu VM usa un tipo de máquina estándar A2, solo puedes cambiar de un tipo de máquina estándar A2 a otro. No puedes cambiar a ningún otro tipo de máquina. Para obtener más información, consulta Modifica las VMs optimizadas para aceleradores.
  • No puedes usar el sistema operativo Windows con <codea2-megagpu-16g< código="" dir="ltr" translate="no"> los tipos de máquinas estándar A2. Cuando uses los sistemas operativos Windows, elige otro tipo de máquina A2 estándar.</codea2-megagpu-16g<>
  • No puedes realizar un formateo rápido de los SSD locales conectados en las VMs de Windows que usan los tipos de máquinas A2 estándar. Para formatear estos SSD locales, debes realizar un formateo completo mediante el uso de la utilidad diskpart y la especificación de format fs=ntfs label=tmpfs.
  • Los tipos de máquinas A2 estándar no admiten usuarios únicos.

VMs A2 ultra

  • No recibirás descuentos por uso continuo ni descuentos flexibles por compromiso de uso para las VMs que usan tipos de máquinas A2 ultra.
  • Solo puedes usar los tipos de máquinas A2 ultra en ciertas regiones y zonas.
  • No puedes usar discos persistentes regionales en VMs que usan tipos de máquinas A2 ultra.
  • Los tipos de máquinas A2 ultra solo están disponibles en la plataforma Cascade Lake.
  • Si tu VM usa un tipo de máquina A2 ultra, no puedes cambiar el tipo de máquina. Si necesitas usar un tipo de máquina A2 ultra diferente o cualquier otro tipo de máquinas, debes crear una VM nueva.
  • No puedes cambiar ningún otro tipo de máquina a uno A2 ultra. Si necesitas crear una VM que use un tipo de máquina A2 ultra, debes crear una VM nueva.
  • No puedes realizar un formateo rápido de las SSD locales conectados en las VMs de Windows que usan los tipos de máquinas A2 ultra. Para formatear estos SSD locales, debes realizar un formateo completo mediante el uso de la utilidad diskpart y la especificación de format fs=ntfs label=tmpfs.

VMs G2

  • No recibirás descuentos por uso continuo ni descuentos flexibles por compromiso de uso para las VMs que usan tipos de máquinas G2.
  • Solo puedes usar los tipos de máquinas G2 en ciertas regiones y zonas.
  • No puedes usar discos persistentes regionales en VMs que usan tipos de máquinas G2.
  • Los tipos de máquinas G2 solo están disponibles en la plataforma Cascade Lake.
  • Los discos persistentes estándar (pd-standard) no son compatibles con las VM que usan tipos de máquina estándar G2. Para conocer los tipos de discos compatibles, consulta Tipos de discos compatibles con G2.
  • No puedes crear GPU de instancias múltiples en los tipos de máquinas G2.
  • Si necesitas cambiar el tipo de máquina de una VM G2, revisa Modifica las VMs optimizadas para aceleradores.
  • No puedes usar imágenes de Deep Learning VM Image como discos de arranque para las VMs que usan tipos de máquinas G2.
  • El controlador predeterminado actual para Container-Optimized OS no es compatible con las GPU L4 que se ejecutan en los tipos de máquinas G2. Container-Optimized OS solo admite un conjunto selecto de controladores. Si deseas usar Container-Optimized OS en tipos de máquinas G2, revisa las siguientes notas:
    • Usa una versión de Container-Optimized OS que sea compatible con la versión mínima recomendada del controlador NVIDIA 525.60.13 o posterior. Para obtener más información, revisa las notas de la versión de Container-Optimized OS.
    • Cuando instalas el controlador, especifica la versión más reciente disponible que funcione para las GPU L4. Un ejemplo es sudo cos-extensions install gpu -- -version=525.60.13.
  • Debes usar Google Cloud CLI o REST para crear VMs de G2 en las siguientes situaciones:
    • Deseas especificar valores de memoria personalizados.
    • Deseas personalizar la cantidad de núcleos de CPU visibles.

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 NVIDIA RTX Virtual Workstation (vWS) a tu VM.

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