Agrega o quita GPU

Compute Engine proporciona unidades de procesamiento de gráficos (GPU) que puedes agregar a tus instancias de máquina virtual. Puedes usar estas GPU para acelerar cargas de trabajo específicas en las instancias, como aprendizaje automático y procesamiento de datos.

Para obtener más información sobre lo que puedes hacer con las GPU y qué tipos de hardware de GPU están disponibles, consulta GPU en Compute Engine.

Antes de comenzar

Crea una instancia con una GPU

Cuando creas una instancia con una o más GPU, debes configurarla para que se detenga durante el mantenimiento del host. Las instancias con GPU no pueden migrar en vivo porque están asignadas a dispositivos de hardware específicos. Consulta las restricciones de GPU para obtener más detalles.

Crea una instancia con una o más GPU en Google Cloud Console, la herramienta de línea de comandos de gcloud o la API de Compute Engine.

Console

  1. Ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Haz clic en Crear instancia.
  3. Selecciona una zona en la que las GPU estén disponibles. Consulta la lista de zonas disponibles con GPU.
  4. En la sección Configuración de máquina, selecciona el tipo de máquina que deseas usar para esta instancia. Como alternativa, puedes especificar la configuración de tipo personalizado de máquina si lo deseas.
  5. En la sección Configuración de máquina, haz clic en Plataforma de CPU y GPU para ver las opciones avanzadas de tipo de máquina y las GPU disponibles.
  6. Haz clic en GPU para ver la lista de GPU disponibles.
  7. Especifica el tipo y la cantidad de GPU que necesita.
  8. Si es necesario, ajusta el tipo de máquina para que se adapte a la configuración de GPU deseada. Si dejas esta configuración como está, la instancia usa el tipo predefinido de máquina que especificaste antes de abrir la pantalla de personalización del tipo de máquina.
  9. Para configurar tu disco de arranque, en la sección Disco de arranque, haz clic en Cambiar.
  10. En la pestaña Imágenes públicas, elige un sistema operativo y una versión.
  11. Haz clic en Guardar para confirmar las opciones del disco de arranque.
  12. Establece cualquier otra configuración de instancia que necesites. Por ejemplo, puedes cambiar la configuración de Interrumpibilidad para establecer tu instancia como interrumpible. Esto reduce el costo de tu instancia y las GPU adjuntas. Consulta GPU en instancias interrumpibles para obtener más información.
  13. En la parte inferior de la página, haz clic en Crear para crear la instancia.

gcloud

Usa el comando regions describe para asegurarte de tener suficiente cuota de GPU en la región en la que deseas crear las instancias con GPU. Reemplaza region por la región que deseas verificar para la cuota de GPU.

gcloud compute regions describe region

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

gcloud compute instances create instance-name \
    --machine-type machine-type --zone zone \
    --accelerator type=accelerator-type,count=accelerator-count \
    --image-family image-family --image-project image-project \
    --maintenance-policy TERMINATE --restart-on-failure \
    [--preemptible]

Reemplaza lo siguiente:

  • instance-name: el nombre de la instancia nueva
  • 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
  • zone: La zona para la instancia
  • image-family: Una familia de imágenes que admite GPU
  • image-project: El proyecto de imagen al que pertenece la familia de imágenes
  • accelerator-count: La cantidad de GPU que deseas agregar a tu instancia. 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 instancia
  • accelerator-type: El modelo de GPU que deseas usar Usa uno de los siguientes valores:

    • NVIDIA® Tesla® T4: nvidia-tesla-t4
    • NVIDIA® Tesla® T4 Virtual Workstation con NVIDIA® GRID®: nvidia-tesla-t4-vws
    • NVIDIA® Tesla® P4: nvidia-tesla-p4
    • NVIDIA® Tesla® P4 Virtual Workstation con NVIDIA® GRID®: nvidia-tesla-p4-vws
    • NVIDIA® Tesla® P100: nvidia-tesla-p100
    • NVIDIA® Tesla® P100 Virtual Workstation con NVIDIA® GRID®: nvidia-tesla-p100-vws
    • NVIDIA® Tesla® V100: nvidia-tesla-v100
    • NVIDIA® Tesla® K80: nvidia-tesla-k80

    Consulta GPU en Compute Engine para obtener una lista de los modelos de GPU disponibles.

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

Por ejemplo, puedes usar el siguiente comando gcloud para iniciar una instancia de Ubuntu 16.04 con 1 GPU NVIDIA Tesla K80 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 \
    --accelerator type=nvidia-tesla-k80,count=1 \
    --image-family ubuntu-1604-lts --image-project ubuntu-os-cloud \
    --maintenance-policy TERMINATE --restart-on-failure

