Cómo construir un sistema Multi-GPU para Deep Learning en 2023

Construcción sistema Multi-GPU Deep Learning 2023.

Mi construcción de aprendizaje profundo: en progreso :).

Esta historia proporciona una guía sobre cómo construir un sistema multi-GPU para el aprendizaje profundo y, con suerte, ahorrarte algo de tiempo de investigación y experimentación.

Objetivo

¡Construir un sistema multi-GPU para el entrenamiento de modelos de visión por computadora y LLMs sin arruinarte! 🏦

Paso 1. GPUs

¡Comencemos con la parte divertida (y costosa 💸💸💸)!

¡La bestia H100! Imagen de NVIDIA.

Las consideraciones principales al comprar una GPU son:

  • memoria (VRAM)
  • rendimiento (núcleos Tensor, velocidad de reloj)
  • ancho de ranura
  • consumo de energía (TDP)

Memoria

Para las tareas de aprendizaje profundo en la actualidad, necesitamos muuuucha memoria. Los LLMs son enormes, incluso para ajustarlos y las tareas de visión por computadora pueden requerir mucha memoria, especialmente con redes 3D. Naturalmente, el aspecto más importante a tener en cuenta es la VRAM de la GPU. Para LLMs, recomiendo al menos 24 GB de memoria y para las tareas de visión por computadora no deberías ir por debajo de los 12 GB.

Rendimiento

El segundo criterio es el rendimiento, que se puede estimar con FLOPS (Operaciones de punto flotante por segundo):

El número crucial en el pasado era la cantidad de núcleos CUDA en el circuito. Sin embargo, con la aparición del aprendizaje profundo, NVIDIA ha introducido núcleos Tensor especializados que pueden realizar muchas más operaciones FMA (Multiplicación y suma fusionadas) por ciclo de reloj. Estos ya son compatibles con los principales frameworks de aprendizaje profundo y son lo que debes buscar en 2023.

A continuación, puedes encontrar un gráfico de rendimiento bruto de las GPUs agrupadas por memoria, que recopilé después de un trabajo manual considerable:

Rendimiento bruto de las GPUs basado en los núcleos CUDA y Tensor (TFLOPs).

Ten en cuenta que debes tener mucho cuidado al comparar el rendimiento de diferentes GPUs. Los núcleos Tensor de diferentes generaciones/arquitecturas no son comparables. Por ejemplo, el A100 realiza 256 operaciones FMA FP16 / ciclo de reloj, mientras que el V100 “solo” realiza 64. Además, las arquitecturas más antiguas (Turing, Volta) no admiten operaciones tensoriales de 32 bits. Lo que dificulta aún más la comparación es que NVIDIA no siempre informa sobre las operaciones FMA, ni siquiera en los documentos técnicos, y las GPUs de la misma arquitectura pueden tener diferentes FMAs. Me volví loco con esto 😵‍💫. También ten en cuenta que NVIDIA a menudo anuncia los FLOPS tensoriales con dispersión, que es una característica utilizable solo en el momento de la inferencia.

Con el fin de identificar la mejor GPU en términos de precio, recopilé los precios de eBay utilizando la API de eBay y calculé el rendimiento relativo por dólar (USD) para las tarjetas nuevas:

Rendimiento relativo por USD de las GPUs basado en los núcleos CUDA y Tensor (TFLOPs / USD). Los precios se basan en los precios actuales de eBay (septiembre de 2023).

Hice lo mismo para las tarjetas usadas, pero como los rankings no cambian demasiado, omito el gráfico.

Para seleccionar la mejor GPU dentro de tu presupuesto, puedes elegir una de las mejores GPUs con la mayor memoria que puedas permitirte. Mi recomendación sería:

Recomendación de GPUs para diferentes presupuestos basada en los precios actuales de ebay (septiembre de 2023).

Si deseas profundizar en aspectos técnicos, te recomiendo leer la excelente guía de Tim Dettmers sobre Cuál(es) GPU(s) elegir para Aprendizaje Profundo.

Ancho de ranura

