Servidor para inferencia en LLMs

Atendiendo a una demanda interna en la UNC, pusimos a funcionar un «cajón de GPUs» que fuera donado por el Proyecto ARPHAI gracias a un subsidio de IOI. Tenemos un fatnode con 1 TiB de RAM y 4 GPUs destinada a inferencia en grandes modelos de lenguaje.

Diversos grupos dentro de la UNC nos piden desde 2023 hacer inferencia en LLMs. Aunque hay muchísimos modelos online, aparentemente sin costo, su gratuidad se basa en hacer pocas consultas por día. Muchas investigaciones que se basan en realizar métricas o detectar sesgos de estos LLMs requieren miles de consultas por día, y en definitiva el uso de estas herramientas se vuelve un problema, ya que a la larga implica gastar subsidios (ARS) en tokens (USD). Las demandas internas son de los grupos de investigación en Machine Learning de FaMAF, FCEFyN, pero también desde otras áreas, como la Prosecretaría de Informática que necesita chatbots a partir de documentación interna a fin de hacer onboarding de pasantes. Desde la Facultad de Lenguas están planificando trayectos formativos para 2025 que incluyan LLMs como traductores y necesitan salir del modelo freemium que brinda OpenAI y otros.

En enero de 2024 el proyecto ARPHAI del CIECTI, gana un proyecto de IOI (Mariela Rajngewerc, Verónica Xhardez, Laura Alonso Alemany, Laura Ación y Sabrina Laura López) para mejorar su infraestructura tecnológica. Gran parte de este proyecto se invierte en la compra de un servidor a la oficina en EEUU de MutiTech en julio de ese año. Luego de hacer la compra en el exterior y los trámites de ROECYT, llega a UNC Supercómputo en octubre de la mano del Fede Stasyszyn.

Aunque parecía trivial instalarlo, ya que teníamos espacio en rack, potencia eléctrica y enfriamiento, no teníamos ni los 3 cables C19 a C20 de 220V y 16A, ni la zapatilla (PDU) para alimentar las 3 fuentes de 2200W que tiene el gabinete. Los cables los conseguimos gracias a la gestión de Diego Lavalle, pero la zapatilla no hubo caso. La terminó fabricando Horacio Rodríguez del IATE-CONICET. Lección aprendida: no es fácil entregar electricidad a un server que puede albergar hasta 8 GPUs de 400W cada una.

Nuestro personal lo instaló en hardware y software, y la descripción de la máquina es la siguiente:

Hardware

  • 2 EPYC Milan 7643 (48 cores Milán, 1.76 TFLOPS fp64, 8 canales DDR4-3200, 225W, Q1’21).
  • 1024 GiB (2x8x64GiB Micron) de RAM DDR4-3200.
  • 4 NVIDIA A30 (56 SM Ampere, 165 TFLOPS fp16, 10.3 TFLOPS fp32, 24 GiB HBM2 933 GiB/s, 165W, Q1’21)

Todo dentro de un Gigabyte G482-Z52 (rev. A00).
Es un fatnode hecho y derecho al cual internamente llamamos «Gordito».

Software

Ejemplos

Screenshot de Ollama cargado con los pesos de Llama3-70b y usando OpenWebUI como frontend.

El vLLM cargado con los parámetros de Tango 70b, un ajuste del modelo MessIRVe que se presentó en el paper realizado con recursos de UNC Supercómputo:
Francisco Valentini, Viviana Cotik, Damián Furman, Ivan Bercovich, Edgar Altszyler, & Juan Manuel Pérez (2024). MessIRve: A Large-Scale Spanish Information Retrieval Dataset. arxiv:2409.05994.
El círculo se cierra, en 2025 estamos dando cómputo para inferencia en LLMs a que tuvieron ajuste fino en nuestras mismas GPUs.

El monitor nvtop muestra el estado de las 4 GPUS NVIDIA A30 (24 GiB) con vLLM cargado con Tango 70b. Vemos que el modelo se distribuye en las 4 GPUs y todas quedan con un 80% de memoria ocupada. Esto es malo ya que no se pueden cargar otros modelos grandes y que la inferencia satura principalmente por el ancho de banda PCIe 4.0 16x entre las placas (32+32 GiB/s). Estamos tratando de mejorar este aspecto:

  • Ya compramos 2 puentes NVLink para las A30 para aumentar a 200 GiB/s la velocidad de comunicación entre pares de GPUs.
  • Nos presentamos a los NVIDIA Academic Grant Programs, para tener GPUs más modernas y con más RAM.
  • Estamos buscando fondos de la UNC.

por Nicolás Wolovick
Director UNC Supercómputo