Crea una VM N1 que tenga GPUs conectadas


En este documento, se explica cómo crear una VM que tenga GPUs conectadas y usa una familia de máquinas N1. Puedes usar la mayoría de los tipos de máquina N1, excepto N1 shared-core.

Antes de comenzar

  • Para revisar los pasos de requisitos previos adicionales, como elegir 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 un código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.

    Selecciona la pestaña para saber cómo planeas usar las muestras en esta página:

    Consola

    Cuando usas la consola de Google Cloud para acceder a los servicios y las APIs de Google Cloud, no necesitas configurar la autenticación.

    gcloud

    1. Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init
    2. Configura una región y una zona predeterminadas.

    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.

      Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init

Funciones obligatorias

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.

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 funciones personalizadas o con otras funciones predefinidas

Descripción general

Los siguientes modelos de GPU se pueden adjuntar a las VMs que usan familias de máquinas N1.

GPU de NVIDIA:

  • NVIDIA T4: nvidia-tesla-t4
  • NVIDIA P4: nvidia-tesla-p4
  • NVIDIA P100: nvidia-tesla-p100
  • NVIDIA V100: nvidia-tesla-v100
  • NVIDIA K80: nvidia-tesla-k80. Consulta NVIDIA K80 EOL.

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.

Crea una VM que tenga GPUs conectadas

Puedes crear una VM N1 que tenga GPU conectadas mediante la consola de Google Cloud, Google Cloud CLI o REST.

Consola

  1. En la consola de Google Cloud, ve a la página Crea una instancia.

    Ir a Crear una instancia

  2. Especifica un Nombre para la VM. Consulta la convención de asignación de nombres de recursos.

  3. Selecciona una región y una zona en las que las GPU estén disponibles. Consulta la lista de zonas de GPU disponibles.

  4. En la sección Configuración de la máquina, selecciona la familia de máquinas GPU y, luego, haz lo siguiente:

    1. En la lista Tipo de GPU, selecciona uno de los modelos de GPU compatibles con las máquinas N1.
    2. En la lista Cantidad de GPU, selecciona la cantidad.
    3. Si tu modelo de GPU es compatible con estaciones de trabajo virtuales (vWS) de NVIDIA RTX para cargas de trabajo de gráficos y planeas ejecutar cargas de trabajo de alto contenido gráfico en esta VM, selecciona Habilitar Estación de trabajo virtual (NVIDIA GRID):

    4. En la lista Tipo de máquina, selecciona uno de los tipos de máquina N1 predeterminados. Como alternativa, también puedes especificar una configuración de tipo personalizado de máquina.

  5. En la sección Disco de arranque, haz clic en Cambiar. Se abrirá la página Configuración del disco de arranque.

  6. En la página Configuración del disco de arranque, haz lo siguiente:

    1. En la pestaña Imágenes públicas, elige una imagen de Compute Engine compatible o una Deep Learning VM Image.
    2. Especifica un tamaño de disco de arranque de al menos 40 GB.
    3. Para confirmar las opciones del disco de arranque, haz clic en Seleccionar.
  7. Expanda la sección Opciones avanzadas.

    1. Expande la sección Administración.
    2. En la lista Mantenimiento en el host , selecciona Finalizar instancia de VM. Las VM con GPU conectadas no pueden migrar en vivo. Consulta Controla eventos del host de GPU.
    3. En la lista Reinicio automático, selecciona Desactivado.
  8. Establece cualquier otra configuración de VM que necesites. Por ejemplo, puedes cambiar la configuración de Interrumpibilidad para establecer tu VM como instancia interrumpible. Esto reduce el costo de tu VM y las GPU adjuntas. Para obtener más información, consulta GPU en instancias interrumpibles.

  9. Para crear y, también, iniciar la VM, haz clic en Crear.

gcloud

Para crear y, luego, iniciar una VM, usa el comando gcloud compute instances create con las siguientes marcas.

--preemptible es una marca opcional que configura tu VM como una instancia interrumpible. Esto reduce el costo de tu VM y las GPU adjuntas. Para obtener más información, consulta GPU en instancias interrumpibles.

gcloud compute instances create VM_NAME \
    --machine-type MACHINE_TYPE \
    --zone ZONE \
    --boot-disk-size DISK_SIZE \
    --accelerator type=ACCELERATOR_TYPE,count=ACCELERATOR_COUNT \
    [--image IMAGE | --image-family IMAGE_FAMILY] \
    --image-project IMAGE_PROJECT \
    --maintenance-policy TERMINATE --restart-on-failure \
    [--preemptible]

Reemplaza lo siguiente:

  • VM_NAME: el nombre de la VM nueva
  • MACHINE_TYPE: El tipo de máquina que seleccionaste para la VM.
  • ZONE: La zona para la VM. Esta zona debe ser compatible con el tipo de GPU especificado.
  • DISK_SIZE: El tamaño de tu disco de arranque en GB Especifica un tamaño de disco de arranque de al menos 40 GB.
  • IMAGE o IMAGE_FAMILY que admiten GPU Especifica una de las siguientes opciones:

    • IMAGE: Es la versión requerida de una imagen pública. Por ejemplo, --image debian-10-buster-v20200309.
    • IMAGE_FAMILY: Es una familia de imágenes. Esto crea la VM a partir de la imagen de SO no obsoleta más reciente. Por ejemplo, si especificas --image-family debian-10, Compute Engine crea una VM a partir de la última versión de la imagen de SO en la familia de imágenes Debian 10.

    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 familia de imágenes Si usas una imagen personalizada o Deep Learning VM Images, especifica el proyecto al que pertenecen esas imágenes.

  • ACCELERATOR_COUNT: la cantidad de GPU que deseas agregar a tu VM Consulta GPU en Compute Engine para obtener una lista de los límites de GPU en función del tipo de máquina de tu VM.

  • ACCELERATOR_TYPE: el modelo de GPU que deseas usar. Si planeas ejecutar cargas de trabajo de alto contenido gráfico en esta VM, usa uno de los modelos de estación de trabajo virtual.

    Elige uno de los siguientes valores:

    • GPU de NVIDIA:

      • NVIDIA T4: nvidia-tesla-t4
      • NVIDIA P4: nvidia-tesla-p4
      • NVIDIA P100: nvidia-tesla-p100
      • NVIDIA V100: nvidia-tesla-v100
      • NVIDIA K80: nvidia-tesla-k80. Consulta NVIDIA K80 EOL.
    • 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.

