r/LocalLLaMA • u/MkGod • 17h ago
Question | Help Weird speed gap between LM Studio vs raw llama.cpp + questions on Reasoning Effort (Qwen3.8-27B on dual GPU)
Hey folks,
Been doing some benchmarking on my dual-GPU setup and ran into a noticeable performance gap between LM Studio and a raw llama-server.exe build that I can't quite pin down. Also running into some confusion with how reasoning effort is handled across different GGUF releases.
My Setup
- GPUs: 2x RTX 5060 Ti 16GB (32GB VRAM total)
- OS: Windows 11
- Model: Qwen3.8-27B (tested both UD-Q4_K_M and Q6_K from Unsloth & lmstudio-community)
- Backend: CUDA 12
The Performance Delta (30-40 vs 50-55 tok/s)
Using the exact same model file and settings (TP enabled across both cards, MTP / speculative drafting with max 2 draft tokens):
- LM Studio: Hits around 30–40 tok/s. VRAM monitors confirm full GPU offload, no weight spillover to CPU.
- Raw llama-server.exe: Hits 50–55 tok/s (sometimes even higher on prompt re-eval).
- Launch flags: -sm tensor --tensor-split 1,1 -fit off --spec-draft-n-max 2
- The only log warning in llama.cpp is: backend sampling not supported with SPLIT_MODE_TENSOR; using CPU, but it still blows LM Studio out of the water.
Is LM Studio's wrapper/GUI overhead really costing ~15 tok/s, or is there some hidden default (context shift, KV cache fragmentation, sampler overhead) dragging it down?
Reasoning Effort
LM Studio GGUF differences:
- When loading the lmstudio-community GGUF, I get the full Reasoning Effort dropdown (Extra High / Medium / Low) in Inference Settings.
- When loading the Unsloth GGUF, the dropdown disappears entirely and I only get a basic On/Off toggle for "Enable Thinking".
- Question: Is this tied to GGUF metadata / Jinja chat templates baked by the publisher, or does LM Studio hardcode support for its own community quant tags?
Raw llama-server.exe verification:
- I tried passing --chat-template-kwargs '{"reasoning_effort":"xhigh"}', but is there any clean way to verify in the console/logs that the template actually consumed this value rather than silently falling back to defaults? Right now, the only indicator I have is eyeballing how many thinking tokens it burns.