- No iPhone 16 Pro Max, ocorre saída numérica incorreta ao executar MLX LLM, enquanto o mesmo código funciona normalmente no iPhone 15 Pro e no MacBook Pro
- Os valores de tensor diferem em mais de uma ordem de grandeza, e foi confirmado um fenômeno em que o resultado é distorcido mesmo com a mesma entrada
- A causa do problema é apontada como uma possível falha de hardware no Neural Engine ou na pilha de operações de ML baseada em Metal
- Recursos do Apple Intelligence também mostraram instabilidades semelhantes, como falha no download, levantando a possibilidade de relação
- O desenvolvedor enfatiza, com este caso, que problemas físicos de hardware também devem ser considerados durante o debugging
Erro encontrado na execução de MLX LLM
- No iPhone 16 Pro Max, foi gerada saída sem sentido (gibberish) ao executar um LLM baseado em MLX
- O mesmo código funcionava normalmente no iPhone 15 Pro e no MacBook Pro
- O uso de CPU subia para 100%, e como o token “stop” não era gerado, a saída continuava indefinidamente
- Mesmo usando o mesmo modelo e o mesmo prompt, os valores de saída dos tensores ficavam anormalmente altos
- No iPhone 15 Pro:
[53.875, 62.5625, -187.75, ...]
- No iPhone 16 Pro Max:
[191.5, 23.625, 173.75, ..., 1298, -147.25, -162.5]
- Os valores de entrada eram os mesmos, mas os números passavam a ser fortemente distorcidos nas etapas intermediárias de cálculo
Problemas nos recursos do Apple Intelligence
- Tentou-se implementar um recurso de classificação de gastos usando a API do Apple Intelligence, mas o suporte ao modelo não era baixado
- Mesmo alterando as configurações várias vezes, o recurso não era ativado
- Nos fóruns da comunidade Apple, também houve relatos de muitos usuários enfrentando o mesmo problema (12 páginas de discussões)
- Por isso, a abordagem com Apple Intelligence foi abandonada e houve migração para uma abordagem baseada em MLX
Processo de debugging e rastreamento da causa
- Foram definidos breakpoints na implementação do modelo Gemma no MLX para rastrear os valores de tensor em cada camada
- Os valores de entrada eram os mesmos nos dois dispositivos, mas no iPhone 16 Pro Max os números começavam a crescer de forma anormal a partir das etapas intermediárias
- No Mac, também foi confirmado o mesmo resultado correto observado no iPhone 15 Pro
- Com isso, surgiu a convicção de que se tratava de um problema de hardware, e não de código ou do modelo
Possível falha de hardware
- Pode haver erro de cálculo no Neural Engine do chip A18 do iPhone 16 Pro Max ou no caminho de operações de ML baseado em Metal
- Como o MLX compila operações de tensor via Metal, uma falha nessa pilha pode ter causado a distorção dos resultados
- Também é mencionado que pode ser a mesma causa dos problemas do Apple Intelligence, embora não haja evidência clara
Conclusão e lições
- O iPhone 16 Pro Max com problema foi identificado como uma unidade com defeito de hardware
- Depois, ele foi substituído por um iPhone 17 Pro Max, e todos os recursos passaram a funcionar normalmente
- Com essa experiência, o desenvolvedor enfatiza que ao fazer debugging, é preciso considerar não apenas o software, mas também problemas físicos de hardware
- Três lições:
- Erros na execução de LLM nem sempre são problemas de código
- A importância de testes comparativos no mesmo ambiente
- Mesmo hardware caro pode não garantir a precisão dos cálculos de ML
1 comentários
Comentários do Hacker News
É tão engraçado quanto perguntar algo como “o que dá lua mais sol?”
Mas o fenômeno em si desta vez é diferente. A API de operações numéricas da Apple está produzindo resultados inconsistentes em alguns aparelhos. Isso é um problema ao qual a Apple deveria dar atenção
Porque sol(日) e lua(月) juntos formam 明 (link da wiki)
Também daria para responder “lua cheia”, mas não parece haver uma resposta determinística e clara
Claro, fazendo backup antes, e se possível usando um plano iCloud+. Para esse tipo de problema, essa é a solução mais simples
Ou seja, aquele iPhone 16 Pro Max aparentemente tinha um defeito de hardware
Isso já foi mencionado, por exemplo, na documentação da Intel
Mesmo assim, é surpreendente que o LLM não funcione de jeito nenhum no iPhone 16. LLMs normalmente são bem tolerantes à quantização
No começo eu quase descartei o problema por causa disso,
mas o estranho é que todos os outros dispositivos da Apple deram o mesmo resultado, e só o LLM da própria Apple falhou neste aparelho
Isso parece mais uma falha inesperada do que um problema fundamental. Não é bom que a Apple tenha enviado um aparelho nesse estado
Hoje em dia, quando faço matemática no celular, uso um emulador do HP Prime
Outras calculadoras favoritas são o free42 e o plus42 (link)
Como ferramenta de CAS, o MathStudio é o melhor (mathstud.io)
Também roda no navegador, mas tem app mobile. É como um Wolfram Alpha auto-hospedado
Continua intuitivo e rápido
Deixei para abrir direto pelo botão da Central de Controle
Minha reclamação é que, mesmo com uma tela desse tamanho, não dá para rolar e ver o histórico de cálculos anteriores
Já deu dessa UI que parece uma réplica de calculadora de quatro funções dos anos 1990
O MLX também pode rodar em CPU, GPU da Apple (Metal) e GPU da NVIDIA (CUDA) (link)
Já mudei configurações em todas as combinações possíveis, mas o texto preditivo para aleatoriamente ou funciona errado
Ou talvez seja uma otimização para empurrar as pessoas para a digitação por voz
Pelo menos ele não respondeu “7”, então já é alguma coisa
Teria sido interessante testar alguns apps da App Store para ver o que aparecia