Cómo afecta la jerarquía de memoria de la GPU a la velocidad de inferencia de los LLM
Traducción automática
Este artículo se tradujo automáticamente a partir de la versión original en inglés.
La jerarquía de memoria de la GPU afecta a la inferencia de los LLM porque trasladar un tensor intermedio a la memoria principal de la GPU cuesta más que reutilizarlo dentro de un kernel en ejecución. La HBM almacena el modelo grande y la caché de atención. Los registros, la memoria compartida y la L2 ofrecen espacios más pequeños para reutilizar datos durante el cálculo.
Al analizar el rendimiento de la inferencia, los ingenieros deben distinguir la capacidad de memoria del tráfico de memoria. Que un modelo quepa en la HBM no demuestra que sus kernels transfieran datos de forma eficiente.
Qué almacena cada memoria
| Memoria | Ámbito | Función en la inferencia |
|---|---|---|
| Registros | Valores utilizados por un hilo | Acumuladores y cálculos intermedios |
| Memoria compartida | Hilos de un mismo bloque de cómputo | Reutilización cooperativa de bloques de matrices y reducciones |
| Caché L2 | Compartida por toda la GPU | Reutilización entre bloques sin otra lectura de la memoria principal |
| HBM | Memoria principal de la GPU | Pesos, KV cache, entradas, salidas y resultados intermedios más grandes |
Para la H100 SXM, NVIDIA documenta 80 GB de HBM3 a 3.35 TB/s, 50 MB de L2 y hasta 228 KB de memoria compartida por multiprocesador de streaming. La cantidad disponible para un solo bloque de hilos es menor y depende de la configuración de asignación. Estas especificaciones corresponden a esta variante de GPU; no son límites comunes a todas las H100. Consulta las especificaciones de la H100 y la guía de ajuste de Hopper.
Por qué importa un tensor intermedio
Una secuencia de kernels separados puede escribir un resultado intermedio en la HBM y volver a leerlo en el siguiente kernel. La fusión puede mantener ese resultado en registros o en memoria compartida. FlashAttention aplica principios similares de reutilización de datos a la atención y evita almacenar grandes matrices de puntuaciones en la HBM.
El almacenamiento dentro del chip es limitado. Un kernel que utiliza demasiados registros o demasiada memoria compartida puede reducir el número de bloques que se ejecutan simultáneamente. El desbordamiento de registros puede añadir tráfico de memoria. Por tanto, una mayor fusión no garantiza una ejecución más rápida.
Al investigar un cambio, compara los bytes transferidos a través de la HBM, el uso de registros, el uso de memoria compartida, los desbordamientos de registros y el número de bloques activos. Mantén constantes el modelo, las formas de los tensores, la precisión y la variante de GPU. Después mide la petición completa: un kernel de atención más rápido puede representar solo una pequeña parte de la latencia total.
La guía de ingeniería: jerarquía de memoria de la GPU muestra dónde se encuentran estas memorias en una H100 SXM.