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 el aprendizaje automático y el 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

Antes de crear una instancia con una GPU, selecciona qué imagen de disco de arranque deseas usar y asegúrate de que esté instalado el controlador de GPU apropiado.

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 instalación de controladores de GPU.

Cuando creas una instancia con una o más GPU, debes configurarla para que finalice en 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 mediante Google Cloud Platform Console, la herramienta de línea de comandos de gcloud o la API.

Console

  1. Ve a la página de 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 de SO, elige una imagen.
  11. Haz clic en Seleccionar 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 que tienes suficiente cuota de GPU en la región en la que deseas crear instancias con GPU.

gcloud compute regions describe [REGION]

Aquí, [REGION] es la región en la que deseas verificar la cuota de GPU.

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]

Donde:

  • [INSTANCE_NAME] es el nombre de la instancia nueva.
  • [MACHINE_TYPE] es 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] es la zona para esta instancia.
  • [IMAGE_FAMILY] es una de las familias de imágenes disponibles.
  • [ACCELERATOR_COUNT] es 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] es 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.

  • [IMAGE_PROJECT] es el proyecto de imágenes al que pertenece esa familia de imágenes.

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

Donde:

  • [PROJECT_ID] es el ID del proyecto.
  • [ZONE] es la zona en la que deseas enumerar los tipos de GPU disponibles.

En la API, crea una solicitud POST para crear una nueva instancia. 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://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/machineTypes/n1-highmem-2",
  "disks":
  [
    {
      "type": "PERSISTENT",
      "initializeParams":
      {
        "diskSizeGb": "[DISK_SIZE]",
        "sourceImage": "https://compute.googleapis.com/compute/v1/projects/[IMAGE_PROJECT]/global/images/family/[IMAGE_FAMILY]"
      },
      "boot": true
    }
  ],
  "name": "[INSTANCE_NAME]",
  "networkInterfaces":
  [
    {
      "network": "https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/[NETWORK]"
    }
  ],
  "guestAccelerators":
  [
    {
      "acceleratorCount": [ACCELERATOR_COUNT],
      "acceleratorType": "https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/acceleratorTypes/[ACCELERATOR_TYPE]"
    }
  ],
  "scheduling":
  {
    "onHostMaintenance": "terminate",
    "automaticRestart": true,
    ["preemptible": true]
  },
}

Donde:

  • [INSTANCE_NAME] es el nombre de la instancia.
  • [PROJECT_ID] es el ID del proyecto.
  • [ZONE] es la zona para esta instancia.
  • [MACHINE_TYPE] es 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_PROJECT] es el proyecto de imágenes al que pertenece esa imagen.
  • [IMAGE_FAMILY] es una imagen de disco de arranque para tu instancia. Especifica una familia de imágenes de la lista de imágenes públicas disponibles.
  • [DISK_SIZE] es el tamaño de tu disco de arranque en GB.
  • [NETWORK] es la red de VPC que deseas usar para esta instancia. Especifica default para usar tu red predeterminada.
  • [ACCELERATOR_COUNT] es 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] es 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. Consulta GPU en instancias interrumpibles para obtener más información.

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 de host para que finalice 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 la instalación de controladores de GPU para obtener más detalles.

Puedes agregar o quitar GPU de una instancia mediante Google Cloud Platform 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. Debes detener la instancia antes de poder agregar una GPU.

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

    Ir a la página Instancias de VM

  3. En la lista de instancias, haz clic en el nombre de la instancia a la que deseas agregar las GPU. Se abre la página de detalles de la instancia.

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

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

  6. 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.

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

  8. Haz clic en GPU para ver la lista de GPU disponibles.

  9. Selecciona la cantidad y el modelo de GPU que deseas agregar a tu instancia. Como alternativa, puedes establecer la cantidad de GPU en Ninguna para quitar las GPU existentes de la instancia.

  10. Si agregaste GPU a una instancia, establece la configuración de mantenimiento del host en Finalizar. 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.

  11. En la parte inferior de la página de detalles de la instancia, haz clic en Guardar para aplicar los cambios.

  12. Después de guardar la configuración de la instancia, haz clic en Iniciar en la parte superior de la página de detalles de la instancia 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
    

    Donde:

    • [INSTANCE_NAME] es el nombre de la instancia en la que deseas agregar GPU.
    • [ZONE] es 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
    

    Donde:

    • [PROJECT_ID] es el ID del proyecto.
    • [ZONE] es 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://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/acceleratorTypes/[ACCELERATOR_TYPE]"
      }
     ]
    }
    

    Donde:

    • [INSTANCE_NAME] es el nombre de la instancia.
    • [PROJECT_ID] es el ID del proyecto.
    • [ZONE] es la zona para esta instancia.
    • [ACCELERATOR_COUNT] es la cantidad de GPU que deseas tener en 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] es el modelo de GPU que deseas usar. Consulta GPU en Compute Engine para obtener una lista de los modelos de GPU disponibles.
  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
    }
    

    Donde:

    • [INSTANCE_NAME] es el nombre de la instancia en la que deseas agregar GPU.
    • [ZONE] es la zona en la que se encuentra la instancia.
    • [MAINTENANCE_TYPE] es la acción que deseas que realice tu instancia cuando sea necesario el 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
    

    Donde:

    • [INSTANCE_NAME] es el nombre de la instancia en la que deseas agregar GPU.
    • [ZONE] es 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.

