intel-ai/Qwen3.6-35B-A3B-MXFP8-FP8KV-CT-AutoRound

Source: 🤗image-text-to-textapache-2.02.9B params3B activated40 GBsafetensors✓ 10 checksumsupdated 2d ago
or submit a torrent

Qwen3.6-35B-A3B-MXFP8-FP8KV-CT-AutoRound

An MXFP8 checkpoint of Qwen3.6-35B-A3B, with FP8 KV-cache support.

Model Details

Field Value
Base model Qwen/Qwen3.6-35B-A3B
Architecture Qwen3_5MoeForConditionalGeneration
Hugging Face task Image-text-to-text
Weight format MXFP8 routed-expert weights; BF16 for the other model weights, with checkpoint-native dtypes for scale and auxiliary tensors
KV cache Static FP8; enable it with --kv-cache-dtype fp8 when serving
Configured maximum positions 262,144 tokens
Tested serving context limit 131,072 tokens
License Apache-2.0; see LICENSE

The routed-expert weights use E4M3 with a group size of 32. The export stores their group scales in U8 tensors. Attention, linear-attention, shared-expert, router, vision, embedding, language-model-head, and MTP weights are retained at BF16 where applicable; FP32 scale and auxiliary tensors retain their checkpoint dtypes.

Quantization Recipe

Scope and settings

This recipe converts the fused routed-expert weights to MXFP8 using RTN with zero optimization iterations, and writes static FP8 KV-cache metadata. It leaves the following module families out of weight quantization: lm_head, embed_tokens, visual, linear_attn, shared_expert, self_attn, mtp, and mlp.gate. Fused routed experts are handled by the model's MoE export path.

The command below reproduces the settings used for this checkpoint. Replace the input and output paths with paths available on your host. The example assigns three visible GPUs; change CUDA_VISIBLE_DEVICES and --device_map together to match the devices allocated to the process.

export CUDA_VISIBLE_DEVICES=0,1,2

auto-round \
  --model_name /path/to/Qwen3.6-35B-A3B \
  --scheme MXFP8 \
  --algorithm rtn \
  --iters 0 \
  --static_kv_dtype fp8 \
  --ignore_layers lm_head,embed_tokens,visual,linear_attn,shared_expert,self_attn,mtp,mlp.gate \
  --device_map 0,1,2 \
  --format llm_compressor \
  --output_dir /path/to/output \
  --disable_low_cpu_mem_usage
Option Setting Purpose
--scheme MXFP8 Use MXFP8 for the routed-expert weights
--algorithm rtn Use round-to-nearest quantization
--iters 0 Run with zero optimization iterations
--static_kv_dtype fp8 Export static FP8 KV-cache metadata and scales
--ignore_layers See the command above Preserve the listed sensitive module families at their original precision
--device_map 0,1,2 Place the quantization workload on the three visible devices
--format llm_compressor Write a compressed-tensors-compatible checkpoint
--disable_low_cpu_mem_usage enabled Disable the low-CPU-memory loading path

Export checks

Before serving a new export, verify the safetensors index against the shard headers and inspect the actual tensor dtypes. This checkpoint contains 63,191 indexed tensor keys with no index/header mismatch. Its routed experts comprise 30,720 F8_E4M3 weight tensors and 30,720 U8 scale tensors; the remaining indexed tensors are BF16 or FP32. The published snapshot is approximately 40.73 GB across 20 files.

For this run, the tested toolchain was AutoRound 0.16.0.dev193+g22d6e28c, PyTorch 2.13.0+cu130, Transformers 5.17.0, vLLM 0.29.0, and lm-evaluation-harness 0.4.13.

Inference Recipe

The command below was validated on one host with four GPUs, using tensor parallelism, data parallelism, expert parallelism, and FP8 KV cache:

export CUDA_VISIBLE_DEVICES=0,1,2,3

