Views
No views yet
NeelNanda/pile-10k calibration dataset. The same recipe used by 0xSero for the GLM-4.7-REAP-218B-A32B-W4A16 quantization.| Property | Value |
|---|---|
| Base Model | OpenMOSE/Qwen3.5-REAP-212B-A17B |
| Architecture | Mixture-of-Experts (MoE), REAP-pruned |
| Total Parameters | 212B |
| Active Parameters | 17B per forward pass |
| Quantization | INT4 weights, FP16 activations (W4A16) |
| Group Size | 128 |
| Calibration Dataset | NeelNanda/pile-10k |
| Calibration Samples | 64 |
| Sequence Length | 512 |
| Format | AutoRound |
| Quantization Tool | Intel AutoRound |
AutoRound Config:
bits: 4
group_size: 128
format: auto_round
nsamples: 64
seqlen: 512
batch_size: 1
dataset: NeelNanda/pile-10kmlp.shared_expert_gate — the MoE router. Router weights determine which experts activate for a given token, and quantizing them would be like compressing the traffic signals at an intersection. You want the routing decisions to stay precise even if the experts themselves are operating at reduced precision.1from auto_round import AutoRound
2from transformers import AutoModelForCausalLM, AutoTokenizer
3
4model = AutoModelForCausalLM.from_pretrained(
5 "OpenMOSE/Qwen3.5-REAP-212B-A17B",
6 torch_dtype=torch.bfloat16,
7 device_map="auto",
8 trust_remote_code=True,
9)
10tokenizer = AutoTokenizer.from_pretrained(
11 "OpenMOSE/Qwen3.5-REAP-212B-A17B",
12 trust_remote_code=True,
13)
14
15ar = AutoRound(
16 model,
17 tokenizer=tokenizer,
18 device="cuda",
19 nsamples=64,
20 seqlen=512,
21 batch_size=1,
22)
23ar.quantize_and_save("./Qwen3.5-REAP-212B-A17B-W4A16", format="auto_round")transformers>=5.0 (which you need for Qwen 3.5's qwen3_5_moe architecture), you'll hit two issues that require monkey-patching before the imports above:pytorch_utils.Conv1D, which AutoRound still references at import time:1import types, torch, transformers
2
3if not hasattr(transformers, 'pytorch_utils'):
4 pytorch_utils = types.ModuleType('pytorch_utils')
5 pytorch_utils.Conv1D = torch.nn.Linear
6 transformers.pytorch_utils = pytorch_utilsnn.Linear layers throughout, so AutoRound will never actually invoke it. We're just satisfying the import.1import auto_round.utils
2import auto_round.autoround
3
4auto_round.utils.is_mllm_model = lambda *args, **kwargs: False
5auto_round.autoround.is_mllm_model = lambda *args, **kwargs: Falsefrom auto_round import AutoRound.| Stage | Time |
|---|---|
| Weight loading | ~51 seconds |
| Calibration caching | ~4 minutes |
| Quantization (60 blocks) | ~4.5 hours |
| Total | ~5 hours |
device_map="auto".1vllm serve Qwen3.5-REAP-212B-A17B-W4A16 \
2 --tensor-parallel-size 4 \
3 --trust-remote-code \
4 --quantization gptq1@article{jones2025reap,
2 title={REAP: Router-Experts Activation Pruning for Efficient Mixture-of-Experts},
3 author={Jones, et al.},
4 journal={arXiv preprint arXiv:2510.13999},
5 year={2025}
6}
7
8@misc{autoround2024,
9 title={AutoRound: Advanced Weight Quantization},
10 author={Intel Corporation},
11 year={2024},
12 howpublished={\url{https://github.com/intel/auto-round}}
13}