Fiz um app que executa o LLM Mistral 7B 0.2 localmente no iPhone Pro

Executar modelos de linguagem grandes como o Mistral 7B diretamente em dispositivos iPhone Pro já é viável, mas ainda limitado por RAM, escolhas de quantização e limites térmicos. Os comentaristas comparam vários apps iOS e de desktop para inferência local, avaliando fatores como variedade de modelos, velocidade (tokens por segundo), histórico de conversas e os trade-offs entre privacidade no dispositivo e a qualidade superior de modelos em nuvem como o GPT-4. Eles também examinam o hardware e a pilha de software da Apple (Metal vs. Neural Engine), políticas da App Store, justiça de preço e a probabilidade de que futuros apps sejam lançados com modelos especializados e embutidos para uso offline.

Recursos do app e UX

  • O app executa o Mistral 7B quantizado (e outros modelos pequenos) totalmente offline em iPhone Pros recentes e em alguns iPads/Macs.
  • O histórico de conversas é uma grande preocupação de UX: algumas ferramentas não o possuem, enquanto este app e outras suportam salvar, pesquisar, retomar e exportar chats.
  • Os usuários querem visibilidade sobre o desempenho (tokens/seg, uso de RAM) e controles mais refinados (escolha do modelo, temperatura, prompts do sistema, temas, hápticos).

Desempenho, modelos e restrições do dispositivo

  • Modelos 7B em telefones estão no limite: vários relatos mostram 7B com quantização de alta qualidade extremamente lento (segundos por token) ou inviável, exceto em iPads de 16GB/Macs Apple Silicon.
  • Modelos menores e com menos bits (por exemplo, 1–3B, quantização Q2–Q4) geralmente rodam de forma aceitável; 7B frequentemente requer comprimento de contexto reduzido.
  • Alguns observam que GPUs de datacenter podem entregar >100 tokens/seg para modelos 7B quantizados em tamanho de lote 1, muito além dos telefones.

Estabilidade e travamentos

  • Vários usuários relatam travamentos totais do dispositivo, congelamentos do app e crashes (às vezes exigindo reinicialização forçada) ao carregar modelos grandes ou agressivamente quantizados com Metal.
  • Respostas do desenvolvedor descrevem novas versões com:
    • Verificações mais seguras de margem de RAM.
    • Alternância da GPU (Metal) para CPU quando a memória está apertada.
    • Alteração dos modelos padrão para quantizações mais leves para reduzir crashes.

Prompts do sistema e personalização

  • Vários reclamam que muitos apps iOS de LLM não permitem definir prompts do sistema, chamando-os de “inúteis” sem isso.
  • Alguns apps alternativos suportam explicitamente prompts do sistema editáveis e presets personalizados de modelos.
  • Há debate sobre como o template de chat do Mistral representa prompts do sistema em comparação com mensagens normais.

LLMs no dispositivo vs. no servidor

  • Consenso: modelos locais são mais lentos e mais fracos do que os melhores modelos hospedados (por exemplo, GPT-4), mas são atraentes para privacidade, uso offline, experimentação e fluxos de trabalho de nicho (RAG sobre dados pessoais, chamada de funções).
  • Discussão sobre throughput versus latência: batching melhora o throughput no servidor, mas prejudica apenas modestamente a velocidade por usuário se bem ajustado.

Hardware da Apple, ANE e ferramentas

  • A maioria dos apps iOS de LLM usa CPU/GPU via Metal, não o Neural Engine, devido a:
    • Falta de APIs diretas para ANE (apenas CoreML).
    • Limitações atuais do CoreML para LLMs (formas fixas, suporte fraco a quantização, grandes footprints de memória).
  • Alguns esperam que futuras ferramentas da Apple (CoreML, MLX) tornem práticos os LLMs baseados em ANE.

Preço, reutilização e problemas na App Store

  • As reclamações sobre preço se concentram em pagar por um app que não funciona em muitos dispositivos; outros respondem que os requisitos estão claramente declarados e existem reembolsos.
  • Um comentarista alega que o app é, em grande parte, uma versão com nova aparência de um app gratuito existente.
  • A Apple, segundo relatos, não impõe “segurança” de conteúdo de LLM além das classificações etárias; saídas ofensivas, por si só, não são um bloqueio.