Intermediário 11 minDesempenho

Extrair o máximo de um Mac Apple Silicon

Resposta direta

Otimizar um LLM em Apple Silicon consiste em aumentar o limite de memória que o macOS disponibiliza para a GPU (sudo sysctl iogpu.wired_limit_mb), escolher um modelo e uma quantização adequados, quantizar o cache KV para contextos longos e selecionar o mecanismo de execução adequado. Nenhum ajuste supera a largura de banda do chip: ela limita a velocidade de geração.

Um Mac não é um PC com uma GPU: sua memória é compartilhada e a parcela que a GPU pode usar é ajustável. Esta página explica o limite de memória da GPU e como alterá-lo, os modelos adequados a cada capacidade de memória, o cache KV, a atenção flash e a escolha do motor de inferência.

Você está escolhendo uma máquina? Nossas escolhas por orçamento →

Por Mohamed Meguedmi·Atualização 2026-09-29·Testado no macOS 14+
Hardware recomendado

Opção de compra para este guia: Mac mini M5 Pro (24 GB / 512 GB).

Por que essa escolha? Nossa ficha completa sobre Mac mini M5 Pro (24 GB / 512 GB) →

Compare todas as opções por orçamento, de 800 a 3 500 € →

Orçamento apertado: RTX 5060 · Modelos grandes: RTX 5090 · Mac Studio.

Em deslocamento: qual notebook para IA local →

Links afiliados — comissão possível sem custo adicional para você. Como Parceiro Amazon, QualLLM obtém lucro com compras que atendem às condições exigidas.

#Otimizar um LLM no Apple Silicon: os quatro eixos

Para tirar o máximo de um Mac Apple Silicon, quatro fatores importam, nessa ordem: o limite de memória que o macOS disponibiliza para o GPU, o tamanho e a quantização do modelo, o cache KV e a atenção flash para contextos longos, e a escolha do motor (Ollama, llama.cpp, MLX ou LM Studio). Tudo parte de um fato: a memória unificada é compartilhada entre CPU e GPU, então a RAM total serve como VRAM, mas o macOS limita a parcela que o GPU pode reservar como memória fixa. Elevar esse limite permite usar modelos maiores; os outros fatores evitam saturar a memória ou desacelerar a geração. Nenhum deles torna a máquina mais rápida do que sua largura de banda permite.

Memória unificada
A CPU e a GPU leem os mesmos dados sem cópia. O MLX resume assim: os arrays ficam em uma memória compartilhada. Um Mac de 64 GB pode, portanto, carregar um modelo que não cabe em nenhuma placa de vídeo de consumo de 24 ou 32 GB.
Eficiência
Um Mac consome muito menos que um PC equipado com uma placa de vídeo de alto desempenho, cuja potência ultrapassa 500 W no caso da RTX 5090 da NVIDIA: o Mac continua silencioso e consome pouca energia em tarefas leves.
Ecossistema
O repositório llama.cpp descreve o Apple silicon como uma plataforma com suporte de primeira classe, otimizada via ARM NEON, Accelerate e Metal. Ollama, LM Studio e MLX também utilizam Metal.
Limites
Sem CUDA, portanto, as bibliotecas que o exigem não funcionam; a largura de banda de um Mac (até 546 GB/s no M4 Max) permanece abaixo da de uma placa gráfica de alto desempenho; o fine-tuning é possível, mas mais lento.

#VRAM de um Mac: o limite de memória da GPU e iogpu.wired_limit_mb

O kit Mac

IA local no seu Mac, a fundo: memória unificada, MLX vs GGUF, o modelo certo para seu chip, Ollama e LM Studio ajustados para Apple Silicon.

  • Espaço online vitalício
  • PDF + arquivos
  • Atualizações vitalícias

Em um Mac, não há VRAM separada: a “VRAM” é uma parte da memória unificada que o macOS permite fixar na memória física para uso pela GPU. Essa parte é menor que a RAM total. As fontes públicas divergem sobre a fração padrão, que varia entre dois terços e três quartos conforme o caso; não presuma esse valor, consulte-o na sua máquina. O MLX expõe o valor adotado pelo sistema por meio de device_info(), no campo max_recommended_working_set_size, e a documentação do MLX indica que é possível aumentar esse limite do sistema com sudo sysctl iogpu.wired_limit_mb seguido do tamanho em megabytes.

