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
- Si deseas usar los ejemplos de línea de comandos en esta guía, haz lo siguiente:
- Instala la herramienta de línea de comandos de gcloud o actualízala a la última versión.
- Configura una región y una zona predeterminadas.
- Si deseas usar los ejemplos de API de esta guía, configura el acceso a la API.
- Lee sobre los precios de GPU en Compute Engine para obtener más información sobre el costo del uso de GPU en las instancias.
- Lee sobre las restricciones para las instancias con GPU a fin de saber en qué se diferencian estas instancias de la mayoría.
- Obtén información sobre el funcionamiento de las instancias cuando las programas a fin de que se detengan para los eventos de mantenimiento del host. Si agregas GPU a tus instancias, también debes configurar la instancia para que se detenga durante el mantenimiento del host.
- Consulta la página de cuotas a fin de asegurarte de que tienes suficientes GPU disponibles para tu proyecto. Si necesitas cuota adicional de GPU, solicita un aumento de cuota.
- Elige una imagen del sistema operativo:
- Si usas GPU para el aprendizaje automático, puedes usar una imagen de VM de aprendizaje profundo en tu instancia. Las imágenes de VM de aprendizaje profundo tienen controladores de GPU preinstalados y, además, incluyen paquetes como TensorFlow y PyTorch. También puedes usar las imágenes de VM de aprendizaje profundo para cargas de trabajo generales de GPU. Para obtener información sobre las imágenes disponibles y los paquetes instalados en ellas, consulta la documentación de VM de aprendizaje profundo.
- También puedes usar cualquier imagen pública o imagen personalizada, pero algunas imágenes pueden requerir un controlador único o un proceso de instalación que no figura en esta guía. Debes identificar qué controladores son apropiados para tus imágenes. Si deseas conocer los pasos para instalar controladores, consulta la sección sobre cómo instalar controladores de GPU.
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
- Ve a la página Instancias de VM.
- Haga clic en Crear instancia.
- Selecciona una zona en la que las GPU estén disponibles. Consulta la lista de zonas disponibles con GPU.
- 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.
- 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.
- Haz clic en GPU para ver la lista de GPU disponibles.
- Especifica el tipo y la cantidad de GPU que necesita.
- 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.
- Para configurar tu disco de arranque, en la sección Disco de arranque, haz clic en Cambiar.
- En la pestaña Imágenes públicas, elige un sistema operativo y una versión.
- Haz clic en Guardar para confirmar las opciones del disco de arranque.
- 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.
- 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 nuevamachine-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 deseadozone
: la zona de la instanciaimage-family
: Una familia de imágenes que admite GPUimage-project
: El proyecto de imagen al que pertenece la familia de imágenesaccelerator-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 instanciaaccelerator-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.
- NVIDIA® Tesla® T4:
--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 proyectozone
: 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 instanciaproject-id
: ID del proyectozone
: la zona de la instanciamachine-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 deseadoimage-family
: Una imagen de disco de arranque para tu instancia. Especifica una familia de imágenes de la lista de imágenes públicas disponiblesimage-project
: El proyecto de imagen al que pertenece la familia de imágenesdisk-size
: El tamaño de tu disco de arranque en GBnetwork
: La red de VPC que deseas usar para la instancia. Puedes especificardefault
para usar tu red predeterminadaaccelerator-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 instanciaaccelerator-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.
Verifica que todas las aplicaciones importantes estén detenidas en la instancia.
Ve a la página de instancias de VM para ver tu lista de instancias.
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.
Completa los siguientes pasos desde la página Detalles de la instancia de VM.
En la parte superior de la página, haz clic en Detener para detener la instancia.
Una vez que la instancia se detenga, haz clic en Editar para cambiar sus propiedades.
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.
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.
Haz clic en Agregar GPU. Si tienes GPU existentes, estas aparecen en lugar de la sección Agregar GPU.
Haz clic en Tipo de GPU para ver la lista de GPU disponibles.
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.
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.
En la parte inferior de la página, haz clic en Guardar para aplicar los cambios.
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.
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:
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
: ID del proyectozone
: La zona en la que deseas enumerar los tipos de GPU disponibles.
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.
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 instanciaproject-id
: ID del proyectozone
: La zona de la instanciaaccelerator-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 Engineaccelerator-type
: El modelo de GPU que deseas usar Para obtener una lista de los modelos de GPU disponibles, consulta GPU en Compute Engine.
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 GPUzone
: La zona en la que se encuentra la instanciamaintenance-type
: La acción que deseas que lleve a cabo tu instancia cuando sea necesario realizar un mantenimiento del host. EspecificaTERMINATE
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.
Inicia la instancia.
POST https://compute.googleapis.com/compute/v1/projects/compute/zones/zone/instances/instance-name/start
Reemplaza lo siguiente:
A continuación, instala el controlador de GPU en tu instancia para que tu sistema pueda usar el dispositivo.
Próximos pasos
- Obtén más información sobre las GPU en Compute Engine.
- Agrega SSD locales a tus instancias. Los dispositivos SSD locales se combinan bien con las GPU cuando tus apps requieren almacenamiento de alto rendimiento.
- Crea grupos de instancias de GPU con plantillas de instancias.
- Para supervisar el rendimiento de la GPU, consulta la página sobre cómo supervisar el rendimiento de las GPU.
- Para optimizar el rendimiento de la GPU, consulta Optimiza el rendimiento de las GPU.
- Para controlar el mantenimiento del host de la GPU, consulta la página sobre cómo controlar eventos de mantenimiento del host de la GPU.
- Prueba el instructivo sobre la ejecución de las cargas de trabajo de inferencia de TensorFlow a gran escala con TensorRT5 y GPU NVIDIA T4.