Cuando se construye un sistema multi-GPU, debemos planificar cómo ajustar físicamente las GPUs en una carcasa de PC. Dado que las GPUs se vuelven cada vez más grandes, especialmente las series de juegos, esto se convierte en un problema. Las placas base de consumo tienen hasta 7 ranuras PCIe y las carcasas de PC están diseñadas en torno a esta configuración. Una 4090 puede ocupar fácilmente 4 ranuras dependiendo del fabricante, por lo que puedes ver por qué esto se convierte en un problema. Además, debemos dejar al menos 1 ranura entre las GPUs que no sean de tipo soplador o refrigeradas por agua para evitar el sobrecalentamiento. Tenemos las siguientes opciones:

Refrigeración por aguaLas variantes refrigeradas por agua ocuparán hasta 2 ranuras, pero son más caras. Alternativamente, puedes convertir una GPU refrigerada por aire, pero esto anulará la garantía. Si no obtienes soluciones todo en uno (AIO), deberás construir un circuito personalizado de refrigeración por agua. Esto también es cierto si deseas ajustar varias GPUs refrigeradas por agua, ya que los radiadores AIO pueden no caber en la carcasa. Construir tu propio circuito conlleva riesgos y personalmente no lo haría con tarjetas costosas. Solo compraría soluciones AIO directamente de los fabricantes (aversion al riesgo 🙈).

Tarjetas refrigeradas por aire de 2 a 3 ranuras y cables PCIe riserEn este escenario, intercalas las tarjetas en las ranuras PCIe y las tarjetas conectadas con cables PCIe riser. Las tarjetas PCIe riser se pueden colocar en algún lugar dentro de la carcasa de la PC o en el aire libre. En cualquier caso, debes asegurarte de que las GPUs estén bien sujetas (ver también la sección sobre carcasas de PC).

Potencia (TDP)

Las GPUs modernas requieren cada vez más energía. Por ejemplo, una 4090 requiere 450 W mientras que una H100 puede llegar hasta 700 W. Además de la factura de electricidad, encajar tres o más GPUs se convierte en un problema. Esto es especialmente cierto en los Estados Unidos, donde los enchufes eléctricos pueden suministrar hasta alrededor de 1800 W.

Una solución a este problema, si te acercas al límite de potencia máxima que puedes obtener de tu PSU / enchufe eléctrico, es limitar la potencia. Todo lo que necesitas hacer para reducir la potencia máxima que una GPU puede consumir es:

sudo nvidia-smi -i <índice_GPU> -pl <límite_de_potencia>donde:índice_GPU: el índice (número) de la tarjeta como se muestra con nvidia-smilímite_de_potencia: la potencia en W que deseas utilizar

Se ha demostrado que limitar la potencia en un 10-20% reduce el rendimiento en menos del 5% y mantiene las tarjetas más frías (experimento realizado por Puget Systems). Limitar la potencia de cuatro 3090, por ejemplo, en un 20% reducirá su consumo a 1120 W y se ajustará fácilmente a una PSU de 1600 W / enchufe de 1800 W (suponiendo que se utilicen 400 W para el resto de los componentes).

Paso 2. Placa base y CPU

El siguiente paso de la construcción es elegir una placa base que permita múltiples GPUs. Aquí, la consideración principal son los carriles PCIe. Necesitamos al menos ranuras PCIe 3.0 con x8 carriles cada una para cada una de las tarjetas (ver publicación de Tim Dettmers). PCIe 4.0 o 5.0 son menos comunes y no son necesarios para la mayoría de los casos de uso de aprendizaje profundo.

Además del tipo de ranura, el espaciado de las ranuras determinará dónde puedes colocar las GPUs. Asegúrate de haber verificado el espaciado y que tus GPUs realmente puedan ir donde deseas. Ten en cuenta que la mayoría de las placas base utilizarán una configuración x8 para algunos slots x16 cuando se utilizan múltiples GPUs. La única forma real de obtener esta información es en el manual de la tarjeta.

La forma más sencilla de no pasar horas investigando y también tener un sistema preparado para el futuro es elegir una placa base que tenga ranuras x16 en todas partes. Puedes usar PCPartPicker y filtrar las placas base que tengan 7+ ranuras PCIe x16. Esto nos da 21 productos para elegir. Luego reducimos la lista seleccionando la cantidad mínima de RAM que queremos (por ejemplo, 128 GB) con el tipo DDR4 / DDR5 para reducirlo a 10 productos:

