V100 Cluster vs. MoE: Construção 12x SXM2 32GB com Orquestração Claude Code

✍️ OpenClawRadar📅 Publicado: June 8, 2026🔗 Source
V100 Cluster vs. MoE: Construção 12x SXM2 32GB com Orquestração Claude Code
Ad

Um advogado executando um cluster de 12x V100 32GB SXM2 em um Threadripper Pro relata que, em GPUs Volta (capacidade computacional 7.0), apenas modelos MoE oferecem velocidades de decodificação utilizáveis. Modelos densos são uma armadilha — até mesmo um modelo denso de 27-32B luta para atingir 20-28 tok/s, bem abaixo de um piso de 40 tok/s. Em contraste, Qwen3.5-122B-A10B (122B total, 10B ativo) alcança ~50 tok/s em uma única placa NVLink de 4 GPUs, e Gemma-4-26B-A4B atinge ~113 tok/s. Todos os benchmarks usam Q8 GGUF com cache KV Q4 e flash-attention ativado.

Configuração de Hardware

A configuração final: doze V100-SXM2 32GB em um Threadripper Pro. Duas placas NVLink (4 GPUs cada) mais dois pares mistos. A Placa A ocupa GPUs {4,5,8,9}, a Placa B {6,7,10,11}. Um par NVLink está em {0,1}, e um par misto em {2,3} onde uma placa é de 16GB. Saltos entre placas passam por PCIe/NUMA em vez de NVLink, matando a taxa de transferência. Todos os modelos são mantidos dentro de uma única placa.

Uma segunda máquina foi adicionada: EPYC 7302P, 512GB RAM, 4x RTX 3090 + 2x V100-PCIe, executando Ollama para modelos menores.

Troca de Pilha: vLLM → llama.cpp

O operador abandonou o vLLM porque os modelos que ele realmente quer são MoE GGUFs, e o vLLM em Volta é um beco sem saída para eles — kernels FP8/AWQ/Marlin requerem SM75+, e kernels GPTQ estão quebrados em compute 7.0. Ele migrou para o llama.cpp mainstream, que recentemente corrigiu um bug no chat-parser do Gemma que estava bagunçando prompts longos.

Ad

Orquestração com Claude Code

O sistema não é um único modelo respondendo a um chat — um orquestrador (orientado pelo Claude Code) roteia tarefas jurídicas por vários modelos locais, cada um fixado em sua própria placa para evitar contenção de GPU. Para o trabalho mais pesado (petição ou moção completa, do recebimento ao documento), todas as 16 GPUs em ambas as máquinas estão ativas:

  • Redação principal: Qwen3.6-35B-A3B na Placa A
  • Raciocínio pesado + redação de alto risco: Qwen3.5-122B-A10B na Placa B
  • Modelo de portão: modelo pequeno no par {0,1} verifica se há fundamentos
  • Revisor adversarial: ataca o rascunho no par {2,3}
  • Financeiro/extração: Gemma-4-26B nas 3090s via Ollama

Este é um pipeline sequencial — os modelos não atacam todos ao mesmo tempo — mas todos os 16 permanecem residentes na memória GPU.

Lições Práticas

  • Alucinação: Modelos locais fabricam citações e datas com confiança. Um verificador checa cada citação, data e número Bates contra o material de origem e bloqueia conteúdo não fundamentado. Um revisor adversarial é executado em cima.
  • Envenenamento de pipeline: O construtor de pacotes de evidência estava coletando suas próprias saídas anteriores como evidência do cliente, fazendo com que os modelos se "fundamentassem" em porcaria que haviam escrito antes — um rascunho citou uma RTX 3060 como número Bates. Corrigido limpando o histórico de entrada do construtor.

Tarefas mais leves usam muito menos — combinar e carimbar exhibits com Bates é puramente CPU (PyMuPDF + Tesseract), e resumos simples atingem apenas Gemma e o roteador.

📖 Leia a fonte completa: r/LocalLLaMA

Ad

👀 See Also