Crea grupos de instancias de GPU con plantillas de instancias

Puedes usar plantillas de instancias para crear grupos de instancias administrados con GPU agregadas a cada instancia. Los grupos de instancias administrados usan la plantilla para crear múltiples instancias idénticas. Puedes escalar la cantidad de instancias del grupo para que coincidan con tu carga de trabajo.

Debido a que las instancias creadas deben tener el kit de herramientas CUDA y el controlador NVIDIA instalados para usar GPU, debes crear una imagen que ya tenga el controlador instalado según las instrucciones de los pasos de instalación del controlador de GPU.

Si deseas ver los pasos para crear una plantilla de instancias, consulta Crea plantillas de instancias.

Si creas la plantilla de instancia con Console, personaliza el tipo de máquina y seleccione el tipo y la cantidad de GPU que deseas agregar a la plantilla de instancias.

Si usas la herramienta de línea de comandos de gcloud, incluye las marcas --accelerators y --maintenance-policy TERMINATE.

En el siguiente ejemplo, se crea una plantilla de instancias con 2 CPU virtuales, un disco de arranque de 250 GB basado en tu imagen (con controladores instalados) y una GPU NVIDIA Tesla K80.

gcloud beta compute instance-templates create gpu-template \
    --machine-type n1-standard-2 \
    --boot-disk-size 250GB \
    --accelerator type=nvidia-tesla-k80,count=1 \
    --image-family <MY_IMAGE_WITH_DRIVERS> \
    --maintenance-policy TERMINATE --restart-on-failure

Después de crear la plantilla, úsala para crear un grupo de instancias. Cada vez que agregas una instancia al grupo, se inicia con la configuración de la plantilla de instancias.

Si creas un grupo de instancias administrado regional, asegúrate de seleccionar zonas específicas que admitan el modelo de GPU que deseas. Para obtener una lista de los modelos de GPU y las zonas disponibles, consulta GPU en Compute Engine. En el siguiente ejemplo, se crea un grupo de instancias administrado regional en dos zonas que admiten el modelo nvidia-tesla-k80.

gcloud beta compute instance-groups managed create example-rmig \
    --template gpu-template --base-instance-name example-instances \
    --size 30 --zones us-east1-c,us-east1-d

Nota: Si eliges zonas específicas, usa el componente gcloud beta porque, en la actualidad, la característica de selección de zonas se encuentra en fase Beta.

Para obtener más información la administración y el escalamiento de grupos de instancias, consulta Crea grupos de instancias administradas.

Instala controladores de GPU

Después de crear una instancia con una o más GPU, el sistema requiere controladores de dispositivo para que las aplicaciones puedan acceder a este. En esta guía, se muestran las formas de instalar controladores propiedad de NVIDIA en instancias con imágenes públicas.

Cada versión de CUDA requiere una versión mínima del controlador de GPU o posterior. Si deseas verificar el controlador mínimo necesario para tu versión de CUDA, consulta el kit de herramientas CUDA y las versiones de controladores compatibles.

Las GPU de NVIDIA que se ejecutan en Compute Engine deben usar las siguientes versiones de controlador:

  • Instancias de Linux:

    • Controlador NVIDIA 410.79 o superior
  • Instancias de Windows Server:

    • Controlador NVIDIA 426.00 o superior

Para la mayoría de las instalaciones de controladores, puedes obtenerlos mediante la instalación del kit de herramientas CUDA de NVIDIA.

Realiza los siguientes pasos a fin de instalar CUDA y los controladores asociados para las GPU de NVIDIA®. Revisa las necesidades de tu aplicación para determinar qué versión del controlador funciona mejor. Si el software que usas requiere una versión específica de CUDA, modifica los comandos para descargarla.

