Crea un MIG con VMs de GPU


En este documento, se describe cómo crear un grupo de instancias administrado (MIG) con VMs de GPU. Se describe cómo agregar VMs de GPU de una sola vez al grupo mediante solicitudes de cambio de tamaño.

El uso de una solicitud de cambio de tamaño mejora la capacidad de obtención de las VMs de GPU en un MIG. En la solicitud, especifica la cantidad de VMs de GPU y la duración para la que deseas ejecutar esas VMs. Un mecanismo de programador subyacente controla todas las solicitudes de cambio de tamaño en Compute Engine y programa de manera eficiente las solicitudes en función de las duraciones y la disponibilidad de las VMs. Cuando los recursos están disponibles, el MIG crea las VMs de forma automática.

Si el trabajo que se ejecuta en estas VMs finaliza antes de la duración solicitada, puedes borrar esas VMs. De lo contrario, el MIG borra de forma automática las VMs cuando finaliza la duración.

También puedes leer sobre otras situaciones básicas para crear un MIG.

Antes de comenzar

  • A fin de asegurarte de que tienes suficiente cuota de GPU para los recursos que solicitas, verifica tu cuota de GPU.
  • 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 un código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.

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

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    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.

Limitaciones

Revisa las limitaciones para crear una solicitud de cambio de tamaño en un MIG.

Crea un MIG y agrega las VMs de GPU de una sola vez

Para crear un MIG y agregar las VMs de GPU de una sola vez en el grupo, haz lo siguiente:

  1. Crea una plantilla de instancias, que es necesaria para crear un MIG. El MIG crea cada VM en el grupo según la plantilla de instancias. En la plantilla, especifica la configuración para las VMs de GPU y las opciones de configuración adicionales necesarias a fin de usar solicitudes de cambio de tamaño.

    Para obtener más información sobre las plantillas de instancias, consulta Acerca de las plantillas de instancias.

  2. Crea un MIG y una solicitud de cambio de tamaño para agregar VMs de GPU de una sola vez.

Crea una plantilla de instancias

Crea una plantilla de instancias como se describe en esta sección y, luego, úsala para crear un MIG.

Console

  1. Ve a la página Plantillas de instancias.

    Ir a Plantillas de instancia

  2. Haz clic en Crear plantilla de instancias.

  3. En el campo Nombre, ingresa un nombre para la plantilla de instancias.

  4. En la sección Configuración de la máquina, haz lo siguiente:

    1. Haz clic en la pestaña GPU.
    2. En la lista Tipo de GPU, selecciona el tipo de GPU.
    3. En la lista Cantidad de GPU, elige la cantidad.
    4. En la sección Tipo de máquina, selecciona un tipo de máquina.
  5. Expande la sección Opciones avanzadas y sigue estos pasos:

    1. Expande la sección Administración.
    2. En la lista Reservas, selecciona No usar.
  6. Haz clic en Crear.

gcloud

Crea una plantilla de instancias con el comando instance-templates create.

El siguiente comando crea una plantilla de instancias global.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --reservation-affinity=none

Reemplaza lo siguiente:

  • INSTANCE_TEMPLATE_NAME: el nombre de la plantilla de instancias.
  • MACHINE_TYPE: un tipo de máquina que admite GPU. Si especificas un tipo de máquina N1, incluye la marca --accelerator para especificar la cantidad y el tipo de GPU que conectarás a las VMs.

REST

Crea una plantilla de instancias mediante una solicitud POST al método instanceTemplates.insert.

En la siguiente solicitud, se crea una plantilla de instancias global:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "mode": "READ_WRITE",
        "type": "PERSISTENT",
        "initializeParams": {
          "sourceImage": "projects/debian-cloud/global/images/family/debian-10"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "accessConfigs": [
          {
            "name": "external-IP",
            "type": "ONE_TO_ONE_NAT"
          }
        ],
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "NO_RESERVATION"
    },
    "scheduling": {
      "onHostMaintenance": "TERMINATE"
    }
  }
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto en el que deseas crear el MIG.
  • INSTANCE_TEMPLATE_NAME: el nombre de la plantilla de instancias.
  • MACHINE_TYPE: un tipo de máquina que admite GPU. Si especificas un tipo de máquina N1, incluye el campo guestAccelerators para especificar la cantidad y el tipo de GPU que conectarás a las VMs.

