Inferencia local
Inferência Local de LLMs
Ver
05-inferencia/servidores.mdpara referência completa dos servidores. Este arquivo foca nos aspectos de setup e configuração para uso local (laptop, workstation, servidor próprio).
Ollama — Experiência Local Mais Simples
# Instalar (Linux/Mac)
curl -fsSL https://ollama.com/install.sh | sh
# Baixar e rodar modelo
ollama run qwen2.5-coder:7b
ollama run llama3.3:70b
# Servidor API (OpenAI-compatible)
ollama serve # localhost:11434
# Listar modelos locais
ollama list*odelos úteis para dev:*
ollama pull qwen2.5-coder:7b # 4.7 GB
ollama pull qwen2.5-coder:32b # 20 GB
ollama pull deepseek-coder-v2:16b # 9.1 GB
ollama pull codellama:34b # 19 GBllama.cpp — Máxima Flexibilidade
# Compilar
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make -j $(nproc) LLAMA_CUDA=1 # NVIDIA GPU
# ou: make -j LLAMA_METAL=1 # Apple Silicon
# Baixar modelo GGUF
huggingface-cli download \
Qwen/Qwen2.5-Coder-7B-Instruct-GGUF \
qwen2.5-coder-7b-instruct-q4_k_m.gguf
# Servidor
./llama-server \
--model qwen2.5-coder-7b-instruct-q4_k_m.gguf \
--ctx-size 8192 \
--n-gpu-layers 99 \
--port 8080vLLM — Servidor de Produção Local
pip install vllm
# Iniciar servidor
vllm serve Qwen/Qwen2.5-Coder-32B-Instruct \
--dtype bfloat16 \
--gpu-memory-utilization 0.90 \
--max-model-len 32768 \
--enable-prefix-caching
# Com quantização AWQ (cabe em 1 GPU 24GB)
vllm serve Qwen/Qwen2.5-Coder-32B-Instruct-AWQ \
--quantization awq \
--gpu-memory-utilization 0.90SGLang — Structured Output e Agents
pip install sglang
python -m sglang.launch_server \
--model-path Qwen/Qwen2.5-Coder-32B-Instruct \
--host 0.0.0.0 \
--port 30000 \
--enable-torch-compile \
--enable-radix-cacheEscolha do Quantization Level
Para GGUF (CPU ou GPU NVIDIAAMDMetal):
| Quantização | Tamanho (7B) | Qualidade vs FP16 | Quando usar |
|---|---|---|---|
| Q2_K | 2.7 GB | -15% | RAM muito limitada |
| Q3KM | 3.3 GB | -7% | RAM limitada; aceita perda |
| Q4KM | 4.4 GB | -3% | *adrão recomendado* |
| Q5KM | 5.1 GB | -1% | Melhor qualidade CPU |
| Q6_K | 5.9 GB | ~0% | GPU com RAM extra |
| Q8_0 | 7.7 GB | ~0% | Máxima qualidade local |
Hardware Mínimo por Caso de Uso
| Modelo | Memória necessária | Hardware |
|---|---|---|
| Qwen2.5 |
6 GB | RTX 3060; M1 8GB |
| Qwen2.5 |
10 GB | RTX 3080; M1 16GB |
| Qwen2.5 |
22 GB | RTX 4090 (24GB); M2 Ultra |
| Llama 3.3 70B Q4 | 48 GB | 2× RTX 4090; M2 Ultra 96GB |
| DeepSeek-R1 671B Q4 | 420 GB | 8× H100 80GB |
Integração com Editores de Código
Continue.dev (VS Code / JetBrains)
// config.json
{
"models": [{
"title": "Kode Local",
"provider": "ollama",
"model": "qwen2.5-coder:32b",
"apiBase": "http://localhost:11434"
}],
"tabAutocompleteModel": {
"title": "Qwen Coder 7B",
"provider": "ollama",
"model": "qwen2.5-coder:7b"
}
}Cursor / Windsurf
- Configura OpenAI-compatible base URL:
http://localhost:11434/v1 - API key: qualquer string (ex: "ollama")
Neovim — avante.nvim / llm.nvim
- Suporte a OpenAI-compatible API; aponta para Ollama
Profiling de Performance Local
# Benchmark com llama-bench
./llama-bench \
--model qwen2.5-coder-7b-instruct-q4_k_m.gguf \
--n-gen 128 \
--n-prompt 512
# Monitorar GPU
watch -n 0.5 nvidia-smi
# Monitorar uso de VRAM em tempo real
nvidia-smi dmon -s u -d 1Docker Compose — Stack Local Completa
services:
ollama:
image: ollama/ollama
ports: ["11434:11434"]
volumes: ["ollama_data:/root/.ollama"]
deploy:
resources:
reservations:
devices:
- capabilities: [gpu]
open-webui:
image: ghcr.io/open-webui/open-webui
ports: ["3000:8080"]
environment:
- OLLAMA_BASE_URL=http://ollama:11434
depends_on: [ollama]
langfuse:
image: langfuse/langfuse
ports: ["3001:3000"]
environment:
- DATABASE_URL=postgresql://postgres:postgres@db:5432/langfuse
volumes:
ollama_data:Apple Silicon — Configuração Ideal
# MLX (Apple ML framework — mais rápido que llama.cpp em M-series)
pip install mlx-lm
# Rodar modelo com MLX
mlx_lm.generate \
--model mlx-community/Qwen2.5-Coder-32B-Instruct-4bit \
--prompt "def fibonacci(n):"
# Servidor MLX
mlx_lm.server \
--model mlx-community/Qwen2.5-Coder-32B-Instruct-4bit \
--port 8080*erformance M3 Max (96GB):*
- Qwen2.5
Coder32B Q4: ~15 tokens/s - Llama 3.3 70B Q4: ~6 tokens/s