Files
Qwen3-30B-A3B-Instruct-2507…/README.md

87 lines
4.2 KiB
Markdown
Raw Normal View History

---
library_name: transformers
tags:
- compression
- expert-merging
- moe
license: apache-2.0
base_model:
- Qwen/Qwen3-30B-A3B-Instruct-2507
---
arXiv: [REAM: Merging Improves Pruning of Experts in LLMs](https://arxiv.org/abs/2604.04356)
# Qwen3-30B-A3B-Instruct-2507-REAM
This model is a compressed version of [Qwen/Qwen3-30B-A3B-Instruct-2507](https://huggingface.co/Qwen/Qwen3-30B-A3B-Instruct-2507).
It is obtained by reducing the number of experts in each MoE layer from 128 to 96.
This reduction is achieved by the REAM method described in https://bknyaz.github.io/blog/2026/moe/.
The compressed model has 23B params (44GB) instead of 31B (57GB) of the original model,
reducing storage and GPU memory requirements by roughly 25%. At the same time,
the model retains >=94% of the original model's performance on a variety of benchmarks (see Evaluation section below).
Additional efficiency optimization (e.g., quantization) can be added similarly to the original model.
## Model Details
The model is exactly the same as Qwen/Qwen3-30B-A3B-Instruct-2507 except that number of experts is reduced from 128 to 96.
## Evaluation
Model is evaluated using https://github.com/EleutherAI/lm-evaluation-harness/ except for LiveCodeBench, which is evaluated using https://github.com/LiveCodeBench/LiveCodeBench.
The following versions were used for eval:
- python >= 3.10
- torch : 2.7.1+cu126
- lm_eval : 0.4.9.1
- vllm : 0.10.1.1
- transformers : 4.57.1
- datasets : 3.2.0
- numpy : 1.26.4
For tasks IFEval, AIME25, GSM8K and HumanEval the following command was used for eval on 4xNVIDIA H100:
`python -m lm_eval --model vllm --model_args pretrained=${model},tensor_parallel_size=4,dtype=auto,gpu_memory_utilization=0.9,data_parallel_size=1,max_model_len=131072 --tasks ${task} --batch_size 1 --apply_chat_template=True --confirm_run_unsafe_code`
For HumanEval, we use `--task=humaneval_instruct`.
For GPQA-Diamond, we add flags: `--num_fewshot 5 --fewshot_as_multiturn` and set `--task=gpqa_diamond_n_shot`.
For LiveCodeBench, we evaluate using:
`python -m lcb_runner.runner.main --model Qwen/Qwen3-30B-A3B-Instruct-2507 --scenario codegeneration --evaluate --local_model_path ${model} --release_version release_v6`
For multi-choice question answering tasks (Winogrande, ARC-C, ARC-E, BoolQ, HellaSwag, MMLU, OpenBookQA, RTE),
we evaluate using lm_eval on a single GPU with a batch size equal 16.
Other parameters are set to default.
### Metrics
We report the metric from the first row printed by lm_eval.
For example, for IFEval, we report inst_level_loose_acc=0.8921 given the lm_eval's output:
|Tasks |Version|Filter|n-shot| Metric | |Value | |Stderr|
|------|------:|------|-----:|-----------------------|---|-----:|---|------|
|ifeval| 4|none | 0|inst_level_loose_acc |↑ |0.8921|± | N/A|
| | |none | 0|inst_level_strict_acc |↑ |0.8585|± | N/A|
| | |none | 0|prompt_level_loose_acc |↑ |0.8373|± |0.0159|
| | |none | 0|prompt_level_strict_acc|↑ |0.7930|± |0.0174|
### Results
| Model | Winogrande | ARC-C | ARC-E | BoolQ | HellaSwag | MMLU | OpenBookQA | RTE | AVG |
|----------------------------------|------------|-------|-------|-------|-----------|------|------------|------|------|
| Qwen3-30B-A3B-Instruct-2507 | 73.2 | 60.7 | 85.1 | 88.7 | 61.2 | 80.1 | 32.4 | 76.5 | 69.7 |
| Qwen3-30B-A3B-Instruct-2507-REAM | 71.8 | 51.9 | 79.1 | 88.5 | 57.6 | 70.1 | 30.0 | 77.6 | 65.8 |
| Model | IFeval | AIME25 | GSM8K | GPQA-D | HumanEval | LiveCodeBench | AVG |
|----------------------------------|--------|--------|-------|--------|-----------|---------------|-------|
| Qwen3-30B-A3B-Instruct-2507 | 90.4 | 56.7 | 89.3 | 47.0 | 93.3 | 48.6 | 70.9 |
| Qwen3-30B-A3B-Instruct-2507-REAM | 89.2 | 66.7 | 88.1 | 38.9 | 86.6 | 36.9 | 67.7 |
## License
Please refer to the license of the original model [Qwen/Qwen3-30B-A3B-Instruct-2507](https://huggingface.co/Qwen/Qwen3-30B-A3B-Instruct-2507).