LLM multi-GPU com llama.cpp: tensor-split 2× RTX 3090
Uma RTX 4090 de 24 GB não é suficiente para rodar os melhores modelos de 2026 em Q8 com qualidade plena e um contexto de 256k tokens. Duas 3090 usadas (48 GB) dão conta do trabalho por menos dinheiro. Mas é preciso saber dividir o modelo entre as placas, escolher entre split layer e tensor parallel e configurar o hardware para que ele continue funcionando bem ao longo do tempo. Este guia aborda as três ferramentas comuns (llama.cpp, Ollama, vLLM) e as armadilhas.
Você está escolhendo uma máquina? Nossas escolhas por orçamento →
Boa relação custo-benefício para IA local: um GMKtec EVO-X2 64 GB / 1 TB (Ryzen AI Max+ 395).
Um mini-PC é uma máquina completa: verifique a memória disponível e a compatibilidade do motor. Ele não substitui macOS/MLX ou CUDA.
Por que essa escolha? Nossa ficha completa sobre GMKtec EVO-X2 64 GB / 1 TB (Ryzen AI Max+ 395) →
Compare todas as opções por orçamento, de 800 a 3 500 € →
Orçamento apertado: RTX 5060 · Modelos grandes: RTX 5090 · Mac Studio.
Em deslocamento: qual notebook para IA local →
Links afiliados — comissão possível sem custo adicional para você. Como Parceiro Amazon, QualLLM obtém lucro com compras que atendem às condições exigidas.
#Por que usar múltiplos GPUs
- Modelos > VRAM de uma única placa
- Qwen3-Coder 30B-A3B em Q8 = 32 GB, e, com um contexto de 256k, o cache KV leva o uso de memória muito além disso. Nenhuma GPU de consumo comporta isso sozinha, exceto uma RTX 5090 (32 GB) — e, mesmo assim, sem margem para um contexto grande.
- Throughput para equipe
- Duas cartas com paralelismo tensor podem atender a 2× mais usuários ao mesmo tempo.
- Redundância
- Uma placa falha, a outra continua em modo degradado (modelo menor).
- Fine-tuning
- Um LoRA em um modelo de 24B exige 30 GB para modelo + otimizador + gradientes. Duas placas de 24 GB = configuração confortável.
#Duas estratégias: split layer vs tensor parallel
- Divisão por camadas (layer parallelism)
- As camadas 1-40 no GPU 0, 41-80 no GPU 1. Ao passar de camada para camada, copia-se um vetor de ativação. Latência ligeiramente maior. Suportado por llama.cpp e Ollama.
- Paralelismo tensorial
- Cada camada é dividida em partes distribuídas entre as GPUs em paralelo. Exige comunicação rápida entre as placas. Oferece melhor desempenho, mas é complexo. Suportado por vLLM e ExLlamaV2.
#Hardware: atenção aos detalhes
- PCIe
- Cada GPU deve operar em pelo menos PCIe x8. Uma placa-mãe com 2× PCIe 5.0 x16 dedicados à CPU, não x16 + x4 via chipset.
- Alimentação
- 2× 3090 = 700 W só para as GPUs. Somando CPU, RAM e SSD: considere uma fonte de 1200-1600 W (80+ Gold ou Platinum).
- Espaçamento
- As RTX 3090/4090 ocupam 3 slots. Em uma placa-mãe com 7 slots, as duas placas se tocam. Risers PCIe ou refrigeração líquida para manter o controle.
- Ventilação
- Com 2 placas sob carga, um gabinete mal ventilado atinge 85–90 °C. Redução de desempenho por aquecimento (thermal throttling) = -30 % de desempenho.
#1. Multi-GPU com llama.cpp
--tensor-split indica a proporção de camadas por GPU. Para 2 placas idênticas: 0.5,0.5. Para uma 3090 de 24 GB + uma 4070 de 12 GB: 0.67,0.33 (a 3090 recebe dois terços).
#2. Multi-GPU com Ollama
O Ollama detecta automaticamente várias GPUs e distribui o trabalho entre todas as disponíveis. Há poucas opções de configuração disponíveis, mas ele funciona de imediato.
#3. Paralelismo tensorial com vLLM
O vLLM distribui cada camada entre os 2 GPUs em paralelo. O throughput agregado é quase dobrado em relação a 1 GPU, com um overhead de comunicação de ~10 %.
#NVLink: útil ou não?
NVLink permite uma conexão entre GPUs com alta largura de banda (112 GB/s na 3090). Algumas RTX 3090 têm um conector NVLink; as 4090 já não têm esse conector; todas as RTX Quadro / A-series o têm.
- Impacto do split-layer do llama.cpp
- Muito baixo. As transferências entre camadas são pequenas.
- Impacto do paralelismo tensorial no vLLM
- Mais significativo: +5 a +15% de throughput com NVLink ativado.
- Impacto do fine-tuning
- Grande: a comunicação de gradientes é intensa. Recomenda-se NVLink se você planeja fazer fine-tuning com múltiplas GPUs.
#Desempenho esperado
Em 2× RTX 3090, Qwen3-Coder 30B-A3B Q8_0, llama.cpp com divisão por camadas:
- Prompt único
- ~55 tok/s. O modelo em Q8 (32 GB) não caberia na VRAM de uma única 3090. A velocidade permanece alta: trata-se de um MoE com 3B de parâmetros ativos.
- Latência do primeiro token
- ~200 ms (vs ~80 ms em um modelo pequeno com uma única GPU).
- Mesmas placas com vLLM em paralelismo de tensores
- ~65 tok/s com uma única requisição, mas ~400 tok/s agregados com 10 requisições paralelas.
Um comentário, um erro ou uma observação? Avise-nos; isso ajuda a melhorar o guia para todos.