Crea una estación de trabajo virtual de Linux acelerada con GPU

En este instructivo, se muestra cómo crear una estación de trabajo virtual de Linux que ejecute CentOS con una GPU con capacidad de visualización conectada. (Para crear una estación de trabajo de Windows, consulta el instructivo Crea una estación de trabajo virtual acelerada con GPU en Windows). Google Cloud ofrece tres GPU con capacidad de visualización: NVIDIA T4, NVIDIA Tesla P4 y NVIDIA Tesla P100.

Luego de crear la estación de trabajo virtual, aprenderás cómo acceder a ella de forma remota mediante PC-over-IP (PCoIP) de Teradici, un protocolo de escritorio remoto muy usado en los medios de comunicación y la industria del entretenimiento. PCoIP ofrece características esenciales para las cargas de trabajo de producción de medios de comunicación, como la precisión del color y asistencia en la visualización de imágenes sin pérdidas.

Objetivos

  • Crear una instancia de Compute Engine con una GPU. Esta instancia funciona como el cimiento de la estación de trabajo virtual
  • Instalar los controladores de NVIDIA en la estación de trabajo virtual
  • Instalar Cloud Access Software de Teradici en la estación de trabajo virtual
  • Conectarse a la estación de trabajo virtual desde tu computadora Windows o Mac a través de un cliente de software PCoIP o de Zero Client, un tipo de hardware de extremo. Para acceder a la estación de trabajo virtual desde una computadora con Linux, comunícate con tu representante de Teradici.

Costos

En este instructivo, se usan los siguientes componentes facturables de Google Cloud:

Puedes usar la calculadora de precios para generar una estimación de costos según el uso previsto. Hasta el momento en que se escribe este instructivo, el costo aproximado de configuración de una estación de trabajo de medios típica es de $1.36 por hora.

A continuación, se detallan los recursos que componen la estación de trabajo virtual y los factores que influyen en los costos de este instructivo:

La salida de Internet representa los datos que se transmiten desde tu estación de trabajo virtual hacia tu cliente de visualización local y se factura según las tarifas de salida de Internet. Las variables que influyen sobre la salida de datos durante una sesión de PCoIP son el ancho de banda, la resolución de pantalla, la cantidad de monitores de visualización, las aplicaciones que se usan y el tipo de actividad en cada monitor. El costo del ejemplo se basa en un uso promedio de 10 Mbps. En la guía de planificación de flujos de trabajo de Teradici, encontrarás información sobre los diferentes requisitos de las cargas de trabajo.

Antes de comenzar

En este instructivo, se usan los comandos de gcloudgsutil, que puedes ejecutar desde una instancia de Cloud Shell desde Cloud Console. Si deseas usar gcloudgsutil en la estación de trabajo local, instala el SDK de Cloud. En el instructivo, se muestra cómo ejecutar comandos en Cloud Shell. Si usas el SDK de Cloud en la estación de trabajo, ajusta las instrucciones según corresponda.

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyecto

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Descubre cómo confirmar que tienes habilitada la facturación en un proyecto.

  4. Habilita la API Compute Engine.

    Habilita la API

Además, asegúrate de que cuentas con los siguientes elementos:

  • Un proyecto de Google Cloud con cuota para GPU de estaciones de trabajo virtuales en la zona seleccionada Puedes obtener una lista de la disponibilidad de GPU con el comando gcloud compute accelerator-types list.
  • Un navegador de Google Chrome para acceder a Cloud Console
  • Un Zero Client de Teradici o el cliente de software de Teradici más reciente para Windows, Mac o Linux a fin de acceder a la estación de trabajo virtual
  • Una licencia de Cloud Access Software de Teradici. Puedes registrarte para obtener una licencia de prueba o comunicarte con un representante de Teradici. Obtendrás un código de registro de prueba de 30 días para usar en esta estación de trabajo virtual.

Información sobre la arquitectura

En el siguiente diagrama, se muestran los componentes usados en este instructivo para implementar una única estación de trabajo virtual. Entre los componentes opcionales que se muestran en el diagrama, se incluyen diferentes formas de conectarte a la estación de trabajo virtual, el almacenamiento de objetos, el almacenamiento compartido y una instancia adicional para entregar licencias de terceros.

Arquitectura de la estación de trabajo virtual

Elige un acelerador

