Key Takeaways
- Headless = sem UI de chat, apenas API. Ollama, vLLM e LM Studio podem rodar em modo headless.
- Ollama headless: `ollama serve` inicia a API em localhost:11434. Sem UI.
- vLLM headless: `vllm serve` inicia a API na porta 8000. Maior vazão que o Ollama.
- Produção: use vLLM para alta vazão, Ollama para simplicidade, nginx para balanceamento de carga e segurança.
- A partir de abril de 2026, o vLLM é o padrão de produção para serviços de alta vazão.
O que significa headless?
Headless significa que o software roda como serviço sem interface gráfica de usuário. Você interage por meio de chamadas à API (REST, gRPC) em vez de clicar em botões.
Vantagens: menor uso de recursos (sem overhead de UI), mais fácil de automatizar, adequado para servidores, mais simples de escalar.
Desvantagens: sem feedback visual, exige conhecimento de API, mais difícil de depurar sem logs.
Como rodar o Ollama em modo headless?
O Ollama pode rodar como serviço de API puro:
# Run Ollama headless
ollama serve
# This starts the API at http://localhost:11434/v1
# No chat UI, just a background service
# Use the API from Python
from openai import OpenAI
client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
response = client.chat.completions.create(
model="llama3.2:3b",
messages=[{"role": "user", "content": "Hello"}]
)
print(response.choices[0].message.content)
# Or from curl
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{{"model": "llama3.2:3b", "messages": [{{"role": "user", "content": "Hello"}}]}}'Como rodar o vLLM em modo headless?
O vLLM é otimizado para implantações headless de alta vazão:
# Install vLLM
pip install vllm
# Run headless with API
vllm serve llama-3.1-8b-instruct \
--host 0.0.0.0 \
--port 8000 \
--gpu-memory-utilization 0.9
# Access at http://localhost:8000/v1
# Supports 50+ concurrent requests
# Use from Python (same as Ollama)
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="anything")
response = client.chat.completions.create(
model="meta-llama/Llama-2-7b-chat-hf",
messages=[{"role": "user", "content": "Hello"}]
)
print(response.choices[0].message.content)Como implantar em produção?
1. Use vLLM para alta vazão (50+ usuários simultâneos).
2. Use Ollama para simplicidade (usuário único ou equipes pequenas).
3. Adicione um proxy reverso nginx para balanceamento de carga e autenticação.
4. Monitore a memória da GPU -- os modelos não devem ultrapassar 80% da VRAM.
5. Configure o logging -- registre erros e métricas de desempenho.
6. Use systemd ou Docker para gerenciamento do serviço (reinício automático em caso de falha).
# Example: Deploy vLLM on a server via Docker
docker run --gpus all -p 8000:8000 \
--env VLLM_API_KEY="your-secret-key" \
vllm/vllm-openai:latest \
--model meta-llama/Llama-2-13b-chat-hf \
--tensor-parallel-size 2 # Use 2 GPUs
# Nginx reverse proxy config (optional)
# server {
# listen 80;
# location / {
# proxy_pass http://localhost:8000;
# proxy_set_header Authorization "Bearer $http_authorization";
# }
# }Como monitorar implantações headless?
Monitore a memória da GPU, a latência das requisições e as taxas de erro:
# Monitor GPU usage (nvidia-smi)
watch nvidia-smi # Updates every 2 seconds
# Monitor request latency
# Add logging to your client code
import time
start = time.time()
response = client.chat.completions.create(...)
latency = time.time() - start
print(f"Request took {latency:.2f} seconds")
# Monitor vLLM logs
docker logs -f <container_id>
# Check error rates
# Parse logs for errors or use a monitoring tool (Prometheus + Grafana)Erros comuns em implantações headless
- Não monitorar a VRAM. Os modelos podem ficar sem memória sem aviso. Monitore a GPU antes de implantar em produção.
- Expor a API sem autenticação. Serviços headless frequentemente ficam expostos em redes. Sempre adicione autenticação (chave de API, firewall).
- Não definir limites de recursos. Um modelo pode consumir 100% da GPU e bloquear outras tarefas. Use `--gpu-memory-utilization` no vLLM.
- Esperar que o Ollama escale para 100+ usuários. Use vLLM para alta concorrência. O Ollama dá conta de poucos usuários simultâneos.
- Não testar o failover. Se o seu servidor de modelos falhar, as requisições ficam penduradas. Use um balanceador de carga e health checks.
Perguntas frequentes sobre implantações headless
O Ollama e o vLLM podem rodar na mesma GPU?
Não ao mesmo tempo. Eles competirão pela VRAM. Rode um ou outro, ou use várias GPUs.
É seguro expor a API à internet?
Não, sem autenticação não é seguro. Sempre coloque uma chave de API, firewall ou proxy reverso à frente. Nunca exponha localhost:11434 diretamente.
Quantos usuários simultâneos o Ollama suporta?
Tipicamente 1-3 sem fila de requisições. Para mais usuários, use vLLM ou adicione um sistema de filas.
Qual é a diferença de desempenho entre Ollama e vLLM?
Requisição individual: velocidade semelhante. Várias requisições simultâneas: o vLLM é 5-10× melhor porque agrupa as requisições em lotes.
Fontes
- Ollama GitHub -- github.com/ollama/ollama
- vLLM GitHub -- github.com/vllm-project/vllm
- vLLM Deployment Guide -- docs.vllm.ai/en/serving/deploying_with_docker.html
- Ollama API Docs -- github.com/ollama/ollama/blob/main/docs/api.md