Con este comando de ejemplo, se inicia la instancia, pero CUDA y el controlador ya deben estar instalados en la instancia de antemano.

API

Identifica el tipo de GPU que deseas agregar a tu instancia. 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.

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/acceleratorTypes

Reemplaza lo siguiente:

  • project-id: El ID del proyecto
  • zone: La zona en la que deseas enumerar los tipos de GPU disponibles

En la API, crea una solicitud POST para crear una instancia nueva. 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?key={YOUR_API_KEY}
{
  "machineType": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/machineTypes/machine-type",
  "disks":
  [
    {
      "type": "PERSISTENT",
      "initializeParams":
      {
        "diskSizeGb": "disk-size",
        "sourceImage": "https://www.googleapis.com/compute/v1/projects/image-project/global/images/family/image-family"
      },
      "boot": true
    }
  ],
  "name": "instance-name",
  "networkInterfaces":
  [
    {
      "network": "https://www.googleapis.com/compute/v1/projects/project-id/global/networks/network"
    }
  ],
  "guestAccelerators":
  [
    {
      "acceleratorCount": accelerator-count,
      "acceleratorType": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/acceleratorTypes/accelerator-type"
    }
  ],
  "scheduling":
  {
    "onHostMaintenance": "terminate",
    "automaticRestart": true,
    ["preemptible": true]
  },
}

Reemplaza lo siguiente:

  • instance-name: el nombre de la instancia
  • project-id: el ID de tu proyecto
  • zone: la zona de la instancia
  • 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-family: Una imagen de disco de arranque para tu instancia. Especifica una familia de imágenes de la lista de imágenes públicas disponibles
  • image-project: El proyecto de imagen al que pertenece la familia de imágenes
  • disk-size: El tamaño de tu disco de arranque en GB
  • network: La red de VPC que deseas usar para la instancia. Puedes especificar default para usar tu red predeterminada
  • accelerator-count: La cantidad de GPU que deseas agregar a tu instancia. 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 instancia
  • accelerator-type: El modelo de GPU que deseas usar. Consulta GPU en Compute Engine para obtener una lista de los modelos de GPU disponibles
  • "preemptible": true es un parámetro opcional que configura tu instancia como interrumpible. Esto reduce el costo de tu instancia y las GPU adjuntas. Para obtener más información, consulta GPU en instancias interrumpibles.

Instala el controlador de GPU en tu instancia para que tu sistema pueda usar el dispositivo.

Agrega o quita GPU en instancias existentes

Puedes agregar o desconectar GPU en tus instancias existentes, pero primero debes detener la instancia y cambiar su configuración de mantenimiento del host para que se detenga en lugar de migrar en vivo. Las instancias con GPU no pueden migrar en vivo porque están asignadas a dispositivos de hardware específicos. Consulta las restricciones de GPU para obtener más detalles.

También ten en cuenta que debes instalar los controladores de GPU en esta instancia después de agregar una GPU. La imagen del disco de arranque que usaste para crear esta instancia determina qué controladores necesitas. Debes identificar qué controladores son apropiados para el sistema operativo en las imágenes de disco de arranque persistente de tu instancia. Consulta Instala controladores de GPU para obtener más detalles.

Puedes agregar o quitar GPU de una instancia con Google Cloud Console o la API.

Console

Puedes agregar o quitar GPU de tu instancia si la detienes y editas su configuración.

  1. Verifica que todas las aplicaciones importantes estén detenidas en la instancia.

  2. Ve a la página de instancias de VM para ver tu lista de instancias.

    Ve a la página Instancias de VM

  3. Haz clic en el nombre de la instancia en la que deseas agregar las GPU. Se abrirá la página Detalles de la instancia de VM.

  4. Completa los siguientes pasos desde la página Detalles de la instancia de VM.

    1. En la parte superior de la página, haz clic en Detener para detener la instancia.

    2. Una vez que la instancia se detenga, haz clic en Editar para cambiar sus propiedades.

    3. Si la instancia tiene un tipo de máquina de núcleo compartido, debes cambiar el tipo de máquina para que tenga una o más CPU virtuales. No puedes agregar aceleradores a instancias con tipos de máquina de núcleo compartido.

    4. En la sección Configuración de máquina, haz clic en Plataforma de CPU y GPU para ver las opciones avanzadas de tipo de máquina y las GPU disponibles.

    5. Haz clic en Agregar GPU. Si tienes GPU existentes, estas aparecen en lugar de la sección Agregar GPU.

    6. Haz clic en Tipo de GPU para ver la lista de GPU disponibles.

    7. Selecciona la cantidad y el modelo de GPU que deseas agregar a tu instancia. Como alternativa, puedes hacer clic en la X que se encuentra junto a la GPU existente para quitar una GPU.

    8. Consulta la sección Mantenimiento en el host.

      • Si agregaste GPU a una instancia, la configuración de mantenimiento del host se establece automáticamente en Finalizar instancia de VM. Consulta la sección sobre cómo administrar eventos de mantenimiento del host de GPU.
      • Si quitaste las GPU de la instancia, tienes la opción de volver a establecer la configuración de mantenimiento del host en Migrar instancia de VM.
    9. En la parte inferior de la página, haz clic en Guardar para aplicar los cambios.

    10. Después de guardar la configuración de la instancia, haz clic en Iniciar en la parte superior de la página para volver a iniciarla.

