El verdadero desafío que limita los modelos de IA en la actualidad

Algunos de los problemas que enfrentamos al implementar algoritmos de IA, generalmente nos centramos en la capacidad de los procesadores para manejarlos.

Pero ahora, las GPU de NVIDIA impulsan los últimos modelos de lenguajes grandes y las empresas compiten para construir aceleradores de IA más rápidos. Estos nuevos chips prometen más potencia computacional, más núcleos y más operaciones por segundo.

Entonces, se podría suponer que el futuro de la IA depende de la construcción de procesadores cada vez más potentes. Pero hay un problema. Muchos de los sistemas de IA actuales no están limitados por la rapidez con la que pueden realizar cálculos. Están limitados por la rapidez con la que pueden acceder a los datos. Datos que les resultan imprescindibles para realizar sus cálculos.

En otras palabras, el futuro de la IA puede depender menos de la computación y más de la memoria.

Sé que puede que no parezca muy intuitivo, pero demos un paso atrás e imaginemos algo: imaginemos contratar al chef más eficiente y rápido del mundo.

Este chef puede preparar comidas a una velocidad increíble. Sin embargo, cada ingrediente se almacena en un almacén a varios kilómetros de distancia. Antes de que el chef pueda cocinar, alguien debe tomar los ingredientes y llevarlos a la cocina.

No importa cuán talentoso sea el chef, habrá períodos en los que simplemente se quedará esperando a que lleguen los ingredientes que necesita para empezar a cocinar.

Los sistemas de inteligencia artificial modernos enfrentan un desafío similar. Los procesadores que utilizan pueden realizar cálculos, pero no pueden operar con datos que aún no han llegado. Si el procesador puede calcular más rápido de lo que la memoria puede entregar información, el rendimiento queda limitado por el movimiento de datos en lugar de por el cálculo.

Esto es lo que en informática se conoce como cuello de botella de la memoria. Es uno de los desafíos más importantes y menos discutidos de la IA moderna.

La escala de los modelos modernos

Para comprender mejor por qué la memoria se ha convertido en un problema tan importante, debemos considerar el tamaño de los modelos de IA actuales. Los primeros modelos de aprendizaje automático podrían haber contenido miles o millones de parámetros, mientras que los modelos básicos modernos contienen miles de millones o incluso billones.

Cada uno de estos parámetros representa un valor numérico que debe almacenarse en la memoria y al que se debe acceder repetidamente durante el entrenamiento y la inferencia.

Bien, eso suena lógico, ¡pero solidifiquémoslo con algunos números! Supongamos que tenemos un modelo que contiene 70 mil millones de parámetros. Antes incluso de realizar un solo cálculo, el sistema necesita un lugar para almacenar todos esos parámetros.

Ahora quiero que imagines a miles de usuarios interactuando con el modelo simultáneamente. El hardware debe mover continuamente enormes cantidades de información entre la memoria y los procesadores.

Como se puede concluir, el desafío ya no es simplemente realizar cálculos; más bien, envía datos al hardware con la suficiente rapidez.

Imagen del autor (El gráfico es una representación de los parámetros utilizados en los modelos de IA a lo largo de los años utilizando datos publicados)

Mover datos puede ser más costoso que procesarlos, lo cual es una de las realidades más contrarias a la intuición en la informática. A lo largo de las décadas, el rendimiento del procesador ha mejorado drásticamente, a medida que los ingenieros se han vuelto excepcionalmente buenos en el diseño de chips que pueden realizar cálculos cada vez más rápido. Por otro lado, las mejoras en el sistema de memoria avanzaron a un ritmo más lento.

Esto creó un desequilibrio creciente que se hizo más evidente a medida que los sistemas de IA crecieron. Los procesadores modernos pueden ejecutar billones de operaciones por segundo, pero suelen pasar mucho tiempo esperando que lleguen los datos.

Este cuello de botella de datos aparece de diferentes maneras dentro de los sistemas de IA. Podemos verlo mientras movemos datos entre la memoria y los procesadores, entre GPU, entre servidores o entre centros de datos.

Estos modelos seguirán creciendo y, a medida que lo hagan, el problema del movimiento de datos desempeñará un papel importante en el rendimiento general del sistema.

Comprender la memoria de IA

Hasta ahora creo que he escrito la palabra “memoria” más de 20 veces (¡no las conté!). Quizás te hayas preguntado, ¿de qué tipo de memoria está hablando? La mayoría de la gente está familiarizada con la RAM, la memoria instalada en las computadoras portátiles y de escritorio. Los sistemas de IA utilizan diferentes tipos de memoria para diferentes propósitos.

