Artículos · arXiv 2609.18063
La otra mitad del muro de la memoria: Servir MoEs de 35B desde SSD con predicción de enrutamiento entrenada
The Other Half of the Memory Wall: Serving 35B MoEs from SSD with Trained Routing Prediction
Resumen en tres líneas
- 🎯 Los MoE de clase 35B requieren ~19.5 GB incluso en int4, superando la RAM de consumo, mientras que la descarga ingenua a SSD se bloquea por la latencia de disco porque el enrutamiento de una capa depende de la salida anterior.
- 🔧 Edge0 transmite expertos de MoE desde SSD mediante un prerouter por capa que predice el enrutamiento con un token de anticipación, aplicando 'predicción como enrutamiento' junto con un recovery LoRA paralelo no fusionado y destilado en la ruta del estudiante.
- 📈 Sirve un MoE de 35B a ~20.4 tok/s con un pico de memoria de 2.9 GiB en una Mac mini M4 Pro de 24 GB, a 3.9 puntos de referencia promedio del profesor fp16.
Resumen
La inferencia de Mixture-of-experts (MoE) en hardware de consumo está limitada por la memoria de los pesos: un modelo de la clase 35B ocupa 19.5 GB en 4 bits, y la dispersión reduce el cómputo por token, no los bytes que deben retenerse. La descarga ingenua a SSD no ayuda por sí sola, porque los expertos de la capa N+1 deben elegirse antes de que exista la salida de la capa N, por lo que las lecturas no pueden comenzar lo suficientemente temprano como para ocultarse tras el cómputo. Presentamos Edge0, un motor de inferencia MoE por transmisión continua que cierra esta brecha con un prerouter: un cabezal por capa predice el enrutamiento de la siguiente capa con un token de antelación, y dicha predicción se adopta como el enrutamiento mismo, de modo que el conjunto de expertos preparados coincide con el conjunto enrutado y no se descarta nada. Un recovery LoRA no fusionado, entrenado sobre la ruta del estudiante, recupera la calidad perdida debido a la cuantización int4 y al reemplazo del enrutamiento. En una sola máquina de 24 GB, Edge0 sirve un MoE de 35B a 20 tok/s con un pico de memoria activa de 3 GiB, a pocos puntos de su profesor fp16 en promedio en cinco benchmarks públicos. Una variante de 8B se ejecuta sobre el mismo framework, y el framework, los checkpoints y los adaptadores son de código abierto.
Resumen original (inglés)
Mixture-of-experts (MoE) inference on consumer hardware is bounded by weight memory: a 35B-class model is 19.5GB at 4-bit, and sparsity shrinks the compute per token, not the bytes that must be held. Naive offloading to SSD does not help on its own, because layer N+1's experts must be chosen before layer N's output exists, so the reads cannot start early enough to hide behind compute. We present Edge0, a streaming MoE inference engine that closes the gap with a prerouter: a per-layer head predicts the next layer's routing one token ahead, and the prediction is consumed as the routing itself, so the staged expert set equals the routed set and nothing is dropped. An unmerged recovery LoRA, trained on the student path, pays back the quality lost to int4 quantization and routing replacement. On a single 24GB machine, Edge0 serves a 35B MoE at 20tok/s inside 3GiB of peak active memory, within a few points of its fp16 teacher on average across five public benchmarks. An 8B tier runs on the same framework, and the framework, checkpoints, and adapters are open source.
Guía de lectura
Problema y motivación
Los modelos Mixture-of-Experts (MoE) escalan los parámetros totales manteniendo un número bajo de parámetros activos por token (por ejemplo, activando ~3B de parámetros por token en un modelo de 35B). Sin embargo, la inferencia en hardware de consumo sigue limitada por la memoria estática de los pesos: un MoE de 35B requiere aproximadamente 19.5 GB incluso cuantizado a int4. En una máquina de 24 GB, esto satura por completo el espacio para el sistema operativo y la caché KV, provocando una severa paginación de memoria y degradando el rendimiento de decodificación (por ejemplo, 3.9 tok/s para un modelo residente en una Mac mini M4 Pro).
Descargar los pesos de los expertos al SSD reduce la huella de memoria, pero la carga bajo demanda ingenua introduce un cuello de botella de serialización estricto: la selección de expertos para la capa depende de la salida de la capa . Las lecturas desde el SSD no pueden comenzar con suficiente anticipación para ocultarse tras el cómputo, pausando la ejecución por la latencia del disco una vez por capa por cada token.
Ideas clave
- SSD como nivel de almacenamiento de pesos: Los pesos de los expertos del MoE permanecen en el SSD en formato int4 y se mapean en memoria (
mmap) dentro de un pool de transmisión compacto. El pico de memoria lo determina el conjunto de trabajo activo y no el tamaño total de los parámetros del modelo. - Predicción como enrutamiento: En lugar de esperar a que termine la capa , un prerouter por capa predice el enrutamiento de la capa con un token completo de antelación. De forma crucial, el modelo trata la predicción como el enrutamiento real en el momento de la decodificación. Esto elimina por diseño los tokens descartados o las cargas de respaldo (fallback), ya que el conjunto preparado en memoria es idéntico al conjunto enrutado.
- Recovery LoRA no fusionado: La cuantización a 4 bits y el enrutamiento aproximado generan una pérdida de calidad. Edge0 entrena un adaptador de bajo rango sobre la ruta de enrutamiento del estudiante mediante destilación. Como fusionar el LoRA en la base int4 y volver a cuantizar elimina la mayor parte del delta (solo sobrevive un 18% de retención a nivel de logits), Edge0 sirve el adaptador como un delta paralelo no fusionado con un costo marginal insignificante.
Método
Arquitectura del cabezal Prerouter
Cada cabezal prerouter perteneciente a la capa se ejecuta en el token sobre la salida de layer norm posterior a la atención y predice el enrutamiento para la capa en el token . Las características de entrada concatenan el estado oculto con dos vectores one-hot top- de enrutamiento (token actual y anterior):
Para el modelo de 35B, esto equivale a . El cabezal calcula:
donde es una ruta residual lineal inicializada con los pesos del enrutador de la siguiente capa.
Ejecución del adaptador no fusionado
La capa MoE servida conserva los bytes base cuantizados y ejecuta el delta LoRA paralelo:
Entrenamiento en tres fases
- Destilación del cabezal: Los cabezales prerouter se entrenan para imitar las decisiones del enrutador real de la siguiente capa del profesor, manteniendo congelado el resto de la red.
- SFT en la ruta del estudiante: Los adaptadores de recovery LoRA (incorporados en las proyecciones de atención, atención lineal y expertos compartidos, pero no en los expertos transmitidos) se entrenan utilizando texto generado por el profesor mientras se fuerza el enrutamiento a través del prerouter.
- Destilación On-Policy: El estudiante genera texto bajo ejecución prerouteada, el profesor base en fp16 evalúa las generaciones y los parámetros de LoRA se optimizan mediante divergencia inversa de Kullback–Leibler con un objetivo de probabilidad top- sensible a las colas (tail-aware).
Resultados
- Rendimiento y memoria (Mac mini M4 Pro, 24 GB):
- edge0-35b (): Logra una decodificación de 20.4 tok/s usando solo 2.9 GiB de memoria activa máxima a partir de un checkpoint int4 de 19.5 GB (frente a 3.9 tok/s y 18.2 GiB cuando es completamente residente).
- edge0-8b (): Logra 28.0 tok/s de decodificación dentro de un pico de memoria de 1.5 GiB.
- Aceleración por precarga (MacBook M2, 16 GB):
- En comparación con la transmisión puramente reactiva bajo demanda, la precarga con prerouter de 1 token incrementa la velocidad de decodificación entre un +80% y un +84% en distintos anchos de enrutamiento (: de 4.8 a 8.6 tok/s; : de 3.5 a 6.4 tok/s; : de 1.8 a 3.3 tok/s).
- El tiempo de carga que bloquea el hilo principal se reduce drásticamente (por ejemplo, de 244.0 ms a 101.9 ms por paso con ).
- Calidad del modelo (OpenCompass):
- A lo largo de cinco benchmarks (AIME 2026, HumanEval, GPQA-Diamond, MMLU-Pro, IFBench), edge0-35b obtiene un promedio de 79.2 frente a 83.2 de la base fp16 Qwen3.6 (una diferencia de 3.9 puntos).
- edge0-8b alcanza 69.9 frente a 72.7 de la base fp16 Ling 3.0 tiny (una diferencia de 2.8 puntos).
Limitaciones y preguntas abiertas
- Concurrencia en el servicio: Edge0 opera serializado por FIFO para solicitudes individuales; el procesamiento por lotes (batching) altera el conjunto de trabajo de los expertos y la dinámica de caché de formas no analizadas en los perfiles de flujo único.
- Sobrecarga de construcción de grafos en CPU: La velocidad de decodificación está limitada por la sobrecarga del framework en la CPU (~44 ms/paso en la construcción del grafo MLX a través de 40 capas), lo cual no puede ser mitigado por optimizaciones de SSD.
- Caída de calidad en razonamiento: La degradación del rendimiento se concentra en evaluaciones de razonamiento complejo (por ejemplo, una caída de 6.1 puntos en AIME para el modelo de 35B y de 10.0 puntos para el de 8B).
- Dependencia del hardware: Las ganancias relativas de rendimiento del prerouter dependen de la latencia del disco y disminuyen cuando las cachés de pesos están calientes o al ejecutarse en niveles de almacenamiento ultrarrápidos.
Términos clave
- Edge0
- Un motor de inferencia MoE por transmisión continua que sirve modelos desde SSD solapando lecturas con cómputo mediante predicción de enrutamiento y compensando la pérdida de calidad con un recovery LoRA no fusionado.
- prerouter
- Un cabezal neuronal ligero por capa que predice las decisiones de enrutamiento de la capa N+1 con un token de anticipación utilizando el estado oculto de la capa N y el historial reciente de enrutamiento.
- prediction-as-routing
- El principio de diseño en el cual el conjunto de expertos predicho por el prerouter se ejecuta directamente como el enrutamiento real de la capa durante la decodificación, eliminando la pérdida de tokens en tiempo de ejecución o las penalizaciones por fallos.
- recovery LoRA
- Un adaptador de bajo rango entrenado mediante destilación en la ruta prerouteada del estudiante y ejecutado como una rama paralela no fusionada para compensar la cuantización int4 y los errores de aproximación de enrutamiento.
- staged decode
- Un modo de ejecución de expertos que utiliza doble búfer de ranuras fijas donde los índices de los expertos se mapean mediante una tabla de ranuras en la GPU para evitar la asignación de memoria paso a paso.
- incremental sticky-slot stack (incr_stack)
- Un mecanismo que actualiza tensores de expertos apilados persistentes in situ, reescribiendo únicamente las ranuras de expertos modificadas en cada paso en lugar de reensamblar todos los tensores de expertos.
- unmerged delta
- Ejecución de un adaptador LoRA en paralelo con los pesos base cuantizados en lugar de fusionarlos, evitando la pérdida de la adaptación de granularidad fina durante una nueva cuantización.
- memory wall (muro de la memoria)
- La disparidad entre el rendimiento del procesador y el ancho de banda/capacidad de la DRAM, que en el servicio de LLMs locales se divide entre el estado dinámico de la caché KV y el almacenamiento estático de los pesos del modelo.
Preguntas
¿Por qué Edge0 utiliza la predicción como enrutamiento en lugar de tratar las predicciones como sugerencias?
Tratar las predicciones como sugerencias requiere mecanismos de respaldo en tiempo de ejecución o descartar tokens cuando las predicciones fallan. Adoptar la predicción directamente como el enrutamiento garantiza que el conjunto de expertos preparados siempre coincida con el enrutado, trasladando el costo de la aproximación al entrenamiento offline, donde la destilación recupera la calidad perdida.
¿Por qué se sirve el recovery LoRA sin fusionar en lugar de integrarse en los pesos de 4 bits?
Los deltas de los pesos de LoRA tienen un RMS cercano a 10^-3, menor que el tamaño de paso de la cuantización de 4 bits. Fusionar y volver a cuantizar elimina la mayor parte del efecto del adaptador, dejando solo un 18% de retención a nivel de logits, mientras que un delta paralelo no fusionado conserva el 100% de fidelidad.
¿Por qué Edge0 predice con un token de anticipación en lugar de hacerlo dentro del mismo token?
Predecir dentro del mismo token requiere vaciados del pipeline de la GPU capa por capa que toman de 30 a 100 ms por paso, más tiempo que la carga que se intenta ocultar. Anticiparse un token completo permite predecir todas las capas preparadas en un solo vaciado por lotes, ofreciendo todo un paso de decodificación de tiempo de cómputo para ocultar la E/S del SSD.
¿Cómo logra Edge0 decodificar más rápido que una línea base totalmente en memoria en una máquina de 24 GB?
Un modelo de 19.5 GB totalmente residente consume 18.2 GiB de RAM, dejando casi sin espacio al sistema operativo y a la caché KV, lo que provoca una paginación severa en el sistema operativo y reduce la decodificación a 3.9 tok/s. Edge0 transmite expertos desde el SSD utilizando un pico de memoria activa de ~2.9 GiB, evitando por completo la presión de memoria del SO y alcanzando 20.4 tok/s.
La explicación de esta página la escribió una IA a partir del artículo y puede contener errores. Consulte el artículo para los detalles.