Si deseas obtener información sobre la compatibilidad con CUDA y los pasos para modificar tu instalación de CUDA, consulte la documentación del kit de herramientas de CUDA.

Puedes usar este proceso para instalar controladores de forma manual en las instancias con la mayoría de las imágenes públicas. Para las imágenes personalizadas, es posible que debas modificar el proceso a fin de que funcione en tu entorno único.

Para garantizar una instalación exitosa, tu sistema operativo debe tener las actualizaciones de paquetes más recientes.

CentOS/RHEL

  1. Instala el último paquete de kernel. Si es necesario, este comando también reinicia el sistema.

    sudo yum clean all
    sudo yum install -y kernel | grep -q 'already installed' || sudo reboot
    
  2. Si el sistema se reinició en el paso anterior, vuelve a conectarte a la instancia.

  3. Instala los encabezados de kernel y los paquetes de desarrollo.

    sudo yum install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r)
    
  4. Selecciona un repositorio de controladores para el kit de herramientas de CUDA y agrégalo a tu instancia.

    • CentOS/RHEL 8

      sudo yum install http://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-repo-rhel8-10.1.243-1.x86_64.rpm
      
    • CentOS/RHEL 7

      sudo yum install http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-10.0.130-1.x86_64.rpm
      
    • CentOS/RHEL 6

      sudo yum install http://developer.download.nvidia.com/compute/cuda/repos/rhel6/x86_64/cuda-repo-rhel6-10.0.130-1.x86_64.rpm
      
  5. Instala el repositorio epel-release. Este repositorio incluye los paquetes DKMS necesarios para instalar los controladores NVIDIA en CentOS.

    • CentOS 6/7/8 y RHEL 6/7

      sudo yum install epel-release
      
    • Solo RHEL 8

      sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
      
  6. Limpia la caché de Yum:

    sudo yum clean all
    
  7. Instala CUDA; este paquete incluye el controlador NVIDIA.

    sudo yum install cuda
    

SLES

  1. Conéctate a la instancia en la que deseas instalar el controlador.

  2. Instala el último paquete de kernel. Si es necesario, este comando también reinicia el sistema.

    sudo zypper refresh
    sudo zypper up -y kernel-default | grep -q 'already installed' || sudo reboot
    
  3. Si el sistema se reinició en el paso anterior, vuelve a conectarte a la instancia.

  4. Selecciona un repositorio de controladores para el kit de herramientas de CUDA y agrégalo a tu instancia.

    • SLES 15

      sudo rpm --import https://developer.download.nvidia.com/compute/cuda/repos/sles15/x86_64/7fa2af80.pub
      sudo yum install https://developer.download.nvidia.com/compute/cuda/repos/sles15/x86_64/cuda-repo-sles15-10.0.130-1.x86_64.rpm
      
    • SLES 12 con Service Pack 4

      sudo rpm --import https://developer.download.nvidia.com/compute/cuda/repos/sles124/x86_64/7fa2af80.pub
      sudo yum install https://developer.download.nvidia.com/compute/cuda/repos/sles124/x86_64/cuda-repo-sles124-10.1.243-1.x86_64.rpm
      
  5. Actualiza Zypper.

    sudo zypper refresh
    
  6. Instala CUDA, que incluye el controlador NVIDIA.

    sudo zypper install cuda
    

Ubuntu

  1. Conéctate a la instancia en la que deseas instalar el controlador.

  2. Selecciona un repositorio de controladores para el kit de herramientas de CUDA y agrégalo a tu instancia.

    • Ubuntu 18.04 LTS

      curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
      sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
      sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
      
    • Ubuntu 16.04 LTS

      curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      sudo dpkg -i cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
      
  3. Actualiza las listas de paquetes.

    sudo apt-get update
    
  4. Instala CUDA, que incluye el controlador NVIDIA.

    sudo apt-get install cuda
    

Windows Server

  1. Conéctate a la instancia en la que deseas instalar el controlador.

  2. Descarga un archivo instalador .exe en tu instancia que incluya la rama R426: controlador NVIDIA 426.00 o superior. Para la mayoría de las instancias de Windows Server, puedes usar una de las siguientes opciones:

    Por ejemplo, en Windows Server 2019, puedes abrir una terminal de PowerShell como administrador y usar el comando wget para descargar el instalador del controlador que necesitas.

    PS C:\> wget https://developer.download.nvidia.com/compute/cuda/10.1/Prod/network_installers/cuda_10.1.243_win10_network.exe -O cuda_10.1.243_win10_network.exe
  3. Ejecuta el instalador .exe. Por ejemplo, puedes abrir una terminal de PowerShell como administrador y ejecutar el siguiente comando.

    PS C:\> .\\cuda_10.1.243_win10_network.exe
    

