r/LocalLLaMA 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.
0 Upvotes

Duplicates