Avançado 14 minllama.cpp

llama-server: API OpenAI local com llama.cpp

Resposta direta

llama-server é o servidor HTTP integrado ao llama.cpp. Com um único comando (llama-server -m modele.gguf -ngl 99), ele carrega um GGUF e expõe uma API compatível com OpenAI em http://localhost:8080, com uma interface web incluída. Diferentemente do Ollama, ele oferece controle direto sobre o offloading para a GPU (--n-gpu-layers), o contexto e o batching, sem daemon nem camada de abstração.

Ollama é prático, mas esconde tudo de você: para onde vão suas camadas, como se ajusta o contexto, o que realmente roda na GPU. O llama-server, o servidor HTTP incluído no llama.cpp, faz o contrário. Um único comando disponibiliza qualquer arquivo GGUF por meio de uma API compatível com a API da OpenAI, com uma interface web e controle total sobre o offloading. Este guia mostra como iniciá-lo, conectar suas aplicações a ele e em quais situações ele substitui Ollama com vantagens.

Por Mohamed Meguedmi·Atualização 2026-08-27·Testado no Windows, macOS e Linux

#Por que usar llama-server?

Ollama, LM Studio e Jan usam todos o mesmo motor nos bastidores: llama.cpp. Esse motor inclui seu próprio servidor HTTP, llama-server, que não precisa de nenhuma dessas camadas. Você indica um arquivo GGUF e obtém uma API e uma interface web. Nada além disso.

O benefício não é meramente estético. Enquanto o Ollama decide por você o número de camadas enviadas à GPU, o tamanho do contexto e como dividir o modelo, o llama-server expõe cada parâmetro na linha de comando. Você vê e ajusta o que acontece. É o modo “manual” da IA local — mais verboso, mas sem caixa-preta.

i
Em resumo
llama-server = o binário HTTP do llama.cpp. Um processo, um modelo GGUF, uma API compatível com a OpenAI na porta 8080, interface web incluída. Sem daemon em segundo plano, sem biblioteca de modelos gerenciada para você.
API compatível com OpenAI
Pontos de acesso /v1/chat/completions, /v1/completions, /v1/models, /v1/embeddings. Qualquer cliente OpenAI pode se conectar sem alterações.
Controle do offloading
--n-gpu-layers define exatamente quantas camadas são carregadas na VRAM. É indispensável quando o modelo excede a capacidade de memória da sua placa.
Interface web integrada
Um chat servido diretamente na raiz do servidor, sem precisar instalar Open WebUI nem Docker.
Sem dependência pesada
Um único binário (algumas dezenas de MB). Nem Python, nem contêiner, nem serviço de sistema são obrigatórios.
Batching e paralelismo
Batching contínuo ativado por padrão, várias requisições simultâneas por meio de slots.

#Pré-requisitos

O kit IA Local

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
Um arquivo GGUF
Formato do llama.cpp. Disponível no Hugging Face, ou baixado diretamente pelo llama-server via -hf (ver abaixo).
VRAM ou RAM
Em Q4_K_M, considere aproximadamente 2 GB para um 3B, 5 GB para um 7B, 9 GB para um 14B, 19 GB para um 32B e 40 GB para um 70B.
Um GPU (fortemente recomendado)
RTX 3060 de 12 GB para começar, RTX 4070/4080 na faixa intermediária, RTX 4090 de 24 GB ou Mac M4 Pro para modelos grandes. Usar apenas a CPU também funciona, mas lentamente.
Um terminal
O llama-server é controlado pela linha de comando. Nada impossível de superar, mas não é um aplicativo que você abre com um clique duplo, como o LM Studio.
→
Você está partindo do Ollama?
Os modelos baixados por Ollama já são GGUF, armazenados em sua pasta blobs com um nome hash. Mais simples: baixe o GGUF desejado do Hugging Face ou deixe o llama-server buscá-lo com -hf.

#1. Obter llama-server

Três opções, da mais rápida à que oferece melhor desempenho. No macOS, o Homebrew instala o binário com apenas um comando:

macOS — Homebrew
brew install llama.cpp

# le binaire s'appelle llama-server
llama-server --version

No Windows e no Linux, a forma mais simples é baixar um binário pré-compilado das releases oficiais do llama.cpp no GitHub (escolha a variante correspondente ao seu hardware: CUDA para NVIDIA, Vulkan para uma GPU genérica ou CPU).

Lançamentos oficiais
https://github.com/ggml-org/llama.cpp/releases

Para obter o máximo de tokens por segundo, compile a partir do código-fonte com o backend do seu GPU. Exemplo para NVIDIA com CUDA:

Compilar com CUDA
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release -j

# le binaire se trouve dans build/bin/
./build/bin/llama-server --version
i
O binário mudou de nome
Historicamente, esse servidor era o exemplo « server » do llama.cpp. Desde a reorganização das ferramentas, passou a se chamar llama-server. Se um tutorial antigo falar de ./server, é o mesmo programa.

#2. Executar com um GGUF usando um único comando

O comando mínimo aponta para um modelo e inicia o servidor. Aqui, um Qwen 3.5 9B em Q4_K_M (a opção de referência para 8 GB em 2026, com contexto de 256k) com todas as camadas enviadas para a GPU:

Terminal
llama-server -m ./qwen3.5-9b-instruct-q4_k_m.gguf -ngl 99 -c 8192
-m
Caminho para o arquivo GGUF a ser servido.
-ngl 99
Número de camadas transferidas para a GPU. 99 = « todas » (o modelo tem menos camadas; o excedente é ignorado sem erro).
-c 8192
Tamanho do contexto em tokens. Por padrão, geralmente é 4096; ajuste conforme suas necessidades e sua VRAM.

Você não tem o arquivo na mão? O llama-server pode baixá-lo diretamente do Hugging Face e armazená-lo no cache, como um ollama pull mais integrado:

Baixar do Hugging Face
llama-server -hf bartowski/Qwen3.5-9B-Instruct-GGUF:Q4_K_M -ngl 99 -c 8192

Uma vez iniciado, o servidor escuta por padrão em http://127.0.0.1:8080. Verifique se ele está ativo:

Teste de funcionamento
curl http://localhost:8080/health
# {"status":"ok"}
!
Expor na rede = risco
Por padrão, o llama-server escuta apenas em localhost. Para torná-lo acessível a partir de outras máquinas, adicione --host 0.0.0.0 — mas, nesse caso, a API fica aberta a qualquer pessoa na rede. Proteja-a com --api-key e, idealmente, um proxy reverso com HTTPS.

#3. A API compatível com a OpenAI: conectar qualquer aplicativo

Esse é o grande trunfo do llama-server. Ele usa o protocolo da OpenAI, então qualquer ferramenta projetada para a API da OpenAI funciona bastando mudar a URL base. Uma chamada direta de chat com curl:

Chamada a /v1/chat/completions
curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "local",
    "messages": [
      {"role": "system", "content": "Tu réponds en français, de façon concise."},
      {"role": "user", "content": "Explique le format GGUF en une phrase."}
    ],
    "temperature": 0.7
  }'

O campo model é livre: o llama-server serve apenas um modelo por vez e, em grande parte, ignora esse valor. No SDK Python da OpenAI, basta redirecionar base_url para o seu servidor. A chave de API pode ser qualquer string se você não tiver definido --api-key:

Cliente Python da OpenAI
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8080/v1",
    api_key="sk-no-key-required",
)

resp = client.chat.completions.create(
    model="local",
    messages=[
        {"role": "user", "content": "Donne-moi trois idées de noms pour un projet open source."}
    ],
)
print(resp.choices[0].message.content)
/v1/chat/completions
Modo de conversa, com aplicação automática do template de chat do modelo.
/v1/completions
Complementação bruta de texto, sem formatação de papéis.
/v1/models
Lista o modelo carregado — útil para clientes que primeiro consultam os modelos disponíveis.
/v1/embeddings
Gera embeddings se o servidor for iniciado com --embedding (útil para um RAG feito por você).
→
O template de chat é importante
Para que o modelo formate corretamente a conversa, adicione --jinja ao iniciar o servidor: o llama-server aplica então o template de chat embutido no GGUF. Sem esse parâmetro, alguns modelos recentes respondem de forma incorreta.

#4. n-gpu-layers: o controle preciso de offloading que o Ollama oculta

Um modelo é uma pilha de camadas (layers). Cada camada enviada para a VRAM é calculada pelo GPU, muito rápido; as que permanecem na RAM são calculadas pelo CPU, lentamente. --n-gpu-layers (ou -ngl) define quantas camadas vão para o GPU. Esse é o ajuste mais importante para a velocidade.

-ngl 99
Tudo na GPU. Configuração a buscar se o modelo couber inteiramente na VRAM. Velocidade máxima.
-ngl 20
Offloading parcial: 20 camadas na GPU, o restante na CPU. Uma solução de compromisso quando o modelo excede a capacidade da VRAM.
-ngl 0
Tudo na CPU. Lento, mas permite rodar um modelo muito maior do que a sua placa comporta.

