V100 Cluster vs. MoE: 12x SXM2 32GB Build with Claude Code Orchestration

A lawyer running a 12x V100 32GB SXM2 cluster on a Threadripper Pro reports that on Volta GPUs (compute capability 7.0), only MoE models deliver usable decode speeds. Dense models are a trap — even a 27-32B dense model struggles at 20-28 tok/s, well below a 40 tok/s floor. In contrast, Qwen3.5-122B-A10B (122B total, 10B active) achieves ~50 tok/s on a single 4-GPU NVLink board, and Gemma-4-26B-A4B hits ~113 tok/s. All benchmarks use Q8 GGUF with Q4 KV cache and flash-attention enabled.
Hardware Configuration
The final build: twelve V100-SXM2 32GB on a Threadripper Pro. Two NVLink boards (4 GPUs each) plus two mixed pairs. Board A occupies GPUs {4,5,8,9}, Board B {6,7,10,11}. An NVLink pair sits on {0,1}, and a mixed pair on {2,3} where one card is 16GB. Cross-board hops go over PCIe/NUMA instead of NVLink, killing throughput. All models are kept inside a single board.
A second box was added: EPYC 7302P, 512GB RAM, 4x RTX 3090 + 2x V100-PCIe, running Ollama for smaller models.
Stack Switch: vLLM → llama.cpp
The operator abandoned vLLM because the models he actually wants are MoE GGUFs, and vLLM on Volta is a dead end for them — FP8/AWQ/Marlin kernels require SM75+, and GPTQ kernels are broken on compute 7.0. He moved to mainline llama.cpp, which recently fixed a Gemma chat-parser bug that was mangling long prompts.
Orchestration with Claude Code
The system is not a single model answering a chat — an orchestrator (driven by Claude Code) routes legal tasks across several local models, each pinned to its own board to avoid GPU contention. For the heaviest job (full affidavit or motion, intake-to-document), all 16 GPUs across both boxes are active:
- Workhorse drafting: Qwen3.6-35B-A3B on Board A
- Heavy reasoning + high-stakes drafting: Qwen3.5-122B-A10B on Board B
- Gate model: small model on the {0,1} pair checks if there are grounds
- Adversarial reviewer: attacks the draft on the {2,3} pair
- Financial/extraction: Gemma-4-26B on the 3090s via Ollama
This is a sequential pipeline — models don't hammer all at once — but all 16 remain resident in GPU memory.
Practical Lessons
- Hallucination: Local models confidently fabricate citations and dates. A verifier checks every cite, date, and Bates number against source material and blocks ungrounded content. An adversarial reviewer runs on top.
- Pipeline poisoning: The evidence bundle builder was scooping up its own prior outputs as client evidence, causing the models to "ground" on slop they'd written earlier — one draft cited an RTX 3060 as a Bates number. Fixed by scrubbing the builder's input history.
Lighter tasks use far less — combining and Bates-stamping exhibits is pure CPU (PyMuPDF + Tesseract), and plain summaries hit only Gemma and the router.
📖 Read the full source: r/LocalLLaMA
👀 See Also

Using yavy.dev to query OpenClaw docs via AI for configuration help
A user reports success configuring OpenClaw by using yavy.dev to index the documentation and query it through Claude AI, moving from confusion to a working setup in an afternoon.

Running OpenClaw locally with Jetson Nano and gaming laptop using Ollama
A developer set up OpenClaw to run locally using a Jetson Nano and a 2022 MSI gaming laptop with Qwen 3.5 9B via Ollama, implementing wake-on-LAN for power efficiency and hybrid routing to OpenAI for complex tasks.
Built an AI Flat-Finder in a Weekend: Scraping Reddit to Beat Broker Spam
A weekend build uses Claude Haiku 4.5 to scrape Reddit for rental listings, bypassing broker-infested sites like NoBroker and MagicBricks. Demo: https://trurent-five.vercel.app/

OpenClaw Family Gateway: Token Budgets, Memory Tuning, and Custom Plugins
A developer built a family AI gateway using OpenClaw on a Mac and QNAP NAS, implementing strict token budgets, tuning memory recall with re-ranking and contextual embeddings, and creating 12 custom plugins with 175+ commands.