397B MoE en MacBook: Motor Flash-MoE a 4,4 t/s

Flash-MoE: Ejecutando 397 mil millones de parámetros en un MacBook a 4,4+ tokens/segundo

Imagina ejecutar un modelo Mixture-of-Experts (MoE) de 397 mil millones de parámetros en tu MacBook Pro con salida de calidad de producción a 4,4+ tokens/segundo. Eso es exactamente lo que logra Flash-MoE - sin Python, sin frameworks, solo C/Objective-C puro y shaders Metal ajustados manualmente.

La bestia: Qwen3.5-397B-A17B

Esto no es teórico. El proyecto transmite un modelo cuantizado de 4 bits de 209 GB desde SSD mientras ofrece:

Configuración Velocidad Calidad Disco
Kernel FMA de 4 bits 4,36 t/s Excelente 209 GB
Línea base de 4 bits 3,90 t/s Excelente 209 GB
Expertos de 2 bits 5,74 t/s Buena* 120 GB

*2 bits rompe la fiabilidad de JSON/llamadas a herramientas

Verificación de la realidad del hardware

MacBook Pro M3 Max: 48 GB de memoria unificada, GPU de 40 núcleos, SSD de 17,5 GB/s. No se necesita centro de datos.

Técnicas innovadoras

1. Streaming de expertos desde SSD + "Confía en el SO"

Solo carga K=4 expertos activos por capa (~6,75 MB cada uno)
La caché de páginas del SO maneja LRU (tasa de acierto del 71% de forma natural)
pread() paralelo vía grupos de despacho GCD
No se necesita caché personalizada

Lección: LRU Metal personalizado, compresión LZ4 y mmap funcionaron peor.

2. Kernel de desquantización optimizado con FMA (+12% de velocidad)

// Antes: (nibble * scale + bias) * x
// Después: fma(nibble, scale*x, bias*x)
La multiplicación-adición fusionada de la GPU realiza desquantización+multiplicación en una sola instrucción.

3. Pipeline de GPU diferido

CMD3(cálculo fwd experto) → [DIFERIDO]
CMD1: proyecciones de atención
CPU: enrutamiento + pread expertos
CMD2: combinar + normalización
→ Siguiente capa
4,28 ms por capa de promedio en 4 bits.

4. Kernels Metal escritos a mano

  • matvec desquantizado de 4 bits/2 bits (en mosaico, SIMD, caché compartida)
  • SwiGLU fusionado, RMS norm, combinación MoE
  • Atención GPU en lotes (Q@Kᵀ, softmax, scores@V)
  • RoPE GPU + desentrelazado

5. Atención lineal acelerada por BLAS

GatedDeltaNet usa cblas_sgemv/sger - 64% más rápido que código escalar.

Lo que descartaron (58 experimentos)

Enfoque fallido Impacto Por qué
Compresión LZ4 -13% Descompresión > ahorros de caché
Desquant LUT GPU -2% Serialización de registros
Predicción de expertos -18% Contaminación de caché
Expertos mmap -5x Sobrecarga de fallos de página

Listo para producción

cd metal_infer && make
./infer --prompt "Explica la computación cuántica" --tokens 100
./chat  # TUI interactivo + llamadas a herramientas

Seguridad: Huella de memoria fija de 6 GB deja 42 GB para SO + caché de páginas. Sin riesgo de OOM en la máquina principal de desarrollo.

El paper

Detalles técnicos completos cubren más de 90 experimentos y la historia de desarrollo humano+IA de 24 horas. Esto es inferencia state-of-the-art en Apple Silicon - de código abierto, probado en batalla y empujando los límites del hardware.

Estrellas: 3,2k | Forks: 371 - La comunidad reconoce la innovación real cuando la ve.

Artículo original: Ver original

Compartir este artículo