Rodando Dois Modelos em uma Única GPU: A Matemática por trás dos LLMs Locais
Eu rodo uma stack de agentes em uma workstation. Os modelos residem em um DGX Spark via LAN. Eu utilizo o vLLM em vez do Ollama para gerenciar melhor a memória.
O objetivo é rodar dois modelos simultaneamente:
- Qwen3-Next-80B para raciocínio pesado.
- Qwen3-4B para turnos rápidos.
Ambos os modelos acessam uma única URL através de um proxy LiteLLM. Essa configuração falhou várias vezes antes de eu encontrar a matemática correta.
Aqui estão as lições dessa luta.
A Armadilha da Memória
A configuração gpu_memory_utilization não é um alvo para memória livre. É uma fração da memória total da GPU.
Se você tem uma placa de 120 GB e define a utilização para 0.80, o vLLM tenta reivindicar 96 GB da capacidade total. Ele não observa o que está livre no momento. Se você tentar rodar dois processos, as porcentagens deles devem somar menos de 0.95. Você deve deixar espaço para o overhead do framework CUDA.
O Que Aconteceu com os Modelos
Eu tentei usar a versão Thinking do modelo 80B. Falhou. O modelo raciocinava dentro das tags
Tive que trocar o backbone do 80B para a versão Instruct. Isso permitiu que o agente usasse ferramentas adequadamente.
A Matemática Real Após os testes, descobri que estes números funcionam para o meu setup:
• Qwen3-Next-80B (com alvo de 0.80): Usa ~87.8 GiB de memória real. • Qwen3-4B (com alvo de 0.10): Usa ~13.8 GiB de memória real. • Uso total: ~101.6 GiB. • Margem livre (headroom): ~18 GiB.
Se eu aumentasse o 80B para 0.85, o modelo 4B não conseguia iniciar. O 80B reivindicaria demais, não deixando espaço para as necessidades mínimas do 4B.
Meu Guia para Modelos Co-residentes
- Carregue o maior modelo primeiro.
- Deixe-o estabilizar.
- Execute nvidia-smi para ver a memória real utilizada.
- Defina o tamanho do modelo menor com base na memória livre restante menos 5 GB para overhead.
- Reinicie ambos os modelos duas vezes para garantir a estabilidade.
Não tente adivinhar suas configurações de memória. Use este comando para ver a sua realidade: nvidia-smi --query-gpu=memory.used --format=csv
Se a sua alocação alvo e o seu uso real diferirem em mais de 10%, sua matemática está errada. Corrija-a antes de implantar sua stack de agentes.