stamatios
← Voltar ao feed
Chip em forma de maçã com pequeno modelo sendo cuidadosamente carregado nele como cartucho, representando inferência otimizada em Apple Silicon
Hardware & Chips · IA & Modelos

Guia prático de inferência em Apple Silicon

resumo de ~3 min

Tese central

O autor relata que, em 15 de agosto de 2026, a inferência local em Apple Silicon ainda não reunia, em uma única pilha, otimizações que já estariam maduras no ecossistema CUDA/NVIDIA. Entre os recursos citados estão cache de prefixo, decodificação especulativa, cache KV paginado, agrupamento contínuo, escalonamento dinâmico e mecanismos de atenção. Na avaliação dele, a fragmentação entre mlx-lm, vllm-metal, llama.cpp, conversões de modelos e várias bifurcações torna difícil entender por que os resultados práticos ficam abaixo dos números divulgados.

O texto distingue duas etapas da inferência: o prefill, que processa o contexto e preenche o cache KV, e o decode, que gera tokens sucessivamente. Para sessões longas e agentes, o autor considera especialmente importantes o cache de prefixo, que evita reprocessar todo o histórico a cada solicitação, e a decodificação especulativa, que antecipa vários tokens durante a geração. Sem os dois, uma medição curta pode indicar 45 tokens por segundo, enquanto uma sessão prolongada cairia para 9 tokens por segundo, segundo o exemplo apresentado.

O obstáculo dos modelos Qwen

O autor atribui parte da dificuldade aos modelos Qwen mais recentes, como Qwen3.8, que combinariam um cache KV convencional com um estado recorrente baseado em Gated DeltaNet. Diferentemente do cache KV, esse estado é sobrescrito conforme novos tokens são processados; por isso, o cache de prefixo e a recuperação após uma previsão especulativa incorreta exigiriam salvar e restaurar estados intermediários.

Segundo o texto, vllm-metal havia adicionado recentemente cache de prefixo para esses modelos, mas ainda obrigava o usuário a escolher entre esse recurso e a decodificação especulativa. Já o conversor de mlx-lm, na versão principal mencionada, removeria silenciosamente os pesos e cabeças de previsão de múltiplos tokens (MTP) durante a conversão, desativando um recurso integrado aos modelos Qwen. O autor afirma que essa limitação ajuda a explicar a proliferação de modelos convertidos e mecanismos alternativos.

Testes e contrapontos

Após testar vários projetos, o autor considera vllm-metal o stack mais desenvolvido, por já incluir agrupamento contínuo, escalonamento dinâmico, cache KV paginado, atenção flash e cache de prefixo. Ainda assim, diz que a combinação com MTP não estaria resolvida. Ele também relata que llama.cpp apresentou desempenho inferior em seus testes e aqueceu mais o notebook, atingindo repetidamente 100 °C, temperatura em que ocorreria redução térmica.

Os comentários contestam parte dessa conclusão. O criador do MTPLX afirma que seu projeto combina cache de prefixo e MTP em modelos GDN desde a versão 2.0.0, publicada em 6 de julho, e cita sessões com 17.702 de 17.796 tokens históricos armazenados em cache, além de 43 a 49 tokens por segundo em contextos de 20 mil a 30 mil tokens. Ele concorda, porém, que mlx-lm elimina as cabeças MTP e que o prefill em contextos acima de 64 mil tokens continua ruim. O autor original responde que observou forte degradação do MTPLX em sessões de agente, além de problemas de interface, configurações e estabilidade.

Outro teste citado pelo autor registrou 24,24 tokens por segundo com llama.cpp e 37,59 com mlx-vlm e DFlash, mas o segundo não teria cache de prefixo para modelos híbridos GDN e perderia desempenho à medida que o contexto cresce. OMLX também apresentou ganhos em testes próprios, embora o autor tenha pedido medições com contextos maiores.

Proposta

A recomendação é parar de criar novas bifurcações e concentrar o trabalho em um ou dois projetos: preservar as otimizações existentes, integrar o suporte MTP ao mlx-lm, implementar cache correto para o estado recorrente e combinar cache de prefixo com decodificação especulativa. A conclusão do autor permanece comparativa e baseada em seus testes: ele não encontrou, no Apple Silicon, uma pilha de otimização de inferência local capaz de competir com a disponível em CUDA/NVIDIA.