Crea un MIG y agrega las VMs de GPU de una sola vez

Crea un MIG con reparaciones desactivadas como se describe en esta sección. Para usar la solicitud de cambio de tamaño en el MIG, no debes configurar el ajuste de escala automático en el grupo.

gcloud

  1. Crea un MIG zonal con el comando instance-groups managed create en fase beta.

    gcloud beta compute instance-groups managed create INSTANCE_GROUP_NAME \
       --template=INSTANCE_TEMPLATE_NAME \
       --size=0 \
       --zone=ZONE \
       --default-action-on-vm-failure=do_nothing
    
  2. En el MIG, crea una solicitud de cambio de tamaño con el comando instance-groups managed resize-requests create beta. Especifica la cantidad de VM de GPU que deseas y la duración de la ejecución de esas VMs.

    gcloud beta compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \
       --resize-request=RESIZE_REQUEST_NAME \
       --resize-by=COUNT \
       --requested-run-duration=RUN_DURATION\
       --zone=ZONE
    

Reemplaza lo siguiente:

  • INSTANCE_GROUP_NAME: Es el nombre del MIG.
  • INSTANCE_TEMPLATE_NAME: el nombre de la plantilla de instancias para las VMs de GPU.
  • ZONE: Una de las zonas disponibles para Compute Engine.
  • RESIZE_REQUEST_NAME: el nombre de la solicitud de cambio de tamaño.
  • COUNT: la cantidad de VMs que se agregarán a la vez en el grupo.
  • RUN_DURATION: la duración que deseas que se ejecuten las VMs solicitadas. El valor debe tener el formato de la cantidad de días, horas, minutos o segundos, seguidos de d, h, m y s, respectivamente. Por ejemplo, especifica 30m para 30 minutos o 1d2h3m4s para 1 día, 2 horas, 3 minutos y 4 segundos. El valor debe ser de entre 10 minutos y 7 días.

REST

  1. Crea un MIG zonal mediante una solicitud POST al método instanceGroupManagers.insert beta.

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    
    {
     "versions": [
       {
         "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME"
       }
     ],
     "name": "INSTANCE_GROUP_NAME",
     "targetSize": 0,
     "instanceLifecyclePolicy": {
       "defaultActionOnFailure": "DO_NOTHING"
     }
    }
    
  2. En el MIG, crea una solicitud de cambio de tamaño mediante una solicitud POST al método instanceGroupManagerResizeRequests.insert beta. En el cuerpo de la solicitud, especifica la cantidad de VM de GPU que deseas crear a la vez y la duración por la que deseas ejecutar esas VMs.

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeRequests
    
    {
     "name": "RESIZE_REQUEST_NAME",
     "resizeBy": COUNT,
     "requestedRunDuration": {
       "seconds": "RUN_DURATION"
     }
    }
    

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto en el que deseas crear el MIG.
  • INSTANCE_GROUP_NAME: Es el nombre del MIG.
  • INSTANCE_TEMPLATE_NAME: el nombre de la plantilla de instancias para las VMs de GPU.
  • ZONE: Una de las zonas disponibles para Compute Engine.
  • RESIZE_REQUEST_NAME: el nombre de la solicitud de cambio de tamaño.
  • COUNT: la cantidad de VMs que se agregarán a la vez en el grupo.
  • RUN_DURATION: el tiempo, en segundos, por el que deseas que se ejecuten las VMs solicitadas antes de que el MIG las borre de forma automática. El valor debe estar entre 600, que es 600 segundos (10 minutos), y 604800, que es 604,800 segundos (7 días).

La solicitud de cambio de tamaño que creas permanece en el estado ACCEPTED hasta que el MIG crea todas las VMs de GPU solicitadas. Después de crear todas las VMs de GPU en el grupo, el estado de la solicitud cambia a SUCCEEDED.

¿Qué sigue?