API

Puedes agregar o quitar GPU de tu instancia si la detienes y cambias su configuración a través de la API.

  1. Verifica que todas tus aplicaciones importantes estén detenidas en la instancia y, luego, crea un comando POST para detener la instancia a fin de que pueda trasladarse a un sistema host en el que las GPU estén disponibles.

    POST https://compute.googleapis.com/compute/v1/projects/compute/zones/zone/instances/instance-name/stop
    

    Reemplaza lo siguiente:

    • instance-name: el nombre de la instancia que deseas detener; esta es la instancia a la que deseas adjuntar las GPU
    • zone: La zona en la que se encuentra la instancia
  2. Identifica el tipo de GPU que deseas agregar a tu instancia. 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.

    GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/acceleratorTypes
    

    Reemplaza lo siguiente:

    • project-id: El ID de tu proyecto.
    • zone: La zona en la que deseas enumerar los tipos de GPU disponibles.
  3. Si la instancia tiene un tipo de máquina de núcleo compartido, debes cambiar el tipo de máquina para que tenga una o más CPU virtuales. No puedes agregar aceleradores a instancias con tipos de máquina de núcleo compartido.

  4. Después de que la instancia se detenga, crea una solicitud POST para agregar o quitar una o más GPU de tu instancia.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-name/setMachineResources
    
        {
         "guestAccelerators": [
          {
            "acceleratorCount": accelerator-count,
            "acceleratorType": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/acceleratorTypes/accelerator-type"
          }
         ]
        }
    

    Reemplaza lo siguiente:

    • instance-name: el nombre de la instancia
    • project-id: el ID de tu proyecto
    • zone: La zona de la instancia
    • accelerator-count: La cantidad de GPU que deseas agregar a tu instancia. Para obtener una lista de los límites de GPU en función del tipo de máquina de tu instancia, consulta GPU en Compute Engine
    • accelerator-type: El modelo de GPU que deseas usar. Para obtener una lista de los modelos de GPU disponibles, consulta GPU en Compute Engine.
  5. Crea un comando POST a fin de establecer las opciones de programación para la instancia. Si agregas GPU a una instancia, debes especificar "onHostMaintenance": "TERMINATE". De forma opcional, si quitas GPU de una instancia, puedes especificar "onHostMaintenance": "MIGRATE".

    POST https://compute.googleapis.com/compute/v1/projects/compute/zones/zone/instances/instance-name/setScheduling
    
    {
    "onHostMaintenance": "maintenance-type",
    "automaticRestart": true
    }
    

    Reemplaza lo siguiente:

    • instance-name: el nombre de la instancia a la que deseas agregar las GPU
    • zone: La zona en la que se encuentra la instancia
    • maintenance-type: La acción que deseas que lleve a cabo tu instancia cuando sea necesario realizar un mantenimiento del host. Especifica TERMINATE si agregas GPU a tu instancia. Como alternativa, puedes especificar "onHostMaintenance": "MIGRATE" si quitaste todas las GPU de tu instancia y quieres que esta reanude la migración en los eventos de mantenimiento del host.
  6. Inicia la instancia.

    POST https://compute.googleapis.com/compute/v1/projects/compute/zones/zone/instances/instance-name/start
    

    Reemplaza lo siguiente:

    • instance-name: el nombre de la instancia a la que deseas agregar las GPU
    • zone: La zona en la que se encuentra la instancia

A continuación, instala el controlador de GPU en tu instancia para que tu sistema pueda usar el dispositivo.

Próximos pasos