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

El desarrollador de OpenClaw construye el complemento de memoria cognitiva Kumiho para la colaboración persistente de agentes.
Un desarrollador creó Kumiho, un sistema de memoria cognitiva de IA respaldado por un grafo de conocimiento, para abordar la falta de memoria de OpenClaw entre sesiones. El complemento openclaw-kumiho se conecta a las conversaciones para recordar el contexto, capturar resúmenes estructurados y mantener versiones de las salidas creativas.

Clawpage: Una Herramienta que Convierte Conversaciones de OpenClaw en Sitios Web Estáticos
Un desarrollador creó Clawpage, una habilidad que transforma el historial de sesiones de OpenClaw en páginas web estáticas para conservar conversaciones valiosas, incluyendo el intercambio de ideas, la investigación y el proceso de depuración. La herramienta está disponible en GitHub.

El complemento HomeClaw conecta Apple HomeKit con OpenClaw.
HomeClaw es un complemento de OpenClaw que conecta dispositivos Apple Home/HomeKit a OpenClaw. Requiere una cuenta de desarrollador de Apple para compilar y ejecutar debido a las restricciones de Apple HomeKit para distribuciones notarizadas.

Construyendo un Lenguaje de Programación con Claude Code: El Experimento Cutlet
Ankur Sethi construyó un lenguaje de programación completo llamado Cutlet usando Claude Code durante cuatro semanas, con la IA generando cada línea de código mientras él se enfocaba en barreras de seguridad y pruebas. El lenguaje cuenta con tipado dinámico, operaciones vectorizadas y un REPL, ejecutándose en macOS y Linux.