Placas base con al menos 7 ranuras PCIe x16 y 128 GB de RAM DDR4/DDR5 según PCPartPicker.

Las tomas de CPU compatibles de la lista anterior son LGA2011-3 y LGA2066. Luego pasamos a la selección de la CPU y seleccionamos CPUs con el número deseado de núcleos. Estos son principalmente necesarios para la carga de datos y la preparación por lotes. Apunte a tener al menos 2 núcleos / 4 hilos por GPU. Para la CPU también debemos verificar las líneas PCIe que admite. Cualquier CPU de la última década debería admitir al menos 40 líneas (que cubren 4 GPUs a x8 líneas), pero es mejor estar seguro que arrepentido. Con un filtrado de p. ej. 16+ núcleos con las tomas anteriores, obtenemos las siguientes CPUs:

  • Intel Xeon E5 (LGA2011-3): 8 resultados
  • Intel Core i9 (LGA2066): 9 resultados

Luego elegimos nuestra combinación favorita de placa base y CPU según el número de núcleos, disponibilidad y precio.

Tanto las tomas LGA2011-3 como las LGA2066 son muy antiguas (2014 y 2017 respectivamente), por lo que puedes encontrar buenas ofertas en eBay tanto para la placa base como para la CPU. Una placa base ASRock X99 WS-E y un Intel Xeon E5-2697 V4 de 18 núcleos pueden costar menos de 300$ en condiciones usadas. No compres las versiones más baratas ES o QS para CPUs, ya que estas son muestras de ingeniería y pueden fallar ⚠️️.

Si quieres comprar algo más potente y/o más reciente y/o una CPU de AMD, puedes buscar placas base con, por ejemplo, 4+ ranuras PCIe x16, pero asegúrate de verificar los espacios entre las ranuras.

En esta etapa es una buena idea comenzar a armar una construcción en PCPartPicker. 🛠️ PCPartPicker verificará las compatibilidades entre los componentes por ti y te facilitará la vida.

Paso 3. RAM 🐏

Aquí, el aspecto más importante es la cantidad de RAM. La RAM se utiliza en diferentes etapas del ciclo de aprendizaje profundo: carga de datos desde el disco para la creación de lotes, carga del modelo y, por supuesto, prototipado. La cantidad necesaria depende mucho de tu aplicación (por ejemplo, los datos de imágenes 3D requerirán mucha más RAM adicional), pero debes apuntar a 1x-2x la cantidad total de VRAM de tus GPUs. El tipo debe ser al menos DDR4, pero la velocidad de la RAM no es muy importante, así que no gastes tu dinero allí 🕳️.

Cuando compres RAM, asegúrate de que el factor de forma, el tipo, el número de módulos y la memoria por módulo coincidan con las especificaciones de tu placa base (¡PCPartPicker es tu amigo!).

Paso 4. Discos

Otro componente en el que puedes ahorrar es en los discos 😌. Nuevamente, la cantidad de espacio en disco es importante y depende de la aplicación. No necesitas necesariamente discos ultrarrápidos o NVME, ya que no afectarán el rendimiento de tu aprendizaje profundo. Los datos de todos modos se cargarán en RAM y, para evitar crear un cuello de botella, simplemente puedes usar más trabajadores de CPU en paralelo.

Paso 5. Fuente de alimentación (PSU) 🔌

Como vimos, las GPUs son componentes que consumen mucha energía. Al configurar un sistema multi-GPU, la selección de la PSU se vuelve una consideración importante. La mayoría de las PSU pueden suministrar hasta 1600W, lo cual está en línea con los límites de potencia de los enchufes de EE. UU. Hay algunas PSU que pueden suministrar más que eso, pero requieren una investigación y están dirigidas especialmente a los mineros.

Potencia estimada proporcionada por PCPartPicker para tus construcciones.

Para determinar la potencia de tu sistema, puedes usar nuevamente PCPartPicker, que calcula el total de tu construcción. A esto debemos agregar un 10% adicional para estar tranquilos, ya que las GPUs tendrán picos de consumo de energía superiores a lo que está en sus especificaciones.