A estratégia: aumentar -ngl o máximo possível sem saturar a VRAM. Um 14B em Q4 (≈9 GB) cabe inteiramente em uma RTX 3060 de 12 GB com -ngl 99. Um Qwen 3.8 27B em Q4 (≈18 GB) não cabe; nessa mesma placa, fazemos offload parcial — por exemplo, -ngl 40 — e aceitamos uma redução de velocidade.

Offload parcial de um modelo grande
# Qwen 3.8 27B Q4 (~18 Go) sur un GPU 12 Go : une partie sur GPU, le reste sur CPU
llama-server -m ./qwen3.8-27b-instruct-q4_k_m.gguf -ngl 40 -c 4096

Para monitorar o que realmente cabe na VRAM durante o carregamento, fique de olho no nvidia-smi em outra janela:

Monitoramento da VRAM
nvidia-smi -l 1
i
Flash Attention e batching
Adicione --flash-attn para reduzir o consumo de memória do contexto em GPUs compatíveis. O batching contínuo (-cb) está ativado por padrão: várias requisições concorrentes são tratadas de forma eficiente por meio de slots paralelos (--parallel N).

#5. Interface web incluída

Não é preciso usar Open WebUI nem Docker para conversar: o llama-server disponibiliza uma interface de chat diretamente na raiz. Basta abrir o endereço do servidor em um navegador.

Interface web
http://localhost:8080

Você encontrará ali um chat completo: histórico de conversa, ajuste da temperatura e dos parâmetros de amostragem, recurso de prompt de sistema e renderização em Markdown. Isso é suficiente para uso pessoal diário, sem instalar nenhuma camada adicional.

→
Nomear o modelo exibido
Use -a (ou --alias) para dar um nome legível ao modelo, exibido em /v1/models e na interface: llama-server -m modele.gguf -a qwen3.5-9b -ngl 99.

#Quando preferir llama-server a Ollama (e quando continuar com Ollama)

llama-server e Ollama executam o mesmo motor. A escolha é uma questão de controle versus comodidade.

Escolha o llama-server
Quando você quer ajustar com precisão o offloading, testar um GGUF específico de um determinado quantizador, evitar um daemon permanente ou implantar um único binário sem dependências em um servidor.
Escolha o llama-server
Quando um modelo excede a capacidade da sua VRAM: o controle direto de -ngl e das opções de memória faz a diferença entre “inutilizável” e “lento, mas funcional”.
Permaneça com o Ollama
Quando você quer alternar entre vários modelos dinamicamente, sem reiniciar processos, gerenciar uma biblioteca com ollama pull/list ou carregar e descarregar modelos automaticamente conforme a demanda.
Permaneça com o Ollama
Quando várias aplicações acessam modelos diferentes na mesma porta 11434: o Ollama roteia as solicitações e alterna entre os modelos para você, enquanto o llama-server executa um único modelo por processo.
i
Os dois coexistem
Nada obriga você a escolher. Muitos mantêm o Ollama pela praticidade no dia a dia e iniciam um llama-server dedicado para servir um modelo específico em produção ou para um ajuste de offloading que o Ollama não permite.

#Solução de problemas

Erro 'CUDA out of memory' ao carregar
O valor de -ngl está alto demais para a VRAM. Reduza-o (offloading parcial), diminua -c ou passe para uma quantização mais leve (Q4_K_M em vez de Q5/Q8).
O GPU não está sendo usado
O binário pode ser a variante para CPU. Verifique se você está usando um build CUDA/Metal/Vulkan e se -ngl é maior que 0. nvidia-smi deve mostrar VRAM ocupada.
Respostas incoerentes ou tags visíveis
O template de chat não está sendo aplicado. Reinicie com --jinja para usar o template embutido no GGUF.
O aplicativo cliente não encontra o modelo
Alguns clientes consultam /v1/models primeiro. Crie um alias com -a e preencha esse nome exato no campo model da sua aplicação.
Contexto truncado / respostas cortadas
-c é muito pequeno. Aumente o tamanho do contexto, lembrando que um grande contexto consome mais VRAM.

#Para se aprofundar

llama-server mostra todo o seu valor com um llama.cpp bem compilado e um GGUF bem escolhido. Estes guias do site complementam a configuração:

Compilar llama.cpp com CUDA
Para um binário otimizado para NVIDIA e o máximo de tokens por segundo na sua placa.
Q4, Q5, Q8: qual quantização escolher
Para equilibrar qualidade, velocidade e VRAM antes de baixar um GGUF.
llama.cpp vs vLLM vs Exllama
Para situar o llama-server em relação aos outros motores de inferência de acordo com suas necessidades de taxa de processamento.
Este guia ajudou você?

Um comentário, um erro ou uma observação? Avise-nos; isso ajuda a melhorar o guia para todos.