Views
No views yet
1pip install vllm>=0.20.2
2pip install 'turboquant-plus-vllm@git+https://github.com/varjoranta/turboquant-vllm.git'1vllm serve varjosoft/Qwen3.6-35B-A3B-TQ3-native \
2 --quantization turboquant \
3 --trust-remote-code \
4 --max-model-len 40961from vllm import LLM, SamplingParams
2
3llm = LLM(
4 model="varjosoft/Qwen3.6-35B-A3B-TQ3-native",
5 quantization="turboquant",
6 trust_remote_code=True,
7 max_model_len=4096,
8)
9out = llm.generate(["Explain quantum entanglement in one paragraph."],
10 SamplingParams(temperature=0, max_tokens=200))
11print(out[0].outputs[0].text)| Metric | Value |
|---|---|
| Checkpoint size | ~16 GB (vs ~70 GB BF16) |
| Compression ratio | 4.4× |
| Throughput, CUDA graphs ON | 16.0 tok/s at bs=1 (reproduced across 4 runs: 16.02 / 15.94 / 15.88 / 16.0) |
| Throughput, eager mode | 9.81 tok/s at bs=1 |
| GSM8K-200 (5-shot CoT) | eval workflow exceeds the validation harness's polling window; standalone eval to follow |
| Load time | ~10 min from cold (includes vLLM init + kernel compile) |
| Minimum GPU | A100 80GB tested. RTX PRO 6000 Blackwell 96GB also validated end-to-end |
max_tokens=128):"Q: Explain quantum entanglement in one short paragraph. A: Here's a thinking process: 1. Analyze User Input: Topic: Quantum entanglement, Format: ..."
model-0000{1..4}-of-00004.safetensors: packed 3-bit weight indices (.tq_packed) + per-group norms (.tq_norms) for all 41 MoE layers (pre-fused per layer as experts.gate_up_proj.tq_* and experts.down_proj.tq_*) and the 64 attention layers; FP16 for embeddings, RMSNorms, biases, GatedDeltaNet conv1d/A_log/dt_bias.tq_config.json: {"bits": 3, "group_size": 128, "format": "tq3_native"}.config.json, chat_template.jinja, tokenizer.json, tokenizer_config.json, preprocessor_config.json, generation_config.json: standard HuggingFace artifacts.1from turboquant_vllm.checkpoint import save_tq3_checkpoint
2
3save_tq3_checkpoint("Qwen/Qwen3.6-35B-A3B", "./qwen3.6-35b-tq3", bits=3)
4# CPU only, ~80 GB RAM during compression, ~10 minutes. No GPU needed.gate_up_proj = gate+up stacked, down_proj = down across all experts) — the v0.13.5 plugin loader detects this layout and skips the per-expert regroup.Qwen3_5MoeForConditionalGeneration exposes hf_to_vllm_mapper that rewrites model.language_model.* → language_model.model.*. v0.13.5 applies the mapper before regroup target lookup..experts.gate_up_proj.tq_packed (no per-expert index, no .weight suffix). v0.13.5's _NATIVE_MOE_PRE_FUSED_PATTERN detects this and yields directly to the placeholder param names (w13_weight_tq_packed / w2_weight_tq_packed).partial_rotary_factor=0.25) — uses the block-diagonal WHT CUDA kernel from v0.13.0 to dequant the rotary projections without falling back to Python.original_norm / reconstruction_norm per group to fix magnitude shrinkage at 3-bit.1@inproceedings{zandieh2026turboquant,
2 title={TurboQuant: Online Vector Quantization with Near-optimal Distortion Rate},
3 author={Zandieh, Amir and Daliri, Majid and Hadian, Majid and Mirrokni, Vahab},
4 booktitle={International Conference on Learning Representations},
5 year={2026}
6}