sakamakismile commited on
Commit
257c4c7
·
verified ·
1 Parent(s): 12761b7

README: n=3 spec recommended (132/105/106 tok/s); document mtp.fc bf16 = Lorbus trick

Browse files
Files changed (1) hide show
  1. README.md +19 -2
README.md CHANGED
@@ -73,11 +73,13 @@ vllm serve sakamakismile/Qwen3.6-27B-Text-NVFP4-MTP \
73
  --trust-remote-code \
74
  --gpu-memory-utilization 0.85 \
75
  --max-model-len 8192 \
 
76
  --quantization modelopt \
77
- --speculative-config '{"method":"qwen3_5_mtp","num_speculative_tokens":1}'
 
78
  ```
79
 
80
- `num_speculative_tokens: 1` because the model has a single MTP layer (`mtp_num_hidden_layers=1`). The `qwen3_5_mtp` method handler is what vLLM uses for the Qwen3.5/3.6 family (internal `model_type: qwen3_5`); plain `mtp` also works as a fallback.
81
 
82
  ### Without speculation
83
 
@@ -86,9 +88,24 @@ vllm serve sakamakismile/Qwen3.6-27B-Text-NVFP4-MTP \
86
  --trust-remote-code \
87
  --gpu-memory-utilization 0.85 \
88
  --max-model-len 8192 \
 
89
  --quantization modelopt
90
  ```
91
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  ## Hardware target
93
 
94
  Built and tested on **NVIDIA RTX PRO 6000 Blackwell (SM120)**. Should also work on **RTX 5090** and other Blackwell consumer/workstation cards with sufficient VRAM (the model is roughly 14 GB after NVFP4 + ~850 MB of bf16 MTP/conv1d/lm_head).
 
73
  --trust-remote-code \
74
  --gpu-memory-utilization 0.85 \
75
  --max-model-len 8192 \
76
+ --language-model-only \
77
  --quantization modelopt \
78
+ --reasoning-parser qwen3 \
79
+ --speculative-config '{"method":"qwen3_5_mtp","num_speculative_tokens":3}'
80
  ```
81
 
82
+ `num_speculative_tokens: 3` is the **recommended setting** even though the model has a single MTP layer (`mtp_num_hidden_layers=1`): vLLM applies that one layer recursively three times per draft pass, and on Qwen3.5/3.6-family models the per-position acceptance rates stay high enough (typically ~87 / ~72 / ~61 % at positions 1 / 2 / 3) that mean accepted-length lands around 3.0 — which is what unlocks 100+ tok/s on a single Blackwell card. `num_speculative_tokens: 1` (the value originally documented for this family) is a safer fallback if you hit a draft-path bug. The `qwen3_5_mtp` method handler is what vLLM uses for the Qwen3.5/3.6 family (internal `model_type: qwen3_5`); plain `mtp` also works as a fallback.
83
 
84
  ### Without speculation
85
 
 
88
  --trust-remote-code \
89
  --gpu-memory-utilization 0.85 \
90
  --max-model-len 8192 \
91
+ --language-model-only \
92
  --quantization modelopt
93
  ```
94
 
95
+ ## Verified throughput
96
+
97
+ Single-request decode, T = 0, 9 runs across 3 prompt lengths on 1 × RTX PRO 6000 Blackwell, vLLM 0.19.1rc1:
98
+
99
+ | Prompt | Tokens | n=1 tok/s | **n=3 tok/s** |
100
+ |---|---|---|---|
101
+ | Short (50 tok) | 50 | ~71 | **132.5** |
102
+ | Medium (350 tok) | 350 | ~85 | **105.5** |
103
+ | Long-form (700 tok) | 700 | ~85 | **106.5** |
104
+
105
+ GPU memory at load: ~15 GB. Mean acceptance length 1.93 / 2.0 at n=1, ~3.0 / 4.0 at n=3 (per-position accept ~87 / 72 / 61 %, matches Pulsate1680's RTX PRO 4500 Blackwell result on this same checkpoint).
106
+
107
+ The `mtp.fc` weight is kept in **bf16** in the safetensors (not NVFP4) — equivalent to the Lorbus-style "dequantize the fusion layer in the file" trick, applied to NVFP4 instead of AutoRound. This is a side effect of the `*mtp*` ignore entry in the modelopt config, but it is the load-bearing detail behind the n=3 throughput.
108
+
109
  ## Hardware target
110
 
111
  Built and tested on **NVIDIA RTX PRO 6000 Blackwell (SM120)**. Should also work on **RTX 5090** and other Blackwell consumer/workstation cards with sufficient VRAM (the model is roughly 14 GB after NVFP4 + ~850 MB of bf16 MTP/conv1d/lm_head).