Qwen-3.5-28B-A3B-REAP:基于 REAP 技术的 MoE 模型剪枝项目

可用于减少 Qwen3.5-35B-A3B 模型的显存占用并保持性能,该项目通过 REAP 方法对 MoE 模型进行 20% 专家剪枝,保留 205 个专家,在标准基准测试中保持竞争力,同时降低显存需求。【此简介由AI生成】

分支1Tags0

language:

  • en license: apache-2.0 base_model: Qwen/Qwen3.5-35B-A3B tags:
  • moe
  • pruning
  • reap
  • qwen3
  • expert-pruning model-index:
  • name: Qwen3.5-35B-A3B-REAP-20pct results:
    • task: type: text-generation dataset: name: HumanEval type: openai_humaneval metrics:
      • type: pass@1 value: 0.732 name: pass@1
    • task: type: text-generation dataset: name: HumanEval+ type: evalplus metrics:
      • type: pass@1 value: 0.701 name: pass@1
    • task: type: text-generation dataset: name: MMLU type: cais/mmlu metrics:
      • type: acc value: 0.809 name: accuracy

Qwen3.5-35B-A3B — REAP 20% 专家剪枝

这是 Qwen/Qwen3.5-35B-A3B20% 专家剪枝版本,采用论文《REAP the Experts: Why Pruning Prevails for One-Shot MoE Compression》(ICLR 2026)中提出的 REAP(基于路由权重的专家激活剪枝) 方法生成。

该模型保留了256 个专家中的 205 个(约为原始专家数量的 80%),同时在标准基准测试中保持竞争力。


我们的工作

方法:REAP 逐层剪枝

REAP 通过结合以下因素对每个专家的重要性进行评分,从而剪枝 MoE 专家:

  1. 路由门控值——路由选择每个专家的频率和强度
  2. 专家激活范数——每个专家输出贡献的大小

剪枝后,路由 logit 权重会重新归一化以确保总和为 1(这对于维持输出规模至关重要)。剪枝以逐层方式进行(逐层模式)。

校准数据

观察数据是在混合校准数据集上收集的,每个类别包含 1000 个样本:

  • theblackcat102/evol-codealpaca-v1(250 个样本)
  • open-r1/Mixture-of-Thoughts[code](250 个样本)
  • open-r1/Mixture-of-Thoughts[math](250 个样本)
  • open-r1/Mixture-of-Thoughts[science](250 个样本)

最大序列长度:4096 个 token。专家相似度采用角距离度量。

剪枝配置

参数
压缩率 20%(移除 51 个专家)
原始专家数量 256
剩余专家数量 205
剪枝方法 REAP
路由权重重归一化
随机种子 42
校准样本数 共 1000 个

基准测试结果

所有评估均使用 vLLM(在 8 张 RTX 3090 上进行张量并行)、贪婪解码、零样本设置。

代码(EvalPlus,贪婪解码,零样本)

基准测试 原始模型 剪枝模型(20%) 差异
HumanEval(pass@1) 76.2% 73.2% -3.0%
HumanEval+(pass@1) 72.0% 70.1% -1.9%

多项选择/推理(lm-eval,零样本,250样本/任务)

基准测试 原始模型 剪枝模型(20%) 差异
MMLU 84.34% 80.89% -3.45%
MMLU - 人文科学 82.40% 76.35% -6.05%
MMLU - 社会科学 90.04% 88.38% -1.66%
MMLU - 理工科(STEM) 81.46% 78.88% -2.58%
MMLU - 其他 84.52% 81.05% -3.47%
ARC-Challenge 60.00% 60.40% +0.40%
ARC-Easy 84.00% 83.20% -0.80%
BoolQ 88.00% 89.20% +1.20%
HellaSwag(标准化) 76.40% 75.60% -0.80%
OpenBookQA(标准化) 45.20% 47.20% +2.00%
RTE 81.20% 82.00% +0.80%
WinoGrande 77.20% 76.80% -0.40%

困惑度(WikiText-2,10k tokens,llama.cpp)

模型 困惑度(PPL)
原始模型(256个专家) 6.83
剪枝20%模型(205个专家) 9.51

吞吐量(4×RTX 3090,TP=4,vLLM,enforce_eager)

批处理大小 原始模型(tokens/秒) 剪枝模型(tokens/秒) 加速比
1 12.3 12.5 1.02倍
4 37.0 36.0 0.97倍
8 74.4 70.3 0.95倍
16 89.3 86.0 0.96倍

注:在当前vLLM路由开销下,此压缩级别下的吞吐量加速效果微乎其微。主要优势在于减少了VRAM占用。


内存占用

模型 大小 分片
原始模型 ~71 GB(bf16) 14个safetensors文件
剪枝20%模型 ~53 GB(bf16) 2个safetensors文件

使用方法

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "0xSero/Qwen3.5-35B-A3B-REAP-20pct"

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype="auto",
    device_map="auto",
)

messages = [{"role": "user", "content": "Write a quicksort in Python."}]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=512)
print(tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True))

使用 vLLM:

vllm serve 0xSero/Qwen3.5-35B-A3B-REAP-20pct \
    --tensor-parallel-size 4 \
    --gpu-memory-utilization 0.9 \
    --max-model-len 32768

复现

git clone https://github.com/cerebras/reap
cd reap
bash scripts/build.sh

python -m reap.layerwise_prune \
    --model_name Qwen/Qwen3.5-35B-A3B \
    --dataset_name "theblackcat102/evol-codealpaca-v1:250,open-r1/Mixture-of-Thoughts[code]:250,open-r1/Mixture-of-Thoughts[math]:250,open-r1/Mixture-of-Thoughts[science]:250" \
    --compression_ratio 0.20 \
    --prune_method reap \
    --seed 42 \
    --renormalize_router_weights true

引用

@inproceedings{lasby2025reap,
  title={REAP the Experts: Why Pruning Prevails for One-Shot MoE Compression},
  author={Lasby, Mike and others},
  booktitle={ICLR 2026},
  year={2026}
}

项目介绍

可用于减少 Qwen3.5-35B-A3B 模型的显存占用并保持性能,该项目通过 REAP 方法对 MoE 模型进行 20% 专家剪枝,保留 205 个专家,在标准基准测试中保持竞争力,同时降低显存需求。【此简介由AI生成】

定制我的领域

下载使用量

0

项目总下载次数(含Clone、Pull、 zip 包及 release 下载),每日凌晨更新

语言类型

Jinja100%