Just out of curiosity I tested Qwen3.6-27B model with MTP speculative decoding with 6 draft tokens. Whole script looked like this:
docker run --rm --name="${2:-qwen3.6-medium-vllm}" \
--group-add=video \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
--device /dev/kfd \
--device /dev/dri \
-v /cache/huggingface:/root/.cache/huggingface \
-v /cache/vllm:/root/.cache/vllm \
--env "HF_TOKEN=$3" \
-e TORCH_ROCM_AOTRITON_ENABLE_EXPERIMENTAL=1 \
-e VLLM_ROCM_USE_AITER=1 \
-e FLASH_ATTENTION_TRITON_AMD_ENABLE=TRUE \
-p "${1:-8000}":8000 \
--ipc=host \
--entrypoint '/bin/sh' \
vllm/vllm-openai-rocm:nightly \
-c "pip install fastokens; vllm serve Lorbus/Qwen3.6-27B-int4-AutoRound \
--gpu-memory-utilization 0.48 \
--dtype half \
--optimization-level 1 \
--enable-prefix-caching \
--performance-mode interactivity \
--kv-cache-dtype fp8_e4m3 \
--language-model-only \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder \
--speculative-config '{ \"method\": \"mtp\", \"num_speculative_tokens\": 2}' \
--max-num-seqs 1 \
--tokenizer-mode fastokens \
--max-num-batched-tokens 262144 \
#--max-model-len 262144"
Those are results with vLLM bench tool: