Flash-MoE: Ejecutando el Modelo Qwen de 397B Parámetros en MacBook Pro con C/Metal Puro

Implementación Técnica
Flash-MoE ejecuta Qwen3.5-397B-A17B, un modelo Mixture-of-Experts de 397 mil millones de parámetros con 60 capas de transformador: 45 GatedDeltaNet (atención lineal) + 15 atención completa estándar. Cada capa tiene 512 expertos, con K=4 activados por token más un experto compartido. La dimensión oculta es 4096.
Benchmarks de Rendimiento
- Expertos de 4 bits, kernel FMA: 4.36 tokens/segundo, calidad excelente, llamadas a herramientas completas, 209 GB en disco (mejor actual)
- Expertos de 4 bits, línea base: 3.90 tokens/segundo, calidad excelente
- Expertos de 2 bits, confiar en el SO: 5.74 tokens/segundo, buena calidad, 120 GB en disco (rompe JSON/llamadas a herramientas)
- Pico de token único de 2 bits: 7.05 tokens/segundo, buena calidad (no apto para uso de herramientas)
Nota: La cuantización de 2 bits produce \nombre\ en lugar de "nombre" en la salida JSON, haciendo que las llamadas a herramientas no sean confiables. La de 4 bits es la configuración de producción.
Requisitos de Hardware
- Máquina: MacBook Pro con Apple M3 Max
- Chip: CPU de 16 núcleos (12P + 4E), GPU de 40 núcleos, ANE de 16 núcleos
- Memoria: 48 GB unificada (~400 GB/s de ancho de banda)
- SSD: 1TB Apple Fabric, 17.5 GB/s lectura secuencial (medido)
- macOS: 26.2 (Darwin 25.2.0)
Técnicas Clave
Transmisión de Expertos desde SSD
Los pesos de los expertos (209 GB a 4 bits) se leen desde el SSD NVMe bajo demanda mediante pread() paralelo con grupos de despacho GCD. Solo se cargan los K=4 expertos activos por capa (~6.75 MB cada uno). La caché de páginas del SO gestiona el almacenamiento en caché sin necesidad de caché personalizada (principio "Confiar en el SO"), logrando ~71% de tasa de aciertos de forma natural.
Kernel de Descuantización Optimizado con FMA
El bucle interno de la multiplicación matriz-vector descuantizada de 4 bits reorganiza las matemáticas de (nibble * escala + sesgo) * x a fma(nibble, escala*x, sesgo*x). Precalcular escala*x y sesgo*x permite que la unidad de multiplicación-suma fusionada de la GPU realice la descuantización+multiplicación en una instrucción, resultando en un rendimiento 12% más rápido que la formulación ingenua.
Sombreadores de Computación Metal
Los kernels Metal escritos a mano incluyen:
- Multiplicación matriz-vector descuantizada de 4 y 2 bits (en mosaico, reducida SIMD, caché de entrada compartida, optimizada FMA)
- Activación SwiGLU fusionada
- Normalización RMS (dos pasos: reducción de suma de cuadrados + aplicación)
- Atención GPU por lotes (Q@K^T, softmax, scores@V) para capas de atención completa
- RoPE en GPU (fusionado con desentrelazado de Q y normalización de K)
- Combinación MoE + residual + compuerta sigmoide (kernel fusionado)
Cómputo de Expertos en GPU Diferido
CMD3 (paso hacia adelante del experto) se envía sin esperar. La GPU lo ejecuta mientras la CPU prepara la siguiente capa. La combinación + residual + normalización también están en la GPU, alimentando directamente las proyecciones de atención de la siguiente capa.
BLAS Acelerado para Atención Lineal
La recurrencia de GatedDeltaNet utiliza cblas_sscal, cblas_sgemv y cblas_sger para la actualización de la matriz de estado de 64 cabezas × 128×128, logrando un rendimiento 64% más rápido que el código escalar.
Rendimiento de la Tubería
Promedio por capa a 4 bits: 4.28 ms
- CMD3(prev) → CMD1: proyecciones de atención + delta-net [1.22 ms GPU]
- CPU: vaciar resultados [0.01 ms CPU]
- CMD2: o_proj + norm + enrutamiento + compartido [0.55 ms GPU]
- CPU: softmax + enrutamiento topK [0.003 ms]
- E/S: pread paralelo K=4 expertos [2.41 ms SSD]
- CMD3: paso hacia adelante del experto + combinación + norm [0.04 ms codificar, DIFERIDO]
Restricciones de Arquitectura
En Apple Silicon, el DMA del SSD y el cómputo de la GPU comparten el mismo controlador de memoria y no se pueden superponer de manera rentable. Los kernels de descuantización de la GPU están saturados de ancho de banda a ~418 GiB/s. Incluso pequeños DMA de SSD en segundo plano causan picos de latencia desproporcionados en la GPU a través del arbitraje del controlador de memoria, requiriendo una tubería en serie.
📖 Leer la fuente completa: HN AI Agents
👀 Ver también

Mundo: Simulación de Vida Artificial de Final Abierto con Redes Neuronales Evolutivas
Werld es una simulación de vida artificial en tiempo real donde agentes con redes neuronales NEAT evolucionan su propia arquitectura neuronal, procesamiento sensorial y comportamientos sin reglas predefinidas ni funciones de recompensa. La simulación comienza con 30 agentes en un grafo de mundo pequeño de Watts-Strogatz con 64 canales sensoriales, 7 funciones motoras continuas y 29 rasgos genéticos heredables.

La extensión OpenClaw enruta las solicitudes a través de la CLI de Claude Code en lugar de la API.
Una extensión de OpenClaw ejecuta el binario CLI de Claude como un subproceso, enrutando las solicitudes a través de Claude Code CLI en lugar de la API de Anthropic. Esto proporciona la experiencia completa de Claude Code a la tarifa plana de un plan máximo.

Servidor MCP Nakkas Genera SVGs Animados a partir de Descripciones de IA
Nakkas es un servidor MCP donde la IA construye configuraciones completas de SVG animados a partir de descripciones, generando SVG animados limpios con formas, degradados, animaciones y filtros. Admite curvas paramétricas, 15 preajustes de filtro, animaciones CSS @keyframes y SMIL, y funciona en cualquier lugar donde se renderice SVG.

idea-reality-mcp: El servidor MCP verifica la existencia de herramientas antes de que Claude escriba código
Un desarrollador construyó un servidor MCP llamado idea-reality-mcp que escanea repositorios de GitHub, discusiones de Hacker News, paquetes npm y PyPI antes de que Claude escriba cualquier código, devolviendo una puntuación de 'señal de realidad' de 0-100 que indica la competencia en el mercado.