Un factor importante para implementar una estación de trabajo virtual es la latencia entre tu ubicación y la instancia creada. Mientras menor sea la latencia, mejor será la experiencia. Por lo tanto, es preferible que trabajes en una zona que se encuentre lo más cerca posible a ti geográficamente. Para obtener más información sobre las regiones y las zonas, consulta Geografía y regiones.

  1. Abre Cloud Shell (si usas el SDK de Cloud, abre una ventana de terminal en tu computadora).

    Ir a Cloud Shell

  2. Obtén una lista de las zonas en las que las GPU se encuentran disponibles:

    gcloud compute accelerator-types list

    Toma nota de la zona que se encuentra físicamente más cerca de ti.

  3. Establece la zona con la que quieres trabajar:

    gcloud config set compute/zone zone

    Reemplaza zone por el nombre de la zona que usas, como us-west2-b.

Selecciona un tipo de máquina

Puedes adjuntar las GPU P4 a cualquier tipo de máquina, pero cada GPU que se agregue a una estación de trabajo virtual debe emparejarse con una cantidad mínima de CPU virtuales. Esto evita el exceso de suscripciones a cualquier recurso. En NVIDIA Tesla P4, puedes conectar hasta 24 CPU virtuales a 1 GPU. Para agregar más de 24 CPU virtuales a la estación de trabajo virtual, debes agregar una GPU P4 adicional por cada 24 CPU virtuales adicionales. Por ejemplo, para una estación de trabajo virtual con 48 CPU virtuales se requeriría que adjuntes 2 GPU P4.

En el ejemplo de este instructivo, se muestra una estación de trabajo virtual de 24 CPU virtuales, que es la cantidad máxima de CPU virtuales permitida por la GPU NVIDIA Tesla P4.

Crea la estación de trabajo virtual

El agente de gráficos de Teradici (que instalarás más adelante en tu estación de trabajo virtual con este instructivo) te solicita que habilites el reenvío de IP y que permitas el tráfico del servidor HTTPS durante la creación de la estación de trabajo virtual.

  1. En Cloud Shell, crea la instancia de estación de trabajo virtual de Compute Engine. Debes proporcionar valores para los marcadores de posición, como name.

    gcloud compute instances create name \
        --machine-type machine-type \
        --accelerator type=accelerator,count=num-gpus \
        --can-ip-forward \
        --maintenance-policy "TERMINATE" \
        --tags "https-server" \
        --image-project centos-cloud \
        --image-family centos-7 \
        --boot-disk-size size

    Por ejemplo:

    gcloud compute instances create test-vws \
        --machine-type custom-24-32768 \
        --accelerator type=nvidia-tesla-p4-vws,count=1 \
        --can-ip-forward \
        --maintenance-policy "TERMINATE" \
        --tags "https-server" \
        --image-project centos-cloud \
        --image-family centos-7 \
        --boot-disk-size 100

    Luego de crear la estación de trabajo virtual, se mostrará el estado de la máquina. El resultado es similar al siguiente:

    Created https://www.googleapis.com/compute/v1/projects/project/zones/us-west2-b/instances/test-vws.
    NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS test-vws us-west2-b custom (24 vCPU, 32.00 GiB) 10.168.0.3 XX.XXX.XX.XXX RUNNING

    La estación de trabajo virtual se crea en la red de VPC predeterminada del proyecto. Si deseas crear la estación de trabajo virtual en una red de VPC diferente, agrega la siguiente marca al comando:

    --network=network
    

    Reemplaza network por el nombre de la red que usarás.

  2. Anota la dirección IP externa de la estación de trabajo virtual. La usarás más adelante en el instructivo.

Accede a tu estación de trabajo virtual

Luego de crear tu estación de trabajo virtual, debes acceder a la máquina para poder configurarla.

  1. En Cloud Shell, conéctate a la nueva estación de trabajo virtual:

    gcloud compute ssh test-vws
  2. Establece la contraseña de tu cuenta. Teradici PCoIP requiere que se establezca una contraseña de usuario.

    sudo passwd `whoami`

    Cuando se te solicite, ingresa una contraseña. Usarás esta contraseña más adelante en el instructivo para iniciar sesión en tu estación de trabajo virtual con el cliente PCoIP de Teradici.

Instala bibliotecas gráficas y un administrador de ventanas

La imagen predeterminada de Google Cloud CentOS 7 es una instalación mínima de CentOS 7.x. El siguiente paso es instalar las bibliotecas necesarias para ejecutar tu estación de trabajo virtual como una estación de trabajo gráfica. Para este instructivo, también debes instalar el administrador de ventanas de KDE.

  1. Instala los componentes requeridos:

    sudo yum -y update
    sudo yum -y install kernel-devel
    sudo yum -y groupinstall "KDE desktop" "X Window System" "Fonts"
    sudo yum -y groupinstall "Development Tools"
    sudo yum -y groupinstall "Server with GUI"
  2. Reinicia la estación de trabajo:

    sudo reboot

    Se cerrará tu conexión desde Cloud Shell.

Instala el controlador de NVIDIA