Verifica la instalación del controlador de GPU

Después de completar los pasos de instalación del controlador, verifica que se instaló y se inicializó de forma adecuada.

Linux

Conéctate a la instancia de Linux y usa el comando nvidia-smi para verificar que el controlador se ejecute de forma correcta.

nvidia-smi

Wed Jan  2 19:51:51 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.79       Driver Version: 410.79       CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P4            Off  | 00000000:00:04.0 Off |                    0 |
| N/A   42C    P8     7W /  75W |     62MiB /  7611MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

Windows Server

Conéctate a la instancia de Windows Server y usa la herramienta de nvidia-smi.exe para verificar que el controlador se ejecute de forma correcta.

PS C:\> & 'C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi.exe'

Mon Aug 26 18:09:03 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 426.00      Driver Version: 426.00       CUDA Version: 10.1      |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P4            TCC  | 00000000:00:04.0 Off |                    0 |
| N/A   27C    P8     7W /  75W |      0MiB /  7611MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

Instala controladores GRID® para estaciones de trabajo virtuales

Para obtener una lista completa de los controladores NVIDIA que puedes usar en Compute Engine, consulta el contenido del depósito de controladores de NVIDIA en Cloud Storage.

Linux

  1. Descarga el controlador GRID con el siguiente comando:

    curl -O https://storage.googleapis.com/nvidia-drivers-us-public/GRID/GRID7.1/NVIDIA-Linux-x86_64-410.92-grid.run
    
  2. Usa el siguiente comando para iniciar el instalador:

    sudo bash NVIDIA-Linux-x86_64-410.92-grid.run
    
  3. Durante la instalación, elige las siguientes opciones:

    • Si se te solicita que instales archivos binarios de 32 bits, selecciona .
    • Si se te solicita que modifiques el archivo x.org, selecciona No.

Windows Server

  1. Según tu versión de Windows Server, debes descargar uno de los siguientes controladores NVIDIA GRID:

  2. Ejecuta el instalador y elige la instalación express.

  3. Una vez completada la instalación, reinicia la VM. Cuando reinicias, se te desconecta de tu sesión.

  4. Vuelve a conectarte a tu instancia con RDP o un cliente PCoIP.

Verifica que el controlador GRID esté instalado

Linux

Ejecuta el comando siguiente:

nvidia-smi

El resultado del comando es similar al siguiente:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.92                Driver Version: 410.92                     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P100-PCIE...  On   | 00000000:00:04.0 Off |                    0 |
| N/A   34C    P0    26W / 250W |      0MiB / 16276MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

Windows Server

  1. Conéctate a tu instancia de Windows mediante RDP o un cliente PCoIP.

  2. Haz clic derecho en el escritorio y selecciona Panel de control de NVIDIA.

  3. En el Panel de control de NVIDIA, en el menú Ayuda, selecciona Información del sistema. La información muestra la GPU que usa la VM y la versión del controlador.

Supervisa y optimiza el rendimiento de las GPU

Supervisa el rendimiento de las GPU

Para ayudar a usar mejor los recursos, puedes realizar un seguimiento de las tasas de uso de GPU de tus instancias. Cuando conoces las tasas de uso de GPU, puedes realizar tareas como configurar grupos de instancias administrados que se pueden usar para aplicar ajuste de escala automático a los recursos en función de las necesidades.

Para revisar las métricas de GPU con Stackdriver, completa los siguientes pasos:

  1. En cada instancia de VM, configura la secuencia de comandos de informes de métricas de GPU. Esta secuencia de comandos realiza las siguientes tareas:

    • Instala el agente de informes de métricas de GPU. Este agente se ejecuta a intervalos en la instancia para recopilar datos de GPU y enviarlos a Stackdriver.
    • Crea un campo de métricas custom/gpu_utilization en Stackdriver. En este campo, se almacenan datos específicos de GPU que puedes analizar en Stackdriver.
  2. Ver los registros en Stackdriver.

