Created
August 8, 2026 15:53
-
-
Save devisnotnull/8e56cf660bd08e2bb344209445a7a271 to your computer and use it in GitHub Desktop.
Gwen (Qwen3.6-27B PrismaAURA 5.5bit CT, vLLM 0.26.0, 2x RTX 3090 TP=2) vLLM config A/B: original config + spec-tokens variants with measured throughput
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| [Unit] | |
| Description=vLLM OpenAI-compatible server (Qwen3.6-27B PrismaAURA 5.5bit CT, TP=2, MTP spec=5) | |
| After=network.target | |
| Wants=network.target | |
| [Service] | |
| Type=simple | |
| User=alex | |
| Group=alex | |
| ExecStart=/home/alex/vllm-venv/bin/python -m vllm.entrypoints.openai.api_server \ | |
| --model /home/alex/.cache/huggingface/hub/models--rdtand--Qwen3.6-27B-PrismaAURA-5.5bit-vllm/snapshots/d017bf96ad8214e18fa6d9bbed3e9dfbdba6309f \ | |
| --served-model-name qwen3-27b \ | |
| --tensor-parallel-size 2 \ | |
| --gpu-memory-utilization 0.97 \ | |
| --max-model-len 98304 \ | |
| --max-num-seqs 128 \ | |
| --quantization compressed-tensors \ | |
| --dtype bfloat16 \ | |
| --enable-prefix-caching \ | |
| --kv-cache-dtype fp8 \ | |
| --spec-method qwen3_5_mtp \ | |
| --spec-model /home/alex/.cache/huggingface/hub/models--rdtand--Qwen3.6-27B-PrismaAURA-5.5bit-vllm/snapshots/d017bf96ad8214e18fa6d9bbed3e9dfbdba6309f \ | |
| --spec-tokens 3 \ | |
| --enable-auto-tool-choice \ | |
| --tool-call-parser qwen3_xml \ | |
| --default-chat-template-kwargs '{"enable_thinking": false}' \ | |
| --host 0.0.0.0 --port 8080 | |
| Restart=on-failure | |
| RestartSec=10 | |
| TimeoutStartSec=600 | |
| StandardOutput=journal | |
| StandardError=journal | |
| SyslogIdentifier=vllm-qwen | |
| LimitNOFILE=65536 | |
| [Install] | |
| WantedBy=multi-user.target |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Two measurement distortions were discovered after the original A/B ran — read this before trusting any absolute tok/s in the comments above.
1. My word-count probe UNDER-counts real tokens. The probe counted whitespace-separated words in streamed deltas, not tokens. English ≈ 0.7 words/token, so every "tok/s" in the A/B tables is ~25-30% LOW. Example: the "245 tok/s @8" for spec-tokens 1 is really ~340 real tokens/s (measured via vLLM's
generation_tokens_totalcounter delta over a timed run). Relative comparisons between configs are still valid; absolute numbers are not.2. vLLM's logger "Avg generation throughput" OVER-counts. The engine log line sums drafted + accepted speculative tokens, not real output. Drafts are proposals (often discarded), so the logger number is inflated. Verified: at the 368.9 peak,
Accepted throughput: 179.11 + Drafted throughput: 189.21 = 368.32. Any "400 tok/s" seen in vLLM logs is drafted+accepted, not real output.Corrected real throughput (spec-tokens 1, 2x RTX 3090 TP=2, current config):
Takeaway: real output at 8 concurrent streams ≈ 340 tok/s, both GPUs at 98% util — that's the physical bandwidth wall for 18.6 GB weights / 1.87 TB/s HBM. To genuinely exceed it needs lower-bit weights or more bandwidth, not config. The spec-tokens 1 win (+107% single-stream over no-spec) and the OOM findings are unaffected by this correction — those were relative/behavioral, not absolute-throughput claims.
Measurement method that works: read
vllm:generation_tokens_totalfrom /metrics, run the load, read it again, divide by wall time. Trust that over word-counting or the logger's generation line.