Ollama vs LM Studio vs llama.cpp vs MLX-LM no macOS
Tradução automática
Este artigo foi traduzido automaticamente a partir da versão original em inglês.
Use o Ollama para um serviço local de modelos ou o LM Studio para selecionar modelos e trabalhar numa interface de ambiente de trabalho. Use llama.cpp para controlar diretamente o runtime. Use MLX-LM para geração em Python ou fine-tuning em Apple Silicon. Tanto o Ollama como o LM Studio disponibilizam APIs e funcionamento sem interface gráfica. Escolha consoante a forma como carrega os modelos, os chama e analisa o seu desempenho.
Para uma aplicação que precisa de um endpoint local, teste primeiro o Ollama ou o LM Studio. Passe para llama.cpp ou MLX-LM quando o serviço existente não disponibilizar os controlos necessários para a sua tarefa.
Registe o modelo, o runtime, as definições de geração e a configuração de rede para poder repetir a configuração.
Tabela de recomendações
| Ferramenta | Função principal | Use quando | Principal compromisso |
|---|---|---|---|
| Ollama | Serviço local gerido e ciclo de vida dos modelos | Pretende rapidamente um endpoint pequeno e programável | Menos controlo de baixo nível do que llama.cpp. |
| LM Studio | Descoberta de modelos, SDKs, daemon e fluxos de trabalho de servidor local | Pretende um único ambiente de desenvolvimento com e sem interface gráfica | A sua abstração continua a ocultar alguns detalhes do runtime. |
| llama.cpp | Inferência GGUF, quantização, opções do servidor e controlo de Metal | Precisa de controlar o contexto, o lote, a quantização e o comportamento do runtime | Mais configuração e mais opções. |
| MLX-LM | Geração e fine-tuning nativos de Apple Silicon | Pretende fazer experiências ao nível de Python em Macs com processadores M | Ecossistema de serving mais pequeno do que o do Ollama ou do llama.cpp. |
Qual deve instalar primeiro?
Comece pelo Ollama se quiser gerir um modelo através de um serviço local que a sua aplicação possa chamar. Teste a API com os prompts e os formatos de resposta de que a sua aplicação necessita.
Instale primeiro o LM Studio se quiser selecionar e comparar modelos numa aplicação de ambiente de trabalho. As suas ferramentas de desenvolvimento incluem SDKs de Python e TypeScript, APIs locais, structured output e um daemon sem interface gráfica. Verifique o suporte de tool use no modelo escolhido.
Instale primeiro o llama.cpp se precisar de definir diretamente o comprimento do contexto, o tamanho do lote, a quantização ou as opções de Metal. A sua CLI e o seu servidor disponibilizam esses controlos sem um serviço separado de gestão de modelos.
Use MLX-LM quando estiver a fazer mais do que servir um modelo de chat. É adequado para experiências com modelos nativos de Apple Silicon, conversão, fine-tuning e fluxos de trabalho em Python nos quais a memória unificada faz parte do design.
Matriz de fluxos de trabalho
| Fluxo de trabalho | Predefinição | Motivo |
|---|---|---|
| API local para uma aplicação | Ollama | Boa ergonomia para programadores e suporte abrangente para integrações. |
| Comparação manual de modelos | LM Studio | A GUI torna mais rápida a comparação de prompts e modelos. |
| Depuração de desempenho | llama.cpp | Pode observar e controlar os parâmetros do runtime. |
| Serving de modelos GGUF quantizados | llama.cpp ou Ollama | Use llama.cpp para controlo e Ollama para conveniência. |
| Experiências com modelos em Apple Silicon | MLX-LM | Ferramentas de modelos nativas para Macs com processadores M. |
| Demonstração a intervenientes não técnicos | LM Studio | É fácil apresentar e ajustar interativamente. |
| Configuração de engenharia repetível | CLI/API de qualquer uma das ferramentas, com modelos fixados | Registe o modelo, o runtime e as definições de geração para que um script possa repetir a execução. |
Notas sobre o hardware
A memória unificada disponível limita o modelo, o contexto e o número de pedidos que um Mac com Apple Silicon pode executar. Um modelo que cabe num MacBook Pro com 64 GB pode ser inutilizável num MacBook Air com 8 GB. A quantização reduz a memória dos pesos, enquanto prompts mais longos aumentam a memória da cache de atenção. Faça benchmarks com o comprimento real dos prompts e pedidos simultâneos.
Teste um modelo mais pequeno que caiba na memória sem recurso excessivo à memória de troca antes de testar um modelo maior que esgote a memória. Para programação, verifique a gestão do contexto e a integração com ferramentas em tarefas reais. Para perguntas sobre documentos, teste se a recuperação fornece as evidências necessárias antes de mudar de modelo.
Mantenha a inferência local
Escolha explicitamente um modelo local e um backend. Uma API em localhost pode, ainda assim, encaminhar um pedido para um modelo na nuvem ou para uma integração externa. A FAQ do Ollama documenta o modo apenas local (OLLAMA_NO_CLOUD=1) e a sua ligação loopback predefinida. Mantenha o servidor acessível apenas a partir da sua máquina, salvo se proteger deliberadamente o acesso para outros clientes.
O LM Studio pode executar offline modelos transferidos; a descoberta e a transferência de modelos requerem acesso à rede. Verifique as funcionalidades na nuvem, os plugins, a telemetria e a aplicação que faz a chamada, além do servidor de modelos. Transferir um modelo e enviar um prompt privado são operações de rede diferentes.
O que não deve fazer
Comece pelo Ollama ou pelo LM Studio e teste se a inferência local satisfaz a tarefa. Use llama.cpp ou MLX-LM quando precisar de controlos que o serviço não disponibiliza. Execute benchmarks mais abrangentes quando o desempenho afetar os requisitos do produto.
Não compare modelos apenas numa interface de chat se a carga de trabalho real for extração estruturada, edição de código ou síntese de respostas com RAG. Escreva um pequeno script de avaliação com prompts representativos.
Leitura adicional
- LLMs locais no macOS aborda a configuração prática.
- Variantes de LLMs de pesos abertos explica GGUF, GPTQ, AWQ, modelos base e modelos instruct.
- Configuração de um MacBook para engenharia de AI aborda a configuração mais abrangente da estação de trabalho.