Ejemplo

Por ejemplo, puedes usar el siguiente comando gcloud para iniciar una VM de Ubuntu 22.04 con 1 GPU NVIDIA T4 y 2 CPU virtuales en la zona us-east1-d.

gcloud compute instances create gpu-instance-1 \
    --machine-type n1-standard-2 \
    --zone us-east1-d \
    --boot-disk-size 40GB \
    --accelerator type=nvidia-tesla-t4,count=1 \
    --image-family ubuntu-2204-lts \
    --image-project ubuntu-os-cloud \
    --maintenance-policy TERMINATE --restart-on-failure

REST

Identifica el tipo de GPU que deseas agregar a tu VM. Envía una solicitud GET a fin de enumerar los tipos de GPU que están disponibles para tu proyecto en una zona específica.

El "preemptible": true es un parámetro opcional que configura tu VM como una instancia interrumpible. Esto reduce el costo de tu VM y las GPU adjuntas. Para obtener más información, consulta GPU en instancias interrumpibles.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/acceleratorTypes

Reemplaza lo siguiente:

  • PROJECT_ID: ID del proyecto
  • ZONE: la zona desde la que deseas enumerar los tipos de GPU disponibles.

Envía una solicitud POST al método instances.insert. Incluye el parámetro acceleratorType a fin de especificar qué tipo de GPU deseas usar y el parámetro acceleratorCount para especificar cuántas GPU deseas agregar. Establece también el parámetro onHostMaintenance en TERMINATE.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "machineType": "projects/PROJECT_ID/zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks":
  [
    {
      "type": "PERSISTENT",
      "initializeParams":
      {
        "diskSizeGb": "DISK_SIZE",
        "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
      },
      "boot": true
    }
  ],
  "name": "VM_NAME",
  "networkInterfaces":
  [
    {
      "network": "projects/PROJECT_ID/global/networks/NETWORK"
    }
  ],
  "guestAccelerators":
  [
    {
      "acceleratorCount": ACCELERATOR_COUNT,
      "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/ACCELERATOR_TYPE"
    }
  ],
  "scheduling":
  {
    "onHostMaintenance": "terminate",
    "automaticRestart": true,
    ["preemptible": true]
  },
}

Reemplaza lo siguiente:

  • VM_NAME: el nombre de la VM
  • PROJECT_ID: el ID de tu proyecto
  • ZONE: La zona para la VM. Esta zona debe ser compatible con el tipo de GPU especificado.
  • MACHINE_TYPE: El tipo de máquina que seleccionaste para la instancia. Consulta GPU en Compute Engine para ver qué tipos de máquinas están disponibles en función del conteo de GPU deseado
  • IMAGE o IMAGE_FAMILY: Especifica una de las siguientes opciones:

    • IMAGE: Especifica la versión requerida de una imagen pública. Por ejemplo:"sourceImage": "projects/debian-cloud/global/images/debian-10-buster-v20200309"
    • IMAGE_FAMILY: Es una familia de imágenes. Esto crea la VM a partir de la imagen de SO no obsoleta más reciente. Por ejemplo, si especificas "sourceImage": "projects/debian-cloud/global/images/family/debian-10", Compute Engine crea una VM a partir de la última versión de la imagen de SO en la familia de imágenes Debian 10.

    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 familia de imágenes Si usas una imagen personalizada o Deep Learning VM Image, especifica el proyecto al que pertenecen esas imágenes.

  • DISK_SIZE: El tamaño de tu disco de arranque en GB Especifica un tamaño de disco de arranque de al menos 40 GB.

  • NETWORK: la red de VPC que deseas usar para la VM Puedes especificar default para usar tu red predeterminada

  • ACCELERATOR_COUNT: la cantidad de GPU que deseas agregar a tu VM Consulta GPU en Compute Engine para obtener una lista de los límites de GPU en función del tipo de máquina de tu VM.

  • ACCELERATOR_TYPE: el modelo de GPU que deseas usar. Si planeas ejecutar cargas de trabajo de alto contenido gráfico en esta VM, usa uno de los modelos de estación de trabajo virtual.

    Elige uno de los siguientes valores:

    • GPU de NVIDIA:

      • NVIDIA T4: nvidia-tesla-t4
      • NVIDIA P4: nvidia-tesla-p4
      • NVIDIA P100: nvidia-tesla-p100
      • NVIDIA V100: nvidia-tesla-v100
      • NVIDIA K80: nvidia-tesla-k80. Consulta NVIDIA K80 EOL.
    • 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 VM.

Instalar controladores

Para instalar los controladores, elige una de las siguientes opciones:

Próximos pasos