- MVDRAM es un sistema que acelera las operaciones GeMV para inferencia de LLM de baja precisión usando DRAM sin modificar
- Aprovecha la DRAM como motor GeMV para ofrecer alto rendimiento
- Elimina los costos de prearreglo de entradas y conmutación de bits de salida de los enfoques PUD existentes
- Los resultados experimentales muestran un rendimiento superior al de implementaciones basadas en procesador en LLM de baja precisión
- Presenta nuevas posibilidades para el hardware de IA
MVDRAM: aceleración de LLM de baja precisión con DRAM sin modificar
- La operación GeMV sigue siendo un cuello de botella importante de latencia en la inferencia de modelos de lenguaje grandes (LLM)
- Processing-Using-DRAM (PUD) tiene el potencial de reutilizar la DRAM como motor GeMV
- Sin embargo, aplicar PUD al pipeline de inferencia de LLM genera una sobrecarga considerable
El enfoque innovador de MVDRAM
- MVDRAM coordina el procesador y la DRAM aprovechando los patrones de compartición de datos y la linealidad matemática
- Acelera las operaciones GeMV al eliminar los costos de los enfoques PUD existentes
Resultados experimentales
- En experimentos con cuatro módulos DDR4 DRAM, MVDRAM mostró un rendimiento superior al de implementaciones basadas en procesador en LLM de baja precisión (4 bits o menos)
- Alcanzó hasta 7.29 veces más velocidad y 30.5 veces más eficiencia energética
Mejora general de la inferencia de LLM
- En modelos de baja precisión cuantizados a 2 bits y 4 bits, mostró mejoras de rendimiento de 2.18 veces y 1.31 veces, respectivamente
- La eficiencia energética también mejoró 3.04 veces y 2.35 veces, respectivamente
Nuevas posibilidades para el hardware de IA
- MVDRAM demuestra la posibilidad de usar DRAM estándar como acelerador para LLM
- Tiene el potencial de abrir nuevas fronteras para el hardware de IA
1 comentarios
Opiniones en Hacker News
Como material de contexto están una de las primeras propuestas de in-DRAM compute, https://users.ece.cmu.edu/~omutlu/pub/in-DRAM-bulk-AND-OR-ie..., la primera demostración con componentes disponibles en el mercado https://parallel.princeton.edu/papers/micro19-gao.pdf, la herramienta de implementación DRAM Bender https://github.com/CMU-SAFARI/DRAM-Bender, y un artículo reciente de revisión sobre procesamiento in-DRAM https://arxiv.org/abs/2412.19275
No eran tan ingeniosos ni tan avanzados como la idea actual, pero al final estos artículos son más bien la versión moderna de una idea vieja
Llama la atención que las listas de autores de las referencias 1 y 3 sean absurdamente largas
Pensé que también estaría incluido el post de 2016 https://news.ycombinator.com/item?id=12469270, y el de 2019 https://news.ycombinator.com/item?id=22712811 sí aparece
Por supuesto, este tipo de comportamiento fuera de especificación de la DRAM, en particular su capacidad de copia, también está relacionado con un bug famoso https://news.ycombinator.com/item?id=5314959
Parece que varias personas observaron este fenómeno de forma independiente y pensaron: “quizá sea un comportamiento útil”
Cuando una lista de autores es tan enorme, normalmente se pone solo el primer nombre y el resto se maneja como “et al.”
Eso de “emitir comandos DRAM que violan deliberadamente los parámetros de temporización especificados por el fabricante para obtener hasta 65,536 operaciones de bits en paralelo” se siente como un golpe directo contra los blobs binarios de entrenamiento de DRAM
Esto es rarísimo, de esos que te tuercen la cabeza, y al mismo tiempo brillantemente creativo
A veces se recompensa meterse hasta el fondo en los detalles. Excelente
Probablemente también habría sido posible en la Mostek MK4096 de 1973; tomó alrededor de medio siglo que alguien lo descubriera
¿O sea que hacen operaciones matriciales en la propia DRAM? Una locura, pero interesante
El procesamiento usando DRAM (PUD) aprovecha las características analógicas propias del funcionamiento de la DRAM para permitir cálculos bit-serial altamente paralelos dentro del arreglo de memoria
Investigaciones previas mostraron que incluso la DRAM comercial disponible en el mercado puede lograr capacidades PUD sin modificaciones de hardware si se violan deliberadamente los parámetros de temporización
Las operaciones clave son dos: RowCopy y majority-of-X (MAJX). RowCopy transfiere datos a otra fila dentro del mismo subarreglo emitiendo un comando ACT inmediatamente después de PRE, antes de que termine la precarga de la bitline, y como afecta simultáneamente a todas las celdas de una fila, es unas 100 veces más rápido que el movimiento de datos mediado por el procesador
MAJX realiza una votación por mayoría activando simultáneamente X celdas que comparten la misma bitline, y en DRAM comercial se implementa emitiendo rápidamente ACT, PRE y ACT en secuencia, sin demora. Esto permite activar de 2 a 32 filas al mismo tiempo y se convierte en la unidad básica de cálculo de PUD, que aprovecha el paralelismo del subarreglo con 65,536 columnas
¿En el mundo del hardware también existe el riesgo de aprovechar bugs que el fabricante podría corregir algún día?
En software, apoyarse en un bug de la plataforma para crear una función o corregir otro bug es una mala idea
Quince años después ese bug puede corregirse, el sistema puede explotar y nadie sabrá por qué
Creo que hace poco hubo una discusión parecida, quizá relacionada con comportamiento indefinido de alguna función de C
Puede haber un bug en una tarjeta de red específica, o una combinación de funciones que se comporta de forma interesante y le da ventaja a una firma de trading
Estos bugs o funciones a veces desaparecen porque se corrige el bug, o porque en un mercado más grande se considera que no hacen falta. Por eso algunas empresas intentan comprar todo el inventario restante de ciertos modelos
En el peor caso, tienes que hacer que funcione incluso con hardware de un proveedor famoso que desapareció hace 15 años. Los grandes clientes han usado ese equipo durante 15 años sin problemas, y si al conectar tu equipo nuevo deja de funcionar, van a culpar a tu hardware
En equipos de telecomunicaciones esto es especialmente importante, así que se incluyen todo tipo de tratamientos especiales para proveedores que no siguieron la especificación. Y hay que seguir dejando esos tratamientos especiales en el firmware para no romper los sistemas de otros
Si imaginas equipos antiguos, equipos de empresas que ya desaparecieron y equipos de competidores actuales llenando paredes enteras mientras brazos robóticos conectan cables, te das una idea de cómo son algunos laboratorios de validación de hardware
El firmware de los fabricantes de placas madre también está lleno de tratamientos especiales para CPUs, chipsets y demás componentes específicos
El impacto que tiene al combinarse con compiladores optimizadores parece haberse vuelto conocido por un público más amplio alrededor de 2010, quizá 2013, y ya pasaron más de 12 años
Este artículo no trata tanto de depender de un bug, sino más bien de mostrar qué podría ser posible con DRAM y esperar que esas funciones se estandaricen
¿Multiplicación general de matriz por vector (GeMV)? No soy precisamente bueno para las matemáticas.
En una clase de matemáticas 3D, cuando aprendimos sobre cuaterniones, vimos brevemente la historia de los cálculos con matrices en el desarrollo gráfico. Reprobé esa clase la primera vez, así que de verdad no soy una persona de matemáticas.
Según entiendo, los cuaterniones se volvieron populares porque son casi tan precisos como las matrices, pero con una complejidad de cálculo mucho menor.
¿Ha habido intentos de crear LLM con cuaterniones en lugar de matrices? ¿O la optimización con cuaterniones es más útil en gráficos en tiempo real?
Un subconjunto específico de ellas puede usarse para describir rotaciones en el espacio tridimensional, y los cuaterniones, aunque es discutible, pueden hacerlo mejor.
Pero con cuaterniones no se puede describir una función lineal arbitraria, así que no parecen adecuados para LLM.
Las redes neuronales necesitan muchas más dimensiones.
Se pueden representar con matrices, y probablemente haya usos razonables como QDNN para matrices cuyos elementos sean cuaterniones en lugar de números reales.
En mi experiencia, en arquitecturas a gran escala como los LLM, las formas más simples tienden a tener éxito, salvo que haya una ventaja real en representarlas con tipos escalares más sofisticados, como en física o gráficos 3D.
Además de eso, esas representaciones de rotación no escalan muy bien con cuaterniones al agregar dimensiones.
Los números complejos son una representación compleja del espacio bidimensional, los cuaterniones son una representación compleja del espacio tridimensional, y para pasar a cuatro dimensiones se necesitan octoniones con 8 elementos.
Me parece un poco poco científico que no citen el material original de Intelligent RAM (IRAM) de 1997.
https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&q=iram...
Dicho eso, IRAM parece más cercano a cómputo cerca de la memoria, agregando ALU al chip de memoria, mientras que el cómputo dentro de la memoria usa el propio arreglo de memoria.
Para ser justos, antes de la aparición del deep learning con longitudes de vector enormes, el atractivo del cómputo dentro de la memoria era mucho menor. Por eso parece que la gente intentaba crear métodos que permitieran un control más fino de las operaciones.
¿Podemos esperar que la multiplicación de matrices, y quizá otras operaciones, se trasladen de las CPU tradicionales a la DRAM, incluso con soporte de hardware dedicado?
¿Este tipo de cambio de ubicación del procesamiento les dará una ventaja a empresas como Samsung? ¿Dónde quedarán empresas como NVIDIA?
https://www.patentlyapple.com/2024/12/apple-plans-to-transit...
Es un hack interesante. No leí el paper, pero este tipo de operación parece térmicamente inestable.
Entonces los resultados de inferencia de los LLM podrían cambiar según la temperatura ambiente :-)
Para más detalles, lee el paper o busca “temperature”.