Optimiza el rendimiento de las GPU

Puedes usar las siguientes opciones para mejorar el rendimiento de las GPU en instancias de máquina virtual (VM):

Inhabilita la mejora automática

Cuando usas la función de mejora automática con las GPU NVIDIA® Tesla® K80, el sistema ajusta la velocidad del reloj de forma automática con el fin de encontrar la tasa óptima para una aplicación determinada. Sin embargo, ajustar la velocidad del reloj todo el tiempo también puede provocar una reducción en el rendimiento de tus GPU. Para obtener más información sobre la mejora automática, consulta la página sobre cómo aumentar el rendimiento con la mejora de GPU y la mejora automática de K80.

Se recomienda que inhabilites la mejora automática cuando ejecutes GPU NVIDIA® Tesla® K80 en Compute Engine.

Para inhabilitar la mejora automática en instancias con GPU NVIDIA® Tesla® K80 adjuntas, ejecuta el siguiente comando:

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

El resultado podría parecerse al siguiente:

All done.

Establece la velocidad del reloj de la GPU en la frecuencia máxima

Para establecer la velocidad del reloj de la GPU en la frecuencia máxima en instancias con GPU NVIDIA® Tesla® K80 adjuntas, ejecuta el siguiente comando:

sudo nvidia-smi --applications-clocks=2505,875

Usa anchos de banda de red de hasta 100 Gbps

Crea instancias de VM que usen anchos de banda más altos

Puedes usar anchos de banda de red más altos a fin de mejorar el rendimiento de las cargas de trabajo distribuidas en instancias de VM que se ejecutan en Compute Engine y que usan GPU NVIDIA® Tesla® T4 o V100.

Si deseas obtener más información sobre los anchos de banda de red admitidos para tus instancias de GPU, consulta Anchos de banda de red y GPU.

Para crear una instancia de VM con GPU conectadas y un ancho de banda de red de hasta 100 Gbps, haz lo siguiente:

  1. Revisa la configuración mínima de CPU, GPU y memoria necesaria para obtener el ancho de banda máximo disponible.
  2. Crea tu instancia de VM con las GPU T4 o V100 conectadas. Consulta Agrega o quita GPU.

    La imagen que uses para crear la instancia de VM debe tener instalada la interfaz de red virtual de Compute Engine (gVNIC). Para obtener más información sobre cómo crear instancias de VM compatibles con la interfaz de red virtual de Compute Engine, consulta cómo crear instancias de VM que usen la interfaz de red virtual de Compute Engine.

    Como alternativa, puedes usar la imagen tf-latest-gpu-gvnic del catálogo de imágenes de VM de aprendizaje profundo de Google que ya tiene preinstalados el controlador de GPU, el software de AA y el controlador de red de Compute Engine.

    Por ejemplo, para crear una instancia de VM llamada test-instance que tenga un ancho de banda máximo de 100 Gbps, ocho GPU V100 conectadas y use la imagen de VM de aprendizaje profundo, ejecuta el siguiente comando:

    gcloud compute instances create test-instance \
       --custom-cpu 96 \
       --custom-memory 624 \
       --image-project=deeplearning-platform-release \
       --image-family=tf-latest-gpu-gvnic \
       --accelerator type=nvidia-tesla-v100,count=8 \
       --maintenance-policy TERMINATE \
       --metadata="install-nvidia-driver=True"  \
       --boot-disk-size 200GB \
       --zone=us-central1-f
    
  3. Después de crear la instancia de VM, puedes verificar el ancho de banda de la red.

Comprueba el ancho de banda de la red

Cuando trabajas con GPU con ancho de banda alto, puedes usar una herramienta de tráfico de red, como iperf2, para medir el ancho de banda de la red.

Para comprobar la velocidad del ancho de banda, necesitas al menos dos instancias de VM que tengan GPU conectadas y puedan admitir la velocidad de ancho de banda que estás probando.

Para medir el ancho de banda de la red, sigue estos pasos:

  1. En una instancia de VM, ejecuta el siguiente comando:

    iperf -s
  2. En otra instancia de VM, ejecuta el siguiente comando. Reemplaza server_dns_or_internal_ip con el DNS o la dirección IP interna de tu instancia de VM.

    iperf -c server_dns_or_internal_ip -P 16 -t 30

Cuando uses el ancho de banda máximo disponible de 100 Gbps, ten en cuenta lo siguiente:

  • Debido a los gastos generales de encabezado para protocolos como Ethernet, IP y TCP en la pila de virtualización, el rendimiento, medido por netperf, se satura aproximadamente en 90 Gbps.

    El protocolo TCP puede alcanzar una velocidad de red de 100 Gbps. Actualmente, otros protocolos, como UDP, son más lentos.

  • Debido a factores como la sobrecarga del protocolo y la congestión de la red, el rendimiento de extremo a extremo de las transmisiones de datos puede ser levemente inferior a 100 Gbps.

  • Debes usar varias transmisiones de TCP para alcanzar el ancho de banda máximo entre instancias de VM. Google recomienda entre 4 y 16 transmisiones. En 16 flujos, con frecuencia, se maximiza la capacidad de procesamiento. Según la aplicación y la pila de software, es posible que debas ajustar la configuración o el código para configurar varias transmisiones.

  • El ancho de banda de red de 100 Gbps solo se puede obtener de forma unidireccional. Es posible que la suma de TX + RX sea aproximadamente de 100 Gbps.

Próximos pasos