vllm serve intel-ai/Qwen3.6-35B-A3B-MXFP8-FP8KV-CT-AutoRound \
  --tokenizer Qwen/Qwen3.6-35B-A3B \
  --host 127.0.0.1 \
  --port 8000 \
  --trust-remote-code \
  --dtype bfloat16 \
  --max-model-len 131072 \
  --tensor-parallel-size 2 \
  --data-parallel-size 2 \
  --data-parallel-size-local 2 \
  --enable-expert-parallel \
  --kv-cache-dtype fp8 \
  --max-num-seqs 32 \
  --max-num-batched-tokens 8192 \
  --gpu-memory-utilization 0.90

Adjust the parallel topology, visible devices, memory utilization, and context limit to fit the available hardware. The example reflects the tested serving configuration; it is not a requirement to use four GPUs for every deployment.

Evaluation Recipe

The benchmark results below were measured with the repository-defined GSM8K, PIQA, MMLU, and HellaSwag tasks, batch size 32, seed 42, and a 131,072-token client-side length limit. Start the inference server above before running the commands.

For GSM8K, use the following generation settings. The end-of-turn token is the stop condition so that a Question: string inside a thinking trace does not prematurely stop generation.

lm_eval \
  --model local-completions \
  --model_args "model=intel-ai/Qwen3.6-35B-A3B-MXFP8-FP8KV-CT-AutoRound,tokenizer=Qwen/Qwen3.6-35B-A3B,tokenizer_backend=huggingface,base_url=http://127.0.0.1:8000/v1/completions,tokenized_requests=True,num_concurrent=1,max_retries=50,timeout=500,max_length=131072,max_gen_toks=2048" \
  --tasks gsm8k \
  --batch_size 32 \
  --output_path ./results/gsm8k \
  --log_samples \
  --seed 42 \
  --num_fewshot 5 \
  --apply_chat_template \
  --fewshot_as_multiturn \
  --gen_kwargs 'max_gen_toks=2048,until=<|im_end|>'

Run the three log-likelihood tasks with:

lm_eval \
  --model local-completions \
  --model_args "model=intel-ai/Qwen3.6-35B-A3B-MXFP8-FP8KV-CT-AutoRound,tokenizer=Qwen/Qwen3.6-35B-A3B,tokenizer_backend=huggingface,base_url=http://127.0.0.1:8000/v1/completions,tokenized_requests=True,num_concurrent=1,max_retries=50,timeout=500,max_length=131072,max_gen_toks=2048" \
  --tasks piqa,mmlu,hellaswag \
  --batch_size 32 \
  --output_path ./results/piqa_mmlu_hellaswag \
  --log_samples \
  --seed 42

Benchmark Results

All scores are shown as percentages to two decimal places. Accuracy retained is calculated from the unrounded scores as quantized_model_score / original_model_score * 100%. Relative change is calculated as (quantized_model_score / original_model_score - 1) * 100%; it is a ratio-based relative change, not a percentage-point difference.

Benchmark / metric Original BF16 model This checkpoint Accuracy retained Relative change Samples
GSM8K (strict-match) 95.68% 95.75% 100.08% +0.08% 1,319
PIQA (accuracy) 82.37% 82.48% 100.13% +0.13% 1,838
MMLU (accuracy) 83.66% 83.78% 100.15% +0.15% 14,042
HellaSwag (accuracy) 63.49% 63.33% 99.75% -0.25% 10,042
Equal-weight mean of the four primary metrics 81.30% 81.34% 100.05% +0.05% —

The supplementary GSM8K flexible-extract score was 79.98% for the original model and 79.30% for this checkpoint, with 99.15% accuracy retained and a -0.85% relative change. The mean row uses the four primary metrics above, including GSM8K strict-match.

The original BF16 model used its default KV-cache dtype, while this checkpoint was evaluated with FP8 KV cache. The comparison therefore reflects the combined weight-format and KV-cache configuration; it does not isolate weight quantization from KV-cache effects. These four benchmarks are not a 128K long-context stress test.