Configura la secuencia de comandos de informes de métricas de GPU

  1. En cada una de tus instancias de VM, verifica que se satisfagan los siguientes requisitos:

  2. En cada una de tus instancias de VM, instala el agente de métricas de GPU. Para instalar el agente de métricas, realiza los siguientes pasos:

    1. Descarga las secuencias de comandos de informes de métricas de GPU.

      git clone https://github.com/GoogleCloudPlatform/tensorflow-inference-tensorrt5-t4-gpu.git
      
    2. Cambia a la carpeta metrics_reporting.

      cd tensorflow-inference-tensorrt5-t4-gpu/metrics_reporting
      
    3. Configura el entorno de instalación del agente de métricas.

      pip install -r ./requirements.txt
      
    4. Mueve la secuencia de comandos de informes de métricas a tu directorio raíz.

      sudo cp report_gpu_metrics.py /root/
      
    5. Habilita el agente de métricas de GPU.

      cat <<-EOH > /lib/systemd/system/gpu_utilization_agent.service
      [Unit]
      Description=GPU Utilization Metric Agent
      [Service]
      Type=simple
      PIDFile=/run/gpu_agent.pid
      ExecStart=/bin/bash --login -c '/usr/bin/python /root/report_gpu_metrics.py'
      User=root
      Group=root
      WorkingDirectory=/
      Restart=always
      [Install]
      WantedBy=multi-user.target
      EOH
      
    6. Vuelve a cargar el daemon del sistema.

      systemctl daemon-reload
      
    7. Habilita el servicio de supervisión de GPU.

      systemctl --no-reload --now enable /lib/systemd/system/gpu_utilization_agent.service
      

Revisa las métricas en Stackdriver

  1. Ir a la página del Explorador de métricas de Stackdriver

  2. Busca gpu_utilization.

    Captura de pantalla de la iniciación de Stackdriver

  3. Tu uso de GPU debe parecerse al siguiente resultado:

    Captura de pantalla de Stackdriver en ejecución

  4. Configura el ajuste de escala automático con grupos de instancias administrados (opcional). Para comenzar, puedes revisar la sección de configuración de un clúster de múltiples zonas del instructivo de carga de trabajo de inferencia de TensorFlow.

Optimiza el rendimiento de las GPU

Puede optimizar el rendimiento en instancias con GPU NVIDIA® Tesla® K80 si inhabilitas la mejora automática. Para inhabilitar la mejora automática, ejecuta el siguiente comando:

sudo nvidia-smi --auto-boost-default=DISABLED

All done.

Maneja los eventos de mantenimiento del host

Las instancias de GPU no se pueden migrar en vivo. Las instancias de GPU deben finalizar para los eventos de mantenimiento del host, pero pueden reiniciarse de forma automática. Por lo general, estos eventos de mantenimiento ocurren una vez al mes, pero pueden llevarse a cabo con mayor frecuencia cuando sea necesario.

A fin de minimizar las interrupciones en tus cargas de trabajo durante un evento de mantenimiento, puedes supervisar el programa de mantenimiento de tu instancia y preparar tus cargas de trabajo para la transición a través del reinicio del sistema.

Para recibir una notificación avanzada de los eventos de mantenimiento del host, supervisa el valor de metadatos /computeMetadata/v1/instance/maintenance-event. Si la solicitud al servidor de metadatos muestra NONE, la instancia no está programada para finalizar. Por ejemplo, ejecuta el siguiente comando desde una instancia:

curl http://metadata.google.internal/computeMetadata/v1/instance/maintenance-event -H "Metadata-Flavor: Google"

NONE

Si el servidor de metadatos muestra TERMINATE_ON_HOST_MAINTENANCE, entonces tu instancia está programada para finalizar. Compute Engine le da a las instancias con GPU un aviso de finalización de una hora, mientras que las instancias normales reciben solo un aviso de 60 segundos. Configura tu aplicación para la transición a través del evento de mantenimiento. Por ejemplo, puedes usar una de las siguientes técnicas:

  • Configura tu aplicación para mover de forma temporal el trabajo en progreso a un depósito de Cloud Storage y recuperar esos datos después de que se reinicie la instancia.

  • Escribe datos en un disco persistente secundario. Cuando la instancia se reinicia de forma automática, el disco persistente se puede volver a conectar y tu app puede reanudar el trabajo.

También puedes recibir notificaciones de cambios en este valor de metadatos sin sondeo. Para ver ejemplos de cómo recibir avisos avanzados de eventos de mantenimiento del host sin sondeo, consulta cómo recibir avisos de migración en vivo.

Próximos pasos

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Documentación de Compute Engine