Desbloqueei o Neural Engine do meu Mac Mini M4 pra Treinar IA
Como acessar 15.8 TFLOPS escondidos no seu Apple Silicon — com benchmarks reais e guia passo a passo
Preparei isso pra você, comunidade!
Espero que esse conteúdo te ajude, Comunidade! Se tiver dúvidas, me chama no X.
Ver tweet originalO que é o Apple Neural Engine?
Todo Mac com chip M1 ou superior tem um processador dedicado chamado Neural Engine (ANE). No M4, ele entrega 15.8 TFLOPS em FP16 — mais poder de compute do que muitas GPUs dedicadas.
Mas a Apple decidiu trancar esse hardware. Oficialmente, o ANE só pode ser usado pra inferência via CoreML. Treinar modelos? Proibido.
Um pesquisador chamado maderix fez engenharia reversa das APIs privadas (_ANEClient e _ANECompiler) e abriu tudo no GitHub. Eu clonei o repositório e rodei os benchmarks no meu Mac Mini M4 16GB.
Meus Resultados Reais — Mac Mini M4 16GB
### Peak Performance (FP16)
| Configuração | Peso (MB) | GFLOP | ms/eval | TFLOPS |
|---|---|---|---|---|
| 128x conv 512ch sp64 | 64 MB | 4.29 | 0.362 ms | 11.86 |
| 96x conv 512ch sp64 | 48 MB | 3.22 | 0.301 ms | 10.68 |
| 64x conv 512ch sp64 | 32 MB | 2.15 | 0.212 ms | 10.14 |
11.86 TFLOPS — 75% do máximo teórico. Hardware monstro.
### INT8 Quantizado (W8A8)
| Configuração | FP16 TOPS | INT8 TOPS | Speedup |
|---|---|---|---|
| 128x conv 512ch | 18.5 | 33.6 | 1.81x |
| 64x conv 512ch | 18.1 | 33.8 | 1.87x |
| 128x conv 384ch | 18.0 | 33.3 | 1.85x |
33.8 TOPS em INT8. Quase 2x o throughput do FP16. Ideal pra modelos quantizados.
### SRAM Probe
| Canais | Peso (MB) | ms/eval | TFLOPS |
|---|---|---|---|
| 512ch | 0.5 MB | 0.099 ms | 0.34 |
| 1024ch | 2.0 MB | 0.101 ms | 1.33 |
| 2048ch | 8.0 MB | 0.238 ms | 2.26 |
| 3072ch | 18.0 MB | 0.422 ms | 2.87 |
| 5120ch | 50.0 MB | 0.965 ms | 3.48 |
| 6144ch | 72.0 MB | 1.315 ms | 3.67 |
| 8192ch | 128 MB | 3.721 ms | 1.15 |
O performance cliff acontece em ~128MB, indicando que o SRAM on-chip do ANE no M4 fica em torno de 32-50MB. Pesos que cabem no SRAM = performance máxima.
O que já conseguem treinar no ANE
O projeto demonstra treinamento completo (forward + backward) de dois modelos:
1. Stories110M (109M parâmetros, 12 layers, dim=768, MHA 12 heads): 91 ms/step — pipeline dinâmico sem recompilação
2. Qwen3-0.6B (596M parâmetros, 28 layers, dim=1024, GQA 16/8): 412 ms/step — com Grouped-Query Attention
Toda computação de forward e backward de ativações roda no ANE. Gradientes de peso (dW) rodam na CPU via cblas. Otimizador Adam, gradient accumulation, e checkpoint/resume funcionam.
Features avançadas:
- •GQA (Grouped-Query Attention) com tiling por head
- •GPU↔ANE zero-copy via IOSurface compartilhada
- •Pipeline híbrido: GPU faz prefill, ANE faz decode
- •INT8 W8A8 pra quase 2x de throughput
- •ANE RMSNorm fusion — RMSNorm direto dentro dos kernels ANE
Como Rodar no Seu Mac (Guia Passo a Passo)
### Requisitos
- •Mac com Apple Silicon (M1, M2, M3, M4 ou variantes)
- •macOS 14+ (Sonoma ou superior)
- •Xcode Command Line Tools instalado
- •~500MB de espaço livre
### Passo 1: Clonar o Repositório
`bash
git clone https://github.com/maderix/ANE.git
cd ANE
`
### Passo 2: Compilar os Benchmarks
`bash
clang -framework Foundation -framework CoreML \
-framework IOSurface -lobjc -o inmem_peak inmem_peak.m
clang -framework Foundation -framework CoreML \
-framework IOSurface -lobjc -o inmem_bench inmem_bench.m
clang -framework Foundation -framework CoreML \
-framework IOSurface -lobjc -o sram_bench sram_bench.m
clang -framework Foundation -framework CoreML \
-framework IOSurface -lobjc -o ane_int8_bench ane_int8_bench.m
`
### Passo 3: Rodar
`bash
./inmem_peak # Mede TFLOPS máximo
./inmem_bench # Benchmark por tamanho de canal
./sram_bench # Descobre o cliff de SRAM
./ane_int8_bench # Compara FP16 vs INT8
`
### Passo 4: Treinar um Modelo (Avançado)
`bash
cd training/training_dynamic
make clean && make
bash ../download_data.sh
python3 ../tokenize.py
./train
`
### Notas Importantes
- •O projeto usa APIs privadas da Apple que podem mudar entre versões do macOS
- •Não é um framework de produção — é pesquisa
- •Utilização real do ANE fica em ~5-9% do pico para treinamento completo
- •Muitas operações element-wise ainda caem pra CPU
- •Funciona, mas não substitui GPU pra modelos grandes (ainda)
Por que isso importa
Centenas de milhões de Macs com Apple Silicon têm um Neural Engine ocioso 99% do tempo. São 15.8 TFLOPS no M4 que a Apple decidiu não expor pra treinamento.
Esse projeto prova que:
1. A limitação é software, não hardware — o silício é capaz, a empresa que não permite
2. Treinamento no ANE funciona — forward + backward completo, 91ms/step pra 109M params
3. INT8 quase dobra o throughput — hardware já suporta quantização eficiente
4. Zero-copy GPU↔ANE é possível — pipeline híbrido sem overhead de cópia
Quando a Apple (ou a comunidade open source) resolver as limitações de software, cada Mac vira uma estação de treinamento de IA. A democratização do treinamento não depende só de GPUs mais baratas — depende de desbloquear o hardware que já existe.
O que você achou deste conteúdo?
Ecossistema
Quer ir mais fundo?
Conheça os produtos do Caio Vicentino