Las GPU de NVIDIA T4, NVIDIA Tesla P4 y NVIDIA Tesla P100 funcionan en Google Cloud solo con controladores calificados de NVIDIA Quadro Virtual Data Center Workstation (vWS) para las cargas de trabajo de procesamiento y visualización. Puedes descargar estos controladores desde un bucket de almacenamiento público.

  1. Cuando la estación de trabajo virtual se reinicia vuelve a conectarte a la estación de trabajo virtual en Cloud Shell:

    gcloud compute ssh test-vws
  2. En tu estación de trabajo virtual, usa gsutil para obtener una lista de los últimos controladores:

    gsutil ls gs://nvidia-drivers-us-public/GRID

    En este instructivo, se usan los controladores gráficos disponibles más recientes al momento de escribirlo: controlador de Linux GRID11.1 (versión 450.80.02). El controlador calificado más reciente se puede encontrar siempre en el directorio de GRID con el número de versión más alto. Si encuentras un controlador más nuevo, úsalo.

  3. Descarga y, luego, instala el controlador. Si usas una versión del controlador más reciente que 450.80.02, cambia el comando según corresponda.

    curl -O \
    https://storage.googleapis.com/nvidia-drivers-us-public/GRID/GRID11.1/NVIDIA-Linux-x86_64-450.80.02-grid.run
    sudo bash NVIDIA-Linux-x86_64-450.80.02-grid.run

    Durante la instalación del controlador, puede que veas algunos mensajes:

    • Si se te pide que instales códigos binarios de 32 bits, selecciona .
    • Si se te pide que modifiques el archivo x.org, elige No.
  4. Verifica que el controlador esté instalado y funcione:

    nvidia-smi

    El resultado es similar al siguiente:

    Thu Sep 20 21:58:23 2018
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 450.80.02    Driver Version: 450.80.02    CUDA Version: 11.0     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |                               |                      |               MIG M. |
    |===============================+======================+======================|
    |   0  Tesla P4            On   | 00000000:00:04.0 Off |                    0 |
    | N/A   41C    P0    23W /  75W |      0MiB /  7611MiB |      0%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |  No running processes found                                                 |
    +-----------------------------------------------------------------------------+
    

Si el resultado que ves no es como el anterior, consulta la sección de Solución de problemas que se encuentra más abajo en este instructivo.

Instala Cloud Access Software de Teradici

Cloud Access Software de Teradici proporciona un agente de gráficos que se ejecuta en la estación de trabajo virtual y que entrega la computadora de escritorio a tu cliente de hardware o software.

  1. En tu estación de trabajo virtual, agrega el software de Teradici:

    sudo rpm --import https://downloads.teradici.com/rhel/teradici.pub.gpg
    sudo yum -y install wget
    sudo wget -O /etc/yum.repos.d/pcoip.repo \
        https://downloads.teradici.com/rhel/pcoip.repo
  2. Actualiza los repositorios de software:

    sudo yum -y update
  3. Instala Cloud Access Software de Teradici:

    sudo yum -y install pcoip-agent-graphics
  4. Establece el estado de visualización en graphical:

    sudo systemctl set-default graphical.target
  5. Reinicia la estación de trabajo virtual:

    sudo reboot

Registra Graphics Agent de Teradici

Para usar Graphics Agent de Teradici, debes tener una licencia, como se indicó antes en el instructivo.

  1. En Cloud Shell, vuelve a conectarte a la estación de trabajo virtual:

    gcloud compute ssh test-vws
  2. En tu estación de trabajo virtual, activa tu licencia de Cloud Access Software de Teradici:

    pcoip-register-host --registration-code=registration-code

Crea una regla de firewall

El cliente PCoIP se comunica con tu estación de trabajo virtual a través de varios puertos. Debes configurar reglas de firewall para permitir la entrada y salida de tráfico a tu estación de trabajo virtual.

  • En Cloud Shell, crea una regla de firewall que abra los puertos necesarios:

    gcloud compute firewall-rules create allow-teradici \
        --allow tcp:443,tcp:4172,udp:4172,tcp:60443

Accede a la estación de trabajo virtual con el cliente PCoIP

  1. En la computadora local, ve a la sección Clientes PCoIP en la página de asistencia de Teradici. Después, descarga, instala y, luego, inicia la aplicación del cliente PCoIP para el sistema operativo.

  2. Selecciona Conexión nueva.

  3. En el campo Dirección de host, ingresa la dirección IP externa de tu estación de trabajo virtual. Si quieres, puedes ingresar un nombre para la conexión.

    Asignar una dirección IP externa a una estación de trabajo virtual

  4. Una vez que estés conectado, ingresa el nombre de usuario y la contraseña que creaste para la estación de trabajo virtual a fin de autenticarte.

    Autenticación en la estación de trabajo virtual

  5. Selecciona el escritorio que desees ejecutar y haz clic en Conectar (Connect).

    Seleccionar un escritorio para conectarte

    Luego de unos segundos, verás tu escritorio con Linux.

    Escritorio de Linux en la estación de trabajo virtual.

