LMSYS ha incorporado un asignador de memoria unificada experimental en SGLang para arquitecturas de modelos híbridos como GPT-OSS, Qwen3.5 y Kimi K3. Estos modelos combinan capas de atención completa, atención de ventana deslizante y capas recurrentes o de atención lineal, y cada tipo de estado utiliza la memoria de alto ancho de banda (HBM) de la GPU de forma distinta. Hasta ahora, SGLang obligaba a los operadores a repartir la HBM entre esos tipos de estado antes del arranque; el nuevo asignador les permite compartir una única arena y ajusta la disposición a medida que cambia el tráfico, lo que reduce la capacidad ociosa y las expulsiones evitables.

Por qué los pools fijos desperdician HBM

La decodificación autorregresiva almacena tensores de clave y valor (KV) de tokens anteriores para calcular el siguiente. Las capas de atención completa conservan el KV de todo el contexto, de modo que su consumo crece con la longitud de la secuencia. Las capas de ventana deslizante solo guardan un sufijo acotado, mientras que las capas recurrentes y de atención lineal mantienen un estado de tamaño fijo por cada solicitud activa, por lo que su consumo depende sobre todo de la concurrencia.

El asignador anterior de SGLang dividía la HBM en pools separados que se configuraban mediante --swa-full-tokens-ratio y --mamba-full-memory-ratio. El tráfico de contexto largo podía agotar el pool de atención completa mientras la capacidad de KV de ventana y de estado recurrente quedaba sin usar, y el tráfico corto de alta concurrencia podía llenar los pools de estado acotado mientras la capacidad de atención completa permanecía libre. La memoria libre no podía cruzar las fronteras entre pools.

Una única arena, diseños mixtos

Al activar --enable-unified-memory, el KV de atención completa se coloca en el extremo alto de una única arena y crece hacia abajo. El KV de ventana deslizante y el estado recurrente comienzan en el extremo bajo y crecen hacia arriba, mientras que una compactación diferida conserva una región libre entre ambos. Los indicadores de proporción siguen disponibles, pero solo como sugerencias de colocación inicial; ya no imponen particiones de capacidad fijas tras el arranque.

El asignador representa un token, o una ranura de estado recurrente, como una entrada con filas para cada capa participante. Una página es una secuencia contigua de entradas, de modo que la asignación, la expulsión y el movimiento de páginas actualizan todas las capas a la vez. Las filas dentro de una entrada pueden mantener formas y tipos de datos diferentes. Ese diseño permite que el KV del modelo borrador especulativo comparta almacenamiento y reglas de ciclo de vida con el KV del modelo objetivo incluso cuando sus tipos de datos difieren, y mantiene las claves de índice de Dynamic Sparse Attention de Kimi K3.1 junto al KV de Multi-head Latent Attention al que hacen referencia.

La admisión se convierte en un problema de empaquetado

Una solicitud entrante puede requerir páginas de atención completa, páginas de ventana deslizante y una ranura de estado recurrente a la vez. SGLang evalúa la disposición disponible en tres pasos de coste creciente:

  1. Reutilización in situ: rellenar los huecos existentes y extender cualquiera de las bandas extremas sin mover datos.
  2. Compactar los extremos: empaquetar las asignaciones dentro de las bandas alta y baja para eliminar huecos internos.
  3. Redistribución: mover las asignaciones elegibles al espacio entre las bandas extremas compactadas.

Los identificadores de página virtuales mantienen estables las referencias lógicas mientras SGLang copia una página y reasigna su ubicación física. Un registro de uso de páginas anota los pases de forward del modelo, las copias de HiCache y las transferencias de red que aún hacen referencia a cada página. Cuando una solicitud libera una página, SGLang la marca como lógicamente libre y retiene su dirección física fuera de nuevas asignaciones hasta que el registro no muestre usuarios pendientes.

Dónde la H200 ganó margen

LMSYS comparó la memoria unificada con la configuración de pools separados predeterminada de SGLang en una sola NVIDIA H200. Las cargas de trabajo probadas mostraron una paridad casi total bajo presión moderada y una mayor capacidad de solicitudes cuando un pool fijo se convertía en el cuello de botella.

Resultados de benchmark en una sola H200 reportados por LMSYS:

Modelo y carga de trabajo Pools separados Memoria unificada
Qwen3.5-4B, 1.024 tokens de entrada, 256 tokens de salida, concurrencia 64 5.880 tokens de salida/s 5.830 tokens de salida/s con precisión GSM8K idéntica
GPT-OSS-20B bajo concurrencia máxima 618 solicitudes simultáneas; 43 s hasta el primer token Unas 1.000 solicitudes simultáneas; 6 s hasta el primer token; 14% más de rendimiento
Qwen3.5-4B, 16K tokens de entrada, 4.096 tokens de salida, concurrencia 64 22 solicitudes activas 32 solicitudes activas y 26% más de rendimiento
Qwen3.5-4B, 512 tokens de entrada, 16.384 tokens de salida, concurrencia 51 Unas 294 retracciones por cada 1.000 solicitudes completadas Unas 233 retracciones por cada 1.000 solicitudes completadas

Una prueba de sensibilidad aparte con GPT-OSS-20B mostró el coste de una división estática deficiente: fijar --swa-full-tokens-ratio en 0,1 redujo el rendimiento un 12% respecto a la proporción predeterminada.

Una retracción ocurre cuando la presión de memoria obliga al planificador a retirar una solicitud en curso del lote activo. Un menor número de retracciones reduce la agitación de la planificación y el trabajo repetido durante generaciones largas.

Estas cifras cubren una sola H200 y las cargas de trabajo enumeradas; los despliegues multi-GPU y el tráfico de producción aún requieren una validación específica por carga de trabajo.

Compatibilidad en la pila de servicio

Integraciones de SGLang disponibles con memoria unificada:

Área Rutas compatibles
Planificación y caché Overlap scheduling, Radix cache y HiCache
Ejecución distribuida Desagregación prefill/decode, paralelismo de pipeline, paralelismo de contexto de decodificación y data-parallel attention
Decodificación especulativa EAGLE, EAGLE3, DFLASH y DSPARK; los borradores fusionados compatibles pueden compartir el almacenamiento de entradas con el KV del modelo objetivo

La guía de uso de SGLang documenta la configuración, y la guía de diseño ofrece la matriz de compatibilidad de backends y los detalles del asignador.

Los límites actuales condicionan el despliegue

La memoria unificada sigue siendo experimental y está dirigida a modelos híbridos.

  • Sin soporte: modelos con solo capas de atención completa, MLA combinada con capas de ventana deslizante y DeepSeek-V4.
  • La desagregación prefill/decode requiere Mooncake y no puede funcionar junto con paralelismo de pipeline, decodificación especulativa o paralelismo de contexto de decodificación.
  • HiCache no puede funcionar junto con EAGLE o EAGLE3.
  • La apropiación por prioridad está desactivada mientras la memoria unificada esté activa.

Reproducir la mezcla de tráfico antes del despliegue

La evaluación en producción debe comenzar en un entorno de staging con --enable-unified-memory y trazas que cubran tráfico de contexto largo, de solicitudes cortas y de alta concurrencia. Los equipos pueden comparar el rendimiento de salida, el tiempo hasta el primer token, el máximo de solicitudes activas y las retracciones frente a su configuración actual de pools divididos, y después verificar cada backend habilitado contra la matriz de compatibilidad de SGLang.