llama.cpp: o que é e é preciso deixar de usar o Ollama? ?
llama.cpp é o motor de inferência em C/C++ que executa modelos no formato GGUF em CPU e em GPU NVIDIA, AMD, Intel e Apple Silicon; Ollama, LM Studio e KoboldCpp dependem dele. Usá-lo diretamente, via llama-server, não torna um modelo mais rápido no mesmo hardware: isso dá controle sobre configurações que as camadas superiores escolhem por você, como a divisão GPU/CPU, o tamanho do contexto e a quantização do cache KV.
O llama.cpp é o motor de inferência escrito em C e C++ que executa modelos no formato GGUF em CPUs, em GPUs NVIDIA, AMD e Intel e em Macs. Em 20 de setembro de 2026, a maioria dos aplicativos de LLM local se baseia nele ou em sua biblioteca ggml: Ollama, LM Studio, KoboldCpp, Jan. Usá-lo diretamente não torna seu modelo mais rápido. Isso dá a você controle sobre ajustes que as camadas superiores decidem por você.
#llama.cpp em resumo
O projeto foi lançado em março de 2023 por Georgi Gerganov, com um objetivo simples: rodar o modelo LLaMA da Meta em um MacBook, sem Python nem dependências pesadas. Ele é publicado sob licença MIT. Três anos depois, o repositório (agora sob a organização ggml-org) oferece suporte a centenas de arquiteturas, e o formato de arquivo definido pelo projeto em agosto de 2023, o GGUF, tornou-se o padrão de fato para distribuir um modelo quantizado.
Duas escolhas técnicas explicam esse sucesso. A primeira é a quantização: o llama.cpp sabe executar pesos comprimidos de 2 a 8 bits, o que permite que um modelo de 8 bilhões de parâmetros caiba em 5 GB em vez de 16. A segunda é a divisão entre processador e placa gráfica: quando um modelo não cabe inteiro na VRAM, parte das camadas permanece na RAM e o restante vai para o GPU. Isso é mais lento que um carregamento completo, mas funciona, e poucos motores oferecem essa possibilidade.
#O que está dentro da caixa
Seu ChatGPT privado e gratuito na sua máquina em 1 hora — LM Studio, Ollama, Open WebUI, seus documentos, sem nuvem.
- Espaço online vitalício
- PDF + arquivos
- Atualizações vitalícias
- llama-cli
- O chat na linha de comando. Útil para testar um modelo ou um ajuste em poucos segundos.
- llama-server
- Um servidor HTTP com API compatível com OpenAI e interface web integrada, na porta 8080. É o componente que a maioria dos usuários avançados mantém em execução continuamente.
- llama-bench
- O utilitário de medição. Ele fornece separadamente a velocidade de leitura do prompt e a velocidade de geração, permitindo comparar dois ajustes sem se iludir.
- llama-quantize
- Converte um GGUF em precisão completa para uma quantização mais leve (Q4_K_M, Q5_K_M, Q8_0).
- llama-server: montar uma API OpenAI local, passo a passo
- GGUF e safetensors: entender os formatos dos modelos
- Documentação oficial do formato GGUF — Hugging Face
#O que as camadas extras adicionam e escondem
Ollama, LM Studio e KoboldCpp oferecem o que o llama.cpp não faz: um catálogo de modelos, download com um único comando, interface, carregamento e descarregamento automáticos. Em troca, eles definem valores padrão. A tabela abaixo não compara desempenhos, apenas indica quem decide sobre o que.
| Ajuste | llama.cpp puro | Ollama | LM Studio | KoboldCpp |
|---|---|---|---|---|
| Tamanho do contexto | Opção -c, livre | Valor padrão prudente, modificável por variável ou Modelfile | Controle deslizante por modelo | Opção na inicialização |
| Escolha da quantização | Qualquer arquivo GGUF | Tag do catálogo, Q4 padrão | Lista disponível para download | Qualquer arquivo GGUF |
| Camadas enviadas para o GPU | Opção -ngl, camada por camada | Automático | Controle deslizante | Opção na inicialização |
| Quantização do cache KV | Opções -ctk e -ctv | Variável de ambiente global | Configuração avançada | Opção na inicialização |
| API | llama-server, compatível com OpenAI | API limpa + compatibilidade com OpenAI | Servidor compatível com OpenAI | API limpa + compatibilidade com OpenAI |
| Atualizações do motor | No mesmo dia, com cada commit | Com deslocamento | Com deslocamento | Com deslocamento |
A última linha conta mais do que parece. Quando uma nova arquitetura de modelo é lançada, ela é primeiro suportada pelo llama.cpp, depois pelas camadas superiores alguns dias ou semanas depois. Se você quer testar um modelo na semana de seu lançamento, muitas vezes é o único caminho.
#Os quatro ajustes que mudam tudo
- -ngl (n-gpu-layers)
- O número de camadas do modelo colocadas na VRAM. O valor 99 significa “tudo o que couber”. Se o modelo exceder a capacidade da sua VRAM, reduza esse número até que o carregamento seja concluído com sucesso: cada camada deixada na CPU torna a geração mais lenta, mas um modelo que roda a 8 tokens por segundo é melhor do que um modelo que não inicia.
- -c (ctx-size)
- A janela de contexto alocada. O cache KV aumenta com ela: em um modelo de 8B, passar de 8.000 para 32.000 tokens custa vários GB de VRAM. Aloque o que você precisa, não o máximo anunciado pelo modelo.
- -fa (flash-attn)
- Ativa o Flash Attention, que reduz o uso de memória e acelera a leitura de prompts longos. É também um pré-requisito para quantizar o cache KV.
- --n-cpu-moe
- Para modelos MoE, mantém os especialistas de um determinado número de camadas na RAM e deixa o restante na GPU. É isso que permite rodar um MoE com 30 ou 120 bilhões de parâmetros em uma placa de 16 GB a uma velocidade utilizável.
- Flash Attention: ative no llama.cpp, Ollama e vLLM
- Quantizar o cache KV para economizar VRAM
- Distribuir um modelo em vários GPUs com tensor-split
- Documentação oficial do llama-server (lista completa das opções)
#O que mudou: --fit ajusta -ngl por você
Por muito tempo, ajustar -ngl manualmente foi o primeiro reflexo de qualquer guia do llama.cpp: definir 99 para enviar tudo para a GPU e depois reduzir o valor por tentativa e erro se o carregamento falhasse. Essa etapa já não é obrigatória. O projeto adicionou uma opção --fit, ativada por padrão, que ajusta automaticamente os parâmetros não especificados (incluindo -ngl) para que o modelo caiba na memória disponível. Em uma placa modesta, isso evita a alternância habitual entre uma tentativa de execução que falha e uma redução manual de -ngl.
#Qual backend para a sua placa
llama.cpp é compilado ou baixado para um backend de cálculo específico. A escolha correta depende exclusivamente do seu hardware. A tabela lista as famílias de nossa base de 90 configurações.
| Seu hardware | Backend recomendado | Observação |
|---|---|---|
| NVIDIA GTX 10 a RTX 50, para desktops e notebooks | CUDA | O caminho mais rápido e melhor testado. |
| AMD Radeon RX 7000 e RX 9000 | ROCm (HIP) ou Vulkan | ROCm é mais rápido quando funciona. Vulkan pode ser instalado sem dificuldades, inclusive no Windows. |
| AMD Radeon RX 6000 e modelos anteriores | Vulkan | Suporte parcial ou inexistente ao ROCm conforme a placa. |
| Apple M1 a M5 | Metal | Ativado por padrão nos binários macOS. Toda a memória unificada é utilizável. |
| GPU integrada Intel ou AMD, Intel Arc | Vulkan ou SYCL | Ganho real nos modelos pequenos em comparação com o uso apenas da CPU. |
| Sem GPU | CPU (AVX2, AVX-512, NEON) | Funciona em qualquer lugar. Busque modelos com no máximo 8 bilhões de parâmetros. |
- Compilar llama.cpp com CUDA
- Compilar o llama.cpp com Metal no Mac
- llama.cpp com Vulkan, o backend universal
#Nossas medições com llama.cpp
llama.cpp é o motor de referência da nossa bancada de testes, precisamente porque funciona da mesma forma em todas as plataformas. Aqui estão as velocidades de geração registradas com Llama 3.1 8B em Q4, contexto de 2 048 tokens, uma única requisição e Flash Attention ativada.
| Máquina | Memória | Llama 3.1 8B Q4 |
|---|---|---|
| RTX 5090 | 32 GB | 172 tok/s |
| RTX 4090 | 24 GB | 128 tok/s |
| RTX 4070 | 12 GB | 76 tok/s |
| Mac M3 Max | 64 GB unificados | 64 tok/s |
| RTX 3060 | 12 GB | 44 tok/s |
| Ryzen 7 7700, apenas CPU | RAM do sistema | 7,8 tok/s |
Duas conclusões. Primeiro, a diferença entre uma RTX 3060 e o uso apenas do processador é de um fator de cinco a seis: mesmo uma placa de entrada muda a experiência. Segundo, esses números seriam praticamente os mesmos no Ollama ou no LM Studio nas mesmas máquinas, já que o motor de cálculo é o mesmo.
#Continuar usando o Ollama ou passar para o llama.cpp
| Continue usando Ollama ou LM Studio se… | Mude para llama.cpp se… |
|---|---|
| Você quer conversar com um modelo sem ler documentação. | Seu modelo ultrapassa a VRAM e você quer ajustar cuidadosamente a distribuição entre GPU e CPU. |
| Você muda frequentemente de modelo e aprecia o catálogo integrado. | Você quer testar uma arquitetura lançada esta semana. |
| Suas ferramentas (Open WebUI, extensões de editor) esperam a API do Ollama. | Você está montando um servidor para uso a longo prazo e quer dominar cada opção, do contexto até o cache KV. |
#Iniciar em dez minutos
Nada precisa ser compilado para testar. Binários pré-compilados são publicados para Windows, macOS e Linux a cada versão, e os gerenciadores de pacotes fazem o resto. O comando abaixo baixa um modelo pequeno do Hugging Face e abre a interface web no http://localhost:8080.
Para um modelo mais ambicioso do catálogo, baixe o arquivo GGUF de sua escolha e indique esse arquivo com a opção -m. A compilação a partir do código-fonte só se torna útil para ativar um backend específico ou acompanhar o desenvolvimento dia a dia.
#Erros mais comuns de carregamento
A maioria dos problemas com llama.cpp se resume a três causas: o uso de memória excede a capacidade disponível, um arquivo GGUF é incompatível com o build instalado ou uma opção está escrita incorretamente. A mensagem de erro exibida na linha de comando quase sempre indica qual das três é a causa, desde que você a leia até o final em vez de fechá-la e executar novamente.
| Mensagem ou sintoma | Causa provável | Para experimentar |
|---|---|---|
| cudaMalloc failed: out of memory | O modelo, com o contexto solicitado, ultrapassa a VRAM disponível | Reduzir -c, deixar --fit ajustar -ngl, ou escolher uma quantificação mais leve |
| unknown model architecture | O arquivo GGUF utiliza uma arquitetura mais recente do que o binário instalado | Atualizar para a última versão publicada; as novas arquiteturas chegam primeiro no llama.cpp |
| Geração muito lenta apesar de ter um GPU recente | Nem todas as camadas são transferidas para a GPU, muitas vezes por falta de VRAM livre | Verificar a saída de carregamento (linha « offloaded »), fechar outras aplicações que ocupam a placa |
| error: invalid argument | Uma opção renomeada ou escrita incorretamente no comando | Comparar com llama-server --help, que lista os aliases curtos e longos atualizados |
Vale a pena ler uma vez, por inteiro, a linha de carregamento exibida ao iniciar o servidor: ela indica o número de camadas realmente enviadas à GPU, o tamanho efetivo do contexto e o tipo de cache KV utilizado. Muitas vezes, isso é mais rápido do que adicionar opções ao acaso até funcionar. Fique também de olho na versão instalada: o llama.cpp publica versões noturnas com muita frequência, e às vezes uma correção para sua placa ou seu modelo já foi lançada, mas ainda não chegou ao pacote do Homebrew ou do winget que você instalou na semana anterior.
#FAQ
O llama.cpp é mais rápido que o Ollama?+
É necessário saber compilar para usar llama.cpp?+
É possível usar o llama.cpp sem placa de vídeo?+
Qual a diferença entre llama.cpp e vLLM?+
E no Mac, llama.cpp ou MLX?+
Um comentário, um erro ou uma observação? Avise-nos; isso ajuda a melhorar o guia para todos.