Skip to main content

Qwen3.6-MTP

MTP speculative decoding tuner for Qwen3.6. Generates vLLM/SGLang configs, finds throughput crossover points, and catches known bugs.

What It Does

  • Configuration advisor: Recommends MTP on/off with parameters via a decision tree over use case, objective, and GPU
  • Backend configs: Generates vLLM (method: mtp) and SGLang (NEXTN algorithm) serve commands
  • Crossover analysis: Finds the batch size where MTP flips from net-positive to net-negative throughput
  • Bug detection: Detects and blocks known-broken configurations (TurboQuant + MTP, prefix cache degradation)
  • Benchmark sweep: Generate latency/throughput matrices across batch size, speculative tokens, and prefix cache settings

Installation

pip install qwen3.6-mtp

Quick Start

from qwen3_6_mtp import recommend, UseCase, Objective, Quantization

rec = recommend(
    use_case=UseCase.SINGLE_USER,
    objective=Objective.MINIMIZE_LATENCY,
    gpu_id="rtx-4090",
    quantization=Quantization.INT4,
)

print(rec.enable)           # True
print(rec.expected_gain)    # ~25-35% latency reduction (projected)
print(rec.vllm_command)     # Full vllm serve command with MTP flags
print(rec.sglang_command)   # Equivalent SGLang command

Crossover Analysis

from qwen3_6_mtp import quick_crossover

for s in quick_crossover(gpu_id="rtx-3090"):
    print(f"MTP-{s.spec_tokens}: crossover at batch {s.crossover_batch_size}, "
          f"best gain +{s.max_positive_delta_pct}%")

Backend Config Generation

from qwen3_6_mtp import vllm_mtp_command, sglang_mtp_command

vllm = vllm_mtp_command(model="Qwen/Qwen3.6-27B", num_speculative_tokens=2)
print(vllm.command)

sglang = sglang_mtp_command(model="Qwen/Qwen3.6-27B", num_speculative_tokens=2)
print(sglang.command)

Bug Detection

from qwen3_6_mtp import check_turboquant_conflict, check_prefix_cache_degradation

bug = check_turboquant_conflict(enable_turboquant=True, num_spec_tokens=2)
if bug:
    print(f"BLOCKED: {bug.title} ({bug.upstream_issue})")

Key Findings

Finding Detail
MTP decode speedup +27.5% faster decode TPOT at k=1 on RTX 3090 (with --no-enable-prefix-caching)
Prefix cache degradation L457 bug drops hit rate ~92% to ~71% when MTP is enabled (vLLM #38182, OPEN)
TurboQuant conflict TQ + MTP = degenerate token loops (vLLM #40831, CLOSED)
Crossover point MTP throughput gain shrinks with batch size; net-negative varies by spec tokens and prefix cache (see quick_crossover())
Sampling independence MTP is algorithmically lossless; does not constrain sampling parameters

Published Results

Pre-computed crossover analysis and benchmark sweep data live in results/:

  • crossover_summary.csv -- for each GPU and speculative token count: the batch size where MTP becomes net-negative and the peak throughput gain
  • benchmark_sweep.csv -- full matrix of latency, throughput, acceptance rate, and KV cache utilization across all GPUs, batch sizes (1-64), spec tokens (0-5), and prefix cache on/off

Regenerate with python results/generate_crossover.py.

Key crossover findings (Qwen3.6-27B, no prefix cache)

Spec tokens Crossover batch size Peak gain
MTP-1 no crossover (always positive) +24%
MTP-2 no crossover (always positive) +39%
MTP-3 no crossover (always positive) +42%
MTP-4 64 +36%
MTP-5 64 +24%

MTP-1 through MTP-3 remain net-positive across all batch sizes up to 64. MTP-4 and MTP-5 flip net-negative at batch size 64 due to KV cache pressure from draft token overhead. For most single-user and small-batch serving, MTP-2 or MTP-3 gives the best throughput lift.

Supported Models

Model Architecture MTP Layers Context
Qwen3.6-27B Dense (GDN + Gated Attention) 1 262K
Qwen3.6-35B-A3B MoE (GDN + Gated Attention) 1 262K

License

Apache 2.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qwen3_6_mtp-0.1.2.tar.gz (29.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qwen3_6_mtp-0.1.2-py3-none-any.whl (20.6 kB view details)

Uploaded Python 3

File details

Details for the file qwen3_6_mtp-0.1.2.tar.gz.

File metadata

  • Download URL: qwen3_6_mtp-0.1.2.tar.gz
  • Upload date:
  • Size: 29.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for qwen3_6_mtp-0.1.2.tar.gz
Algorithm Hash digest
SHA256 5df1a4f9849a37123320e8841a90cc907c115c9e049e61002a642d01cc7bd777
MD5 64bb26ebab04167f8640869d71b1b4eb
BLAKE2b-256 93e451de7b004dc042ce988413bdba777d7e67ff0e0c4fa78ce46c7e45977d25

See more details on using hashes here.

Provenance

The following attestation bundles were made for qwen3_6_mtp-0.1.2.tar.gz:

Publisher: publish.yml on ArkaD171717/Qwen3.6-MTP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file qwen3_6_mtp-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: qwen3_6_mtp-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 20.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for qwen3_6_mtp-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3ca2bdf81aa578363a5cceddfbdd593b5f30acfd5688c5c9a76031be042d9963
MD5 ae9b3787d68a51853baa6272a5841156
BLAKE2b-256 f541d5b074445a52ab48c2f34badd5a79cdde36242f8f2029e14f43abfa83e9f

See more details on using hashes here.

Provenance

The following attestation bundles were made for qwen3_6_mtp-0.1.2-py3-none-any.whl:

Publisher: publish.yml on ArkaD171717/Qwen3.6-MTP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page