Serving study / recorded September 30 – October 2, 2026

Qwen3.8-27B on one Spark: TensorFold vs vLLM vs SGLang

One Spark, one checkpoint (nvidia/Qwen3.8-27B-NVFP4), one DFlash2 drafter, three engines. TensorFold 0.6.1 with --parallel 16 took the crowd row from 62 to 372 tok/s over 0.3.6.3, and it is the only engine that gave byte-identical replies alone, under load and with or without the drafter.

TensorFold 0.3.6.3 vs 0.6.1 on one DGX Spark

All four, same harness

TensorFold 0.3.6.3
(default)
TensorFold 0.6.1
--parallel 16
vLLM 0.30.0SGLang 0.5.21
1 request, tok/s83985760
4 at once, combined tok/s6114310395
8 at once, combined tok/s62244162150
16 at once, combined tok/s62372253224
First token, 16 at once (median)116.82 s0.30 s0.55 s0.63 s
Prompt read 16K, tok/s1,7552,7092,4941,644
Prompt read 64K, tok/s1,2482,0441,9191,256
Prompt read 128K, tok/s8821,5151,4561,197
Decode after 128K prompt, tok/s11.121.213.216.6
Same 64K prompt again, first token0.45 s0.40 s1.29 s0.59 s
Same request twice / solo = 16 at once / drafted = plain—8/8 · 8/8 · 8/88/8 · 1/8 · 1/87/8 · 1/8 · 1/8

Thinking off, temperature 0, 512-token answers, DFlash2 drafter on every engine. Exactness counts byte-identical replies out of 8 prompts (numbers, code, JSON, prose, explanation, SQL, email, math); TensorFold 0.3.6.3 was not part of the exactness round.

Original engine battle chart with TensorFold 0.3.6.3

The original chart, kept for the record: it compared vLLM and SGLang against TensorFold 0.3.6.3. The correction above reran TensorFold on 0.6.1 with --parallel 16 on the same Spark, weights, drafter and prompts.

Read before comparing

The setup, the caveats, the limits.

Hardware: one DGX Spark. Model nvidia/Qwen3.8-27B-NVFP4, drafter z-lab/Qwen3.8-27B-DFlash2 with 7 speculative tokens on all engines. Engines: TensorFold 0.3.6.3 (default) and 0.6.1 @ 17c73e1 with --parallel 16, vllm/vllm-openai:v0.30.0, lmsysorg/sglang:v0.5.21-cu130.

Why vLLM and SGLang change under load: batched kernels pick different reduction orders as the batch changes, so the same request can diverge after a few dozen tokens. Both still repeated themselves run to run when alone (vLLM 8/8, SGLang 7/8).