1- RAM: La memoria de acceso aleatorio almacena los datos utilizados por la CPU. Es relativamente grande pero no particularmente rápido en comparación con la memoria de IA especializada.

2- VRAM: Las unidades de procesamiento de gráficos contienen una memoria dedicada conocida como Memoria de acceso aleatorio de vídeo (VRAM). Que se utiliza durante el entrenamiento y la inferencia para almacenar parámetros del modelo, lotes de entrenamiento, activaciones y cálculos intermedios. La cantidad de VRAM disponible a menudo determina si un modelo cabe en una GPU.

3- Memoria de alto ancho de banda (HBM): los aceleradores de IA modernos dependen cada vez más de la memoria de alto ancho de banda (HBM). HBM está diseñado específicamente para mover grandes cantidades de datos con extrema rapidez. En lugar de simplemente aumentar la capacidad de la memoria, HBM se centra en aumentar el ancho de banda de la memoria, que es la velocidad a la que se puede transferir la información.

Imagen del autor

Aunque el tamaño de la memoria (su capacidad) es importante, su ancho de banda juega un papel más importante. Una forma de pensar en esos dos conceptos es una autopista (quédate conmigo aquí por un segundo). La capacidad es la cantidad de automóviles que pueden existir en la autopista, mientras que el ancho de banda es la cantidad de carriles disponibles.

Puedes tener un estacionamiento enorme, pero si todos los vehículos deben salir por un solo carril, el tráfico se convierte en el factor limitante.

Ahora bien, como dijimos antes, los sistemas de IA utilizan diferentes tipos de memoria de diferentes maneras. El desafío de la memoria aparece de manera diferente durante el entrenamiento y la inferencia.

Capacitación: la capacitación requiere almacenar parámetros del modelo, gradientes, activaciones y estados del optimizador. Como resultado, las necesidades de memoria se vuelven enormes. Esto requeriría distribuir la memoria entre muchas GPU.

Inferencia: la inferencia generalmente requiere menos memoria que el entrenamiento, pero presenta un desafío diferente. El modelo debe atender solicitudes continuamente mientras recupera parámetros y genera resultados rápidamente. Para los sistemas interactivos como los chatbots, ¡la latencia es ahora un problema importante!

Cuanto más rápido pueda entregar información la memoria, más rápido podrá responder el modelo. Ésta es una de las razones por las que las tecnologías de la memoria siguen siendo esenciales incluso después de completar el entrenamiento.

Algunas reflexiones finales

La mayoría de las discusiones sobre optimizaciones del rendimiento de la IA se centran en modelos más grandes y procesadores más rápidos. Sin embargo, los ingenieros de hardware reconocen cada vez más una realidad diferente.

Construir sistemas de IA más inteligentes no es simplemente una cuestión de añadir más potencia computacional. También requiere resolver el problema del movimiento de datos. Afortunadamente, muchos investigadores se están centrando en mejorar el problema del movimiento de datos. Para ello, están explorando diferentes enfoques:

Arquitecturas de memoria mejoradas. Interconexiones más rápidas. Algoritmos eficientes en memoria. Técnicas de compresión de modelos. Computación cercana a la memoria. Tecnologías de comunicación óptica y fotónica.

Cada uno de estos enfoques intenta responder a la misma pregunta: ¿Cómo movemos grandes cantidades de información de manera eficiente?

La respuesta puede determinar la trayectoria futura de la IA.

Los sistemas de IA modernos dependen tanto de la computación como de la comunicación. Mientras los procesadores realizan cálculos, los sistemas de memoria determinan la rapidez con la que pueden llegar los datos. A medida que los modelos siguen creciendo en tamaño y complejidad, la capacidad de la memoria y el ancho de banda se están convirtiendo en factores cada vez más importantes en el rendimiento general.

Es posible que el próximo gran avance en el hardware de IA no provenga de un procesador con más núcleos o velocidades de reloj más altas. Puede provenir de una mejor manera de mover datos.

Entonces, ¿cuál de estos enfoques (si corresponde) es la respuesta? Bueno, de momento no lo sabemos, pero poco a poco vamos llegando.

Algunas referencias

Brown, TB, et al. (2020). Los modelos de lenguaje son aprendices de pocas posibilidades. Chowdhery, A., et al. (2022). PaLM: ampliación del modelado del lenguaje con Pathways. Dao, T., Fu, DY, Ermon, S., Rudra, A. y Ré, C. (2022). FlashAttention: atención exacta rápida y con uso eficiente de la memoria con IO-Awareness. Kwon, W., et al. (2023). Gestión eficiente de la memoria para modelos de lenguaje grandes que sirven con PagedAttention. Zhao, WX y col. (2023). Una encuesta sobre modelos de lenguajes grandes.