Views
No views yet
Qwen/Qwen3.6-27B, produced with Intel's AutoRound.Key difference from the standard AutoRound quant: This variant was calibrated on a normalized and sampled subset of nvidia/OpenCodeInstruct — a ~5 M sample, execution-verified coding dataset — instead of the default general-purpose pile corpus. Calibrating on domain-specific data guides AutoRound's weight-rounding optimization to minimize quantization error on the token distributions that matter most for code, improving accuracy on code generation, reasoning, and instruction-following for programming tasks. Theauto-round-bestpreset was used (1000 iterations, 512 calibration samples), which runs ~4–5× slower than the standard recipe but achieves the best possible INT4 accuracy. MTP (speculative decoding) and image/vision inputs work out of the box with no post-processing required.
auto-round-best (1000 iters, 512 samples, torch.compile)nvidia/OpenCodeInstruct (coding domain)nvidia/OpenCodeInstruct — a large, execution-verified dataset of coding problems and solutions — means the rounding decisions are tuned for code-style token distributions: identifiers, keywords, indentation patterns, and structured reasoning. In practice this tends to:Qwen3.6-27B-int4-AutoRound quant.1export VLLM_USE_FLASHINFER_SAMPLER=1
2export VLLM_ALLOW_LONG_MAX_MODEL_LEN=1
3export VLLM_FLOAT32_MATMUL_PRECISION=high
4export PYTORCH_CUDA_ALLOC_CONF="expandable_segments:True,max_split_size_mb:512"
5export VLLM_NO_USAGE_STATS=1
6export VLLM_MEMORY_PROFILER_ESTIMATE_CUDAGRAPHS=1
7export VLLM_MARLIN_USE_ATOMIC_ADD=1
8export OMP_NUM_THREADS=1
9export CUDA_DEVICE_MAX_CONNECTIONS=8
10export NCCL_CUMEM_ENABLE=0
11export NCCL_P2P_DISABLE=11vllm serve webhie/Qwen3.6-27B-int4-AutoRound-Code \
2 --served-model-name qwen3.6-27b \
3 --host 0.0.0.0 --port 11434 \
4 --trust-remote-code \
5 --dtype auto \
6 --quantization auto_round \
7 --max-model-len 200704 \
8 --gpu-memory-utilization 0.92 \
9 --max-num-seqs 4 \
10 --kv-cache-dtype fp8_e4m3 \
11 --attention-backend flashinfer \
12 --performance-mode throughput \
13 --max-num-batched-tokens 2048 \
14 --enable-chunked-prefill \
15 --enable-auto-tool-choice \
16 --tool-call-parser qwen3_coder \
17 --reasoning-parser qwen3 \
18 --default-chat-template-kwargs '{"preserve_thinking":true}' \
19 --override-generation-config '{"temperature":0.6,"top_p":0.95,"top_k":20,"min_p":0.0,"presence_penalty":0.0,"repetition_penalty":1.0}' \
20 --enable-prompt-tokens-details \
21 --speculative-config '{"method":"mtp","num_speculative_tokens":3}'--speculative-config to disable MTP speculative decoding. See the vllm-blackwell-guide repo for a full Docker Compose setup with all env vars pre-configured.1from openai import OpenAI
2client = OpenAI(base_url="http://localhost:11434/v1", api_key="EMPTY")
3r = client.chat.completions.create(
4 model="qwen3.6-27b",
5 messages=[{"role": "user", "content": "Write a quicksort in Python."}],
6 max_tokens=512,
7)
8print(r.choices[0].message.content)1from transformers import AutoModelForCausalLM, AutoTokenizer
2m = AutoModelForCausalLM.from_pretrained(
3 "webhie/Qwen3.6-27B-int4-AutoRound-Code",
4 trust_remote_code=True,
5 device_map="auto",
6)
7tok = AutoTokenizer.from_pretrained("webhie/Qwen3.6-27B-int4-AutoRound-Code")
8msg = [{"role": "user", "content": "Write a binary search in Python."}]
9ids = tok.apply_chat_template(msg, add_generation_prompt=True, return_tensors="pt").to(m.device)
10print(tok.decode(m.generate(ids, max_new_tokens=256)[0]))| Field | Value |
|---|---|
| Base | Qwen/Qwen3.6-27B |
| Method | AutoRound (intel/auto-round), best recipe |
| Scheme | W4A16 (4-bit weights, FP16 activations) |
| Bits | 4 |
| Group size | 128 |
| Symmetric | yes |
| Packing format | auto_round:auto_gptq |
| Unquantized layers | linear_attn.in_proj_a/b, all LayerNorms, RMSNorms, router gates |
| Calibration dataset | Normalized & sampled subset of nvidia/OpenCodeInstruct |
| Calibration samples | 512 |
| Iterations | 1000 |
| torch.compile | enabled |
| GPU used for quant | 1× RTX 5090 (32 GB, SM120), low_gpu_mem_usage=True |
linear_attn.in_proj_a/b: low-rank projections in Qwen3.6's Gated DeltaNet whose shapes aren't divisible by 32 (group_size), so AutoRound skips them automatically. Tiny fraction of total parameters.| Config | Throughput |
|---|---|
| vLLM + MTP n=3 | ~150 tok/s |
| vLLM (MTP disabled) | ~70 tok/s |
num_speculative_tokens: 3.1pip install auto-round
2
3# The calibration data was first normalized and sampled from nvidia/OpenCodeInstruct
4# (formatting cleaned, deduplicated, balanced across domains) and exported as a
5# local JSON file before quantization. Pass your own prepared subset with:
6# --dataset ./subset_10k.json
7
8auto-round-best \
9 --model Qwen/Qwen3.6-27B \
10 --scheme W4A16 \
11 --format auto_round \
12 --output_dir Qwen3.6-27B-int4-AutoRound-Code \
13 --enable_torch_compile \
14 --low_gpu_mem_usage \
15 --device_map 0auto-round-best recipe1@article{cheng2023autoround,
2 title = {Optimize Weight Rounding via Signed Gradient Descent for the Quantization of LLMs},
3 author = {Cheng, Wenhua and Zhang, Weiwei and Shen, Haihao and Cai, Yiyang and He, Xin and Lv, Kaokao and Liu, Yi},
4 journal = {arXiv preprint arXiv:2309.05516},
5 year = {2023}
6}
7
8@misc{nvidia2025opencode,
9 title = {OpenCodeInstruct: A Large-scale Instruction Tuning Dataset for Code LLMs},
10 author = {NVIDIA},
11 year = {2025},
12 url = {https://huggingface.co/datasets/nvidia/OpenCodeInstruct}
13}