Flash-MoE: Executando o Modelo Qwen de 397B Parâmetros no MacBook Pro com C/Metal Puro

Implementação Técnica
O Flash-MoE executa o Qwen3.5-397B-A17B, um modelo Mixture-of-Experts com 397 bilhões de parâmetros e 60 camadas de transformer: 45 GatedDeltaNet (atenção linear) + 15 atenção padrão completa. Cada camada possui 512 especialistas, com K=4 ativados por token mais um especialista compartilhado. A dimensão oculta é 4096.
Benchmarks de Desempenho
- Especialistas de 4 bits, kernel FMA: 4,36 tokens/segundo, qualidade excelente, chamada de ferramentas completa, 209GB em disco (melhor atual)
- Especialistas de 4 bits, linha de base: 3,90 tokens/segundo, qualidade excelente
- Especialistas de 2 bits, confiar no SO: 5,74 tokens/segundo, boa qualidade, 120GB em disco (quebra JSON/chamada de ferramentas)
- Pico de token único de 2 bits: 7,05 tokens/segundo, boa qualidade (não adequado para uso de ferramentas)
Observação: a quantização de 2 bits produz \nome\ em vez de "nome" na saída JSON, tornando a chamada de ferramentas não confiável. A configuração de 4 bits é a de produção.
Requisitos de Hardware
- Máquina: MacBook Pro com Apple M3 Max
- Chip: CPU de 16 núcleos (12P + 4E), GPU de 40 núcleos, ANE de 16 núcleos
- Memória: 48 GB unificada (~400 GB/s de largura de banda)
- SSD: 1TB Apple Fabric, leitura sequencial de 17,5 GB/s (medida)
- macOS: 26.2 (Darwin 25.2.0)
Técnicas Principais
Streaming de Especialistas do SSD
Os pesos dos especialistas (209GB em 4 bits) são lidos do SSD NVMe sob demanda via pread() paralelo com grupos de despacho GCD. Apenas os K=4 especialistas ativos por camada são carregados (~6,75MB cada). O cache de página do SO gerencia o cache sem necessidade de cache personalizado (princípio "Confiar no SO"), alcançando ~71% de taxa de acerto naturalmente.
Kernel de Desquantização Otimizado com FMA
O loop interno da multiplicação matriz-vetor desquantizada de 4 bits reorganiza a matemática de (nibble * escala + viés) * x para fma(nibble, escala*x, viés*x). Pré-calcular escala*x e viés*x permite que a unidade de multiplicação-soma fundida da GPU execute desquantização+multiplicação em uma instrução, resultando em desempenho 12% mais rápido que a formulação ingênua.
Shaders de Computação Metal
Os kernels Metal escritos à mão incluem:
- Multiplicação matriz-vetor desquantizada de 4 e 2 bits (em blocos, redução SIMD, cache de entrada compartilhada, otimizada com FMA)
- Ativação SwiGLU fundida
- Normalização RMS (duas passagens: redução de soma de quadrados + aplicação)
- Atenção GPU em lote (Q@K^T, softmax, scores@V) para camadas de atenção completa
- RoPE na GPU (fundida com desintercalação de Q e normalização de K)
- Combinação MoE + residual + porta sigmoide (kernel fundido)
Computação de Especialista na GPU Adiada
O CMD3 (passagem direta do especialista) é enviado sem espera. A GPU o executa enquanto a CPU prepara a próxima camada. A combinação + residual + normalização também estão na GPU, alimentando diretamente as projeções de atenção da próxima camada.
BLAS Acelerado para Atenção Linear
A recorrência do GatedDeltaNet usa cblas_sscal, cblas_sgemv e cblas_sger para a atualização da matriz de estado 64-head × 128×128, alcançando desempenho 64% mais rápido que o código escalar.
Desempenho do Pipeline
Média por camada em 4 bits: 4,28ms
- CMD3(anterior) → CMD1: projeções de atenção + delta-net [1,22ms GPU]
- CPU: liberar resultados [0,01ms CPU]
- CMD2: o_proj + norm + roteamento + compartilhado [0,55ms GPU]
- CPU: softmax + roteamento topK [0,003ms]
- E/S: pread paralelo K=4 especialistas [2,41ms SSD]
- CMD3: passagem direta do especialista + combinação + norm [0,04ms codificar, ADIADO]
Restrições de Arquitetura
No Apple Silicon, o DMA do SSD e a computação da GPU compartilham o mesmo controlador de memória e não podem ser sobrepostos de forma lucrativa. Os kernels de desquantização da GPU estão saturados de largura de banda em ~418 GiB/s. Mesmo pequenos DMAs de SSD em segundo plano causam picos de latência desproporcionais na GPU por meio da arbitragem do controlador de memória, exigindo um pipeline serial.
📖 Leia a fonte completa: HN AI Agents
👀 See Also

Um Sistema para o Claude Code Aprender Seu Projeto ao Longo do Tempo
Um desenvolvedor criou uma configuração simples para ajudar o Claude Code a manter o contexto entre sessões, adicionando um arquivo CLAUDE.md, uma pasta docs com convenções do projeto e três prompts para inicialização, refinamento e captura de padrões.

git-prism v0.9.0: Forneça Diffs Estruturados a Agentes de Codificação de IA via MCP
git-prism é um servidor MCP que substitui texto bruto de diff git por JSON estruturado para agentes de IA de codificação. v0.9.0 intercepta chamadas git na camada PATH, capturando comandos de subprocesso e gh.

Lançamento do Modelo Qwen 3.5 Chat com 21 Correções de Bugs para Fluxos de Trabalho de Agentes
Um desenvolvedor lançou um modelo de chat corrigido para os modelos Qwen 3.5, abordando 21 bugs, incluindo falhas na chamada de ferramentas, separação de chamadas paralelas e estabilidade do loop do agente. É uma substituição direta testada em llama.cpp, Open WebUI, vLLM e outras plataformas.

Como Construí uma Habilidade para Implantar Agentes OpenClaw em Aplicativos Web - Um Olhar nos Bastidores
Explore uma nova habilidade inovadora desenvolvida para agentes OpenClaw que facilita a implantação em aplicativos web. Conheça seus recursos, vantagens e como ela transforma os processos de produção.