Voltar
#ia-local#apple-silicon#neural-engine#mac#treinamento#benchmark#hardware

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

por Caio Explica
👋

Preparei isso pra você, comunidade!

Espero que esse conteúdo te ajude, Comunidade! Se tiver dúvidas, me chama no X.

Ver tweet original

O 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çãoPeso (MB)GFLOPms/evalTFLOPS
128x conv 512ch sp6464 MB4.290.362 ms11.86
96x conv 512ch sp6448 MB3.220.301 ms10.68
64x conv 512ch sp6432 MB2.150.212 ms10.14

11.86 TFLOPS — 75% do máximo teórico. Hardware monstro.

### INT8 Quantizado (W8A8)

ConfiguraçãoFP16 TOPSINT8 TOPSSpeedup
128x conv 512ch18.533.61.81x
64x conv 512ch18.133.81.87x
128x conv 384ch18.033.31.85x

33.8 TOPS em INT8. Quase 2x o throughput do FP16. Ideal pra modelos quantizados.

### SRAM Probe

CanaisPeso (MB)ms/evalTFLOPS
512ch0.5 MB0.099 ms0.34
1024ch2.0 MB0.101 ms1.33
2048ch8.0 MB0.238 ms2.26
3072ch18.0 MB0.422 ms2.87
5120ch50.0 MB0.965 ms3.48
6144ch72.0 MB1.315 ms3.67
8192ch128 MB3.721 ms1.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?

Compartilhar
🎖️Criado pelo Major • Powered by AI