Un criterio importante es la eficiencia de la PSU (Unidad de Suministro de Energía), que se marca con la clasificación 80 PLUS. El suministro alcanzará la potencia que anuncia, pero perderá algo de energía en el proceso. Las fuentes de alimentación 80 PLUS Bronze tienen una eficiencia del 82% en comparación con, por ejemplo, una fuente Gold que alcanzará una eficiencia del 87%. Si tenemos un sistema que consume 1600w y lo utilizamos el 20% del tiempo, ahorraríamos 22$ al año con una GPU con clasificación Gold, suponiendo un costo de 0.16$ / KWh. Al comparar precios, ten esto en cuenta en tus cálculos.

Clasificaciones de eficiencia de PSU. Tabla de techguided.

Cuando funcionan a plena carga, algunas PSU son más ruidosas que otras, ya que utilizan un ventilador a altas RPMs. Si trabajas (¡o duermes!) cerca de tu torre, esto puede tener algún efecto, así que es buena idea verificar los decibelios en el manual 😵.

Cuando seleccionamos una fuente de alimentación, necesitamos verificar que tenga suficientes conectores para todas nuestras partes. Las GPUs en particular utilizan cables de 8 pines (o 6+2). Un detalle importante aquí es que para cada ranura de alimentación de la GPU deberíamos usar un cable de 8 pines separado y no utilizar varias salidas del mismo cable (encadenamiento en serie). Los cables de 8 pines generalmente tienen una capacidad de ~150w. Al usar un solo cable para más de una ranura de alimentación, la GPU puede no recibir suficiente energía y reducir su rendimiento.

Paso 6. Caja de PC

Por último, seleccionar una caja de PC no es trivial. Las GPUs pueden ser enormes y algunas cajas no las admitirán. Una 4090, por ejemplo, puede tener una longitud de 36 cm 👻!

Además, montar GPUs con elevadores PCIe puede requerir algunos trucos. Hay algunas cajas más nuevas que permiten montar una tarjeta adicional, especialmente cajas de sistemas duales como la Phanteks Enthoo 719. Otra opción es la Lian-Li O11D EVO, que puede alojar una GPU en posición vertical con el soporte Lian-Li Upright GPU Bracket. No tengo estas cajas, así que no estoy seguro de cómo se ajustarían, por ejemplo, varias 3090 / 4090. Sin embargo, aún puedes montar una GPU en posición vertical aunque tu caja de PC no lo admita directamente con el soporte de Lian-Li. Necesitarás taladrar 2-3 agujeros en la caja, pero no es una locura (¡sigue la guía!).

Montaje de un Titan Xp en posición vertical con el soporte Lian Li upright.

El fin

Espero que hayas disfrutado leyendo esta guía y que hayas encontrado algunos consejos útiles. La guía tiene como objetivo ayudarte en tu investigación sobre la construcción de un sistema multi-GPU, no reemplazarla. No dudes en enviarme cualquier pregunta o comentario que puedas tener. Si me equivoco en algo de lo anterior, agradecería mucho un comentario o mensaje directo para mejorarlo aún más 🙏!

Nota: A menos que se indique lo contrario, todas las imágenes son del autor. He incluido algunos enlaces afiliados de Amazon. Comprar un artículo a través de los enlaces no tiene un costo adicional y potencialmente podría recibir una pequeña comisión.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Registro KYC ahora hecho fácil usando IA

Los participantes del mercado de capitales pueden ahora despedirse de los largos y engorrosos procesos de registro de...

Inteligencia Artificial

UNESCO Expresa Preocupaciones Sobre la Implantación de Chips de IA en Relación a la Privacidad

En una revelación reciente, las Naciones Unidas advirtieron sobre los posibles peligros de la neurotecnología avanzad...

Aprendizaje Automático

Entrena un Modelo de Lenguaje Grande en una sola GPU de Amazon SageMaker con Hugging Face y LoRA.

Esta publicación está coescrita con Philipp Schmid de Hugging Face. Todos hemos escuchado sobre el progreso en el cam...

Inteligencia Artificial

Conoce circ2CBA un modelo novedoso de aprendizaje profundo que revoluciona la predicción de los sitios de unión circRNA-RBP

En un reciente avance, un equipo de investigadores de China ha presentado un modelo de aprendizaje profundo, llamado ...

Inteligencia Artificial

La recuperación del conocimiento toma el centro del escenario

Para hacer la transición de la implementación del consumidor a la empresarial para GenAI, las soluciones deben constr...