Prueba tu estación de trabajo virtual

Luego de implementar tu estación de trabajo virtual, puedes probar el rendimiento y la interactividad a través de varias herramientas:

  • Ejecuta las herramientas comparativas de GPU, como glxgearsglmark2, que son programas simples para probar el rendimiento de los gráficos en una estación de trabajo de Linux.
  • Instala Blender, un paquete de software 3D de código abierto.
  • Ejecuta herramientas comparativas de procesamiento para procesadores populares, como V-Ray ,OctaneRender y procesadores Maxon.
  • Usa Google Chrome para navegar por tus sitios favoritos o reproducir videos en YouTube.

Solución de problemas

En esta sección, verás una lista de los problemas que puedes encontrar cuando configuras o te conectas a la estación de trabajo.

Falló NVIDIA-SMI

Problema: NVIDIA-SMI falló porque no puede comunicarse con el controlador de NVIDIA.

Solución: Vuelve a instalar el controlador y, luego, intenta ejecutar nvidia-smi nuevamente. Si el comando aún falla, intenta desinstalar el controlador de NVIDIA, instalar el módulo dkms y, luego, reinstalar el controlador. Cuando haces esto, se registra el módulo dkms en el kernel para que las actualizaciones del kernel no requieran una reinstalación del controlador gráfico.

No se inicia X11

Problema: No se inicia X11 según lo esperado.

Solución: Asegúrate de que el controlador gráfico Nouveau no esté presente en la instalación. Los controladores Nouveau son controladores gráficos de código abierto incluidos en algunas versiones de Linux. Para verificar si el controlador Nouveau está presente, ejecuta este comando en el shell de la estación de trabajo virtual:

lsmod | grep nouveau

Si ves algún resultado, sigue estos pasos para inhabilitar la carga del controlador Nouveau antes de instalar el controlador gráfico NVIDIA calificado:

  1. Como superusuario en la shell de la estación de trabajo virtual, abre un editor de texto y agrega lo siguiente a la última línea del archivo /etc/modprobe.d/blacklist.conf:

    blacklist nouveau
  2. Reinicia la estación de trabajo virtual:

    sudo reboot
  3. Cuando se reinicia la estación de trabajo virtual, vuelve a conectarte a ella desde Cloud Shell:

    gcloud compute ssh test-vws
  4. Como superusuario, edita el archivo /etc/default/grub.

  5. Busca la entrada denominada GRUB_CMDLINE_LINUX o agrégala si aún no está allí y, luego, agrega el siguiente valor a la entrada:

    rd.driver.blacklist=nouveau nouveau.modeset=0

    Asegúrate de que este valor está dentro de las comillas. Por ejemplo:

    GRUB_CMDLINE_LINUX="crashkernel=auto console=ttyS0,38400n8 rd.driver.blacklist=nouveau nouveau.modeset=0"
  6. Genera una nueva configuración de grub para incluir los cambios:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  7. Vuelve a reiniciar tu estación de trabajo virtual:

    sudo reboot
  8. Una vez que la estación de trabajo virtual se reinició, vuelve a conectarte desde Cloud Shell:

    gcloud compute ssh test-vws
  9. Asegúrate de que el controlador Nouveau ya no esté presente:

    lsmod | grep nouveau

    Una string vacía significa que el controlador Nouveau no está instalado. Para obtener más información sobre el controlador Nouveau, consulta Problemas comunes en la documentación de NVIDIA.

No es posible conectarse a la estación de trabajo virtual

Problema: Usas un cliente de PCoIP Zero y no puedes conectarte a tu estación de trabajo virtual.

Solución: Asegúrate de que tu cliente Zero tenga instalada la versión de firmware 6.1 o superior antes de conectarte a la estación de trabajo virtual. Para obtener más información, contacta a un representante de Teradici.

Realice una limpieza

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

Una vez que completaste el instructivo, borra los recursos que creaste en Google Cloud a fin de que no se te cobre por ellos en el futuro.

Detén tu estación de trabajo virtual

Las estaciones de trabajo virtuales detenidas generan costos por el disco persistente, pero pueden reiniciarse en cualquier momento. Para detener tu estación de trabajo virtual, ejecuta el siguiente comando en Cloud Shell:

gcloud compute instances stop test-vws

Borra el proyecto

  1. En Cloud Console, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

Borra todos los componentes

  1. Borra la estación de trabajo virtual.
  2. Borra la regla de firewall.

Pasos siguientes