O repositório mlx-lm apresenta a regra de prudência: o valor deve superar o tamanho do modelo em megabytes, mas permanecer abaixo da memória da máquina. A Apple não documenta esse ajuste como um parâmetro para o público em geral: trate-o como uma modificação arriscada no sistema.

Ordem de grandeza para escolher o valor (reserva prudente para macOS, ajustável conforme necessidade)
Memória do MacReserva recomendada para o sistemaMemória que se pretende destinar à GPUValor de iogpu.wired_limit_mb
16 GB≈ 5 GB≈ 11 GB11264
24 GB≈ 6 GB≈ 18 GB18432
32 GB≈ 8 GB≈ 24 GB24576
64 GB≈ 8 a 10 GB≈ 54 a 56 GB55296 à 57344
128 GB≈ 16 GB≈ 112 GB114688

A fórmula é simples: valor em MB = memória desejada em GB × 1 024. A reserva é uma escolha de precaução deste guia, não um dado da Apple: depende dos aplicativos que você mantém abertos. Se a máquina ficar lenta, gravar no disco ou ficar instável, reduza o valor.

Para consultar o limite que o macOS realmente adota, basta uma linha de Python, desde que o pacote mlx esteja instalado. A saída contém o campo max_recommended_working_set_size, expresso em bytes: divida por 1.073.741.824 para obter gigabytes. Compare esse valor com o tamanho do seu modelo antes de fazer qualquer ajuste: se o modelo já cabe dentro desse limite, aumentá-lo não traz nenhum benefício.

Terminal
python3 -c "import mlx.core as mx; print(mx.device_info())"
  1. 01
    Ler o valor atual
    No Terminal, o comando sysctl iogpu.wired_limit_mb exibe o valor. Um zero geralmente indica que o macOS aplica seu limite padrão.
  2. 02
    Calcular o novo valor
    Use o tamanho do modelo mais seu cache K/V, adicione margem e deixe ao sistema uma reserva de pelo menos 5 GB. Converta para megabytes.
  3. 03
    Aplicar a configuração
    Execute sudo sysctl iogpu.wired_limit_mb com o valor desejado. O ajuste entra em vigor sem reiniciar, segundo os guias publicados.
  4. 04
    Verificar
    Reinicie o modelo: os logs do Ollama ou do llama.cpp indicam a memória de trabalho recomendada; com MLX, consulte novamente device_info(). Monitore a pressão de memória no Monitor de Atividade.
  5. 05
    Voltar
    Volte a definir o valor como 0 para devolver o controle ao sistema, ou reinicie: a configuração nem sempre é mantida após uma reinicialização; verifique-a com sysctl.
Terminal
# Lire la valeur actuelle (0 = plafond par défaut du système)
sysctl iogpu.wired_limit_mb

# Exemple : 24 Go au GPU sur un Mac de 32 Go (24 x 1024)
sudo sysctl iogpu.wired_limit_mb=24576

# Retour au comportement par défaut
sudo sysctl iogpu.wired_limit_mb=0
!
O que esse ajuste não faz
Esse ajuste não cria memória: permite que a GPU mantenha mais memória fixa na RAM (wired memory). Uma GPU que fixa memória demais deixa muito pouco para o sistema, que passa a usar o disco como memória de troca: o desempenho da geração despenca. O repositório mlx-lm também especifica que a fixação automática da memória de modelos que ocupam muita memória exige macOS 15 ou superior.

#Quais modelos usar de acordo com a memória do Mac

O tamanho de um modelo em Q4 segue os valores de referência do site: 3B, cerca de 2 GB; 7-8B, cerca de 5 GB; 14B, cerca de 9 GB; 32B, cerca de 19 a 20 GB; 70B, cerca de 40 GB. A esse tamanho somam-se o cache KV e a margem para o sistema. A tabela cruza esses valores de referência com a memória do Mac, antes e depois do aumento do limite da GPU.

Classe de modelo realista de acordo com a memória do Mac (Q4_K_M)
MemóriaSem ajustesCom o limite aumentado
16 GB7-9B, contexto médio12B, contexto curto
24 GB12-14B24B em Q4 (≈ 14 GB), contexto médio
32 GB24B32B em Q4 (≈ 19-20 GB), contexto curto
64 GB32B com contexto longo70B em Q4 (≈ 40 GB), contexto médio
128 GB70B com contexto longo70B com contexto muito longo, ou vários modelos carregados

A velocidade máxima é calculada a partir da largura de banda do chip: largura de banda dividida pelo tamanho dos pesos em gigabytes. Ela é indicada na ficha de cada máquina: consultar os guias do MacBook Air, MacBook Pro, Mac mini e Mac Studio, que apresentam os números dos respectivos chips.

Caso prático: em um Mac de 32 GB, um modelo de 32 bilhões de parâmetros em Q4 pesa cerca de 19 a 20 GB. Com um contexto de 8.000 tokens e um cache KV em f16, é preciso contar com alguns gigabytes a mais, totalizando cerca de 23 a 24 GB. Se o limite padrão de memória da GPU for mais baixo, parte do modelo passa para a CPU e a velocidade cai: aumentar o limite para 24 ou 26 GB resolve o problema, desde que reste memória suficiente para o sistema. Se a pressão de memória chegar ao vermelho, escolha um modelo de 24 bilhões.

#Quantização: por que Q4 continua sendo uma boa opção padrão no Mac

Em um Mac, a geração é limitada pela largura de banda da memória: um modelo menor é lido mais rápido. Q4_K_M continua, portanto, sendo a escolha padrão, com o melhor equilíbrio entre tamanho, velocidade e qualidade. Q5_K_M e Q6_K custam alguns pontos percentuais de velocidade em troca de um ganho modesto de qualidade; Q8_0 quase dobra o peso de Q4 e, por isso, reduz aproximadamente à metade o limite de velocidade. Os formatos MLX de 4 bits desempenham o mesmo papel no ecossistema MLX. O guia sobre quantização detalha o equilíbrio entre vantagens e desvantagens, sem que seja necessário repetir os números aqui.

#Metal e Flash Attention

Os motores comuns aproveitam a GPU do Mac via Metal, sem configuração. Com o Ollama, o comando ollama ps indica se o modelo está carregado na GPU. A atenção flash reduz a memória consumida por contextos longos: o Ollama a ativa automaticamente quando o motor e o hardware permitem, e a variável OLLAMA_FLASH_ATTENTION=1 força sua ativação. No llama.cpp, a opção -fa aceita on, off ou auto, com auto como valor padrão; a opção -ngl define o número de camadas colocadas na GPU.

Terminal
# Ollama : forcer l'attention flash
export OLLAMA_FLASH_ATTENTION=1
ollama serve

# llama.cpp : toutes les couches sur le GPU, attention flash active
llama-server -m modele.gguf -ngl all -fa on -c 16384

#Cache KV: a parte da memória que é esquecida

O cache KV armazena, para cada token do contexto, vetores de cada camada. Seu tamanho é duas vezes o número de camadas, vezes o número de cabeças KV, vezes sua dimensão, vezes o contexto, vezes os bytes por valor. Exemplo puramente aritmético, com uma arquitetura típica de 32 camadas, 8 cabeças KV de dimensão 128 e um contexto de 32 000 tokens em f16: 2 × 32 × 8 × 128 × 32 000 × 2 bytes, ou seja, aproximadamente 4,2 GB, além dos pesos. Em q8_0, esse cache cai para aproximadamente a metade; em q4_0, para aproximadamente um quarto, com uma leve perda de precisão.

Ollama quantiza o cache com a variável OLLAMA_KV_CACHE_TYPE (f16 por padrão); o llama.cpp faz isso com a opção -ctk para as chaves e -ctv para os valores. Em um Mac de 32 GB que aloca 24 GB para a GPU, alguns gigabytes economizados no cache fazem a diferença entre um contexto que não cabe e um contexto confortável. Ollama também escolhe o contexto padrão de acordo com a memória: 4.000 tokens abaixo de 24 GiB.

Terminal
# Ollama
export OLLAMA_KV_CACHE_TYPE=q8_0
ollama serve

# llama.cpp
llama-server -m modele.gguf -ngl all -fa on -ctk q8_0 -ctv q8_0 -c 32768

#Ollama, LM Studio, llama.cpp ou MLX

Qual motor para qual necessidade no Mac
MotorPonto forteQuando priorizar
OllamaInstalação simples e API local simplesUso diário, integração com outras ferramentas
LM StudioInterface gráfica, modelos MLX e GGUFExplorar modelos sem terminal
llama.cppOpções de ajuste detalhadas, funcionalidades mais recentesVocê quer ajustar as camadas na GPU, o cache KV e o servidor
MLX / mlx-lmFramework Apple, fine-tuning, memória compartilhadaFormatos Apple, treinamento leve, scripts Python

O repositório mlx-lm apresenta o pacote como uma ferramenta de geração de texto e fine-tuning de modelos em Apple Silicon, com suporte a modelos quantizados. Para comparar as velocidades entre MLX e llama.cpp, o guia dedicado é a referência; esta página se limita aos ajustes comuns.

#Bateria e modo de economia de energia

Em um MacBook, a geração contínua mantém a GPU em uso o tempo todo: a autonomia fica bem abaixo daquela anunciada pela Apple para navegação na web. Esta página não informa uma duração precisa, por falta de fonte; ela depende do modelo e da carga. O modo de economia de energia do macOS reduz o desempenho: reserve-o para deslocamentos em que a autonomia seja mais importante que a velocidade e conecte o computador à tomada em qualquer sessão longa.

#Perguntas frequentes

FAQ
Quanta VRAM tem um Mac com Apple Silicon?+
Não há VRAM separada: o GPU usa a memória unificada. Ele pode reservar uma parte da RAM total, inferior a 100%, como memória não paginável. As fontes divergem sobre a fração padrão, entre dois terços e três quartos; portanto, consulte o valor do sistema com o comando MLX device_info ou os logs do Ollama e aumente esse limite, se necessário, com iogpu.wired_limit_mb.
Como aumentar a memória da GPU de um Mac com sysctl?+
Execute sudo sysctl iogpu.wired_limit_mb seguido do valor em megabytes, por exemplo, 24576 para 24 GB. O valor deve ultrapassar o tamanho do modelo, mas permanecer abaixo da memória total, conforme o repositório mlx-lm. Deixe pelo menos 5 GB para o sistema. Defina novamente o valor como 0 para voltar ao comportamento padrão.
O ajuste iogpu.wired_limit_mb sobrevive ao reinício?+
Não presuma isso: verifique o valor com sysctl após cada reinicialização. Se ele tiver voltado para 0, será necessário reaplicá-lo. A Apple não documenta essa configuração; qualquer método de aplicação automática na inicialização é por sua conta e risco, e um valor muito alto pode tornar a máquina instável.
É melhor usar MLX ou llama.cpp no Mac?+
Depende do uso. MLX é o framework da Apple, adequado aos formatos Apple e ao fine-tuning; llama.cpp oferece ajustes finos e Ollama, que se baseia nele, oferece simplicidade. O guia comparativo do site mede a diferença de velocidade; comece com Ollama e mude apenas se surgir uma necessidade específica.
Um Mac pode substituir uma placa gráfica NVIDIA para LLMs?+
Quanto ao tamanho do modelo, geralmente sim: um Mac de 64 ou 128 GB carrega modelos que não cabem na memória de uma placa de 24 ou 32 GB. Quanto à velocidade, uma placa de alto desempenho tem maior largura de banda, e CUDA dá acesso a mais ferramentas. A escolha depende, portanto, do modelo desejado.
Por que meu modelo é lento mesmo cabendo na memória?+
Várias causas possíveis: um modelo grande demais para o limite da GPU é executado em parte na CPU (verifique com ollama ps), a pressão de memória aciona o swap ou o contexto é muito longo. Reduza o contexto, quantize o cache KV e aumente o limite da GPU antes de mudar de modelo.
Este guia ajudou você?

Um comentário, um erro ou uma observação? Avise-nos; isso ajuda a melhorar o guia para todos.