使用**Cerebras REAP(基于路由权重的专家激活剪枝)对google/gemma-4-26b-a4b-it进行20%专家剪枝**的版本。
| 原始模型 | 本模型(0.20) | 0.30 变体 | |
|---|---|---|---|
| 总参数 | ~260亿 | 213.4亿 | 190.2亿 |
| 每 layer 专家数 | 128 | 103 | 90 |
| 每 token 激活参数 | ~40亿 | ~40亿 | ~40亿 |
| 每 token 专家数 | 8 | 8 | 8 |
| 格式 | BF16 | BF16 | BF16 |
| 磁盘大小 | ~52 GB | ~43 GB | ~36 GB |
REAP 移除了 20% 的 MoE 专家(每层 128 个专家中移除 25 个),同时保留了模型的路由行为。由于路由仍从剩余专家池中为每个 token 选择 8 个专家,因此每 token 的激活参数数量保持不变。这使得总磁盘/内存占用减少约 18%。
我们在精心挑选的校准数据集上运行完整的 Gemma 4 26B-A4B-it 模型,以记录专家激活模式。观察钩子捕获所有校准 token 在每一层的路由门控值、专家激活范数和路由频率。
校准数据集:22,000 个样本,来源于 12 个数据源,涵盖编码、推理、数学、科学、工具调用和智能体任务:
| 类别 | 样本数 | 源数据集 |
|---|---|---|
| 通用编码 | 1,000 | theblackcat102/evol-codealpaca-v1 |
| 补充编码 | 1,636 | theblackcat102/evol-codealpaca-v1 |
| 推理 - 代码 | 3,480 | open-r1/Mixture-of-Thoughts[code] |
| 推理 - 数学 | 3,578 | open-r1/Mixture-of-Thoughts[math] |
| 推理 - 科学 | 3,576 | open-r1/Mixture-of-Thoughts[science] |
| 工具调用 | 1,000 | Salesforce/xlam-function-calling-60k |
| 智能体编码 | 1,000 | SWE-bench/SWE-smith-trajectories |
| 生物医学问答 | 800 | qiaojin/PubMedQA[pqa_labeled] |
| 科学问答 | 800 | derek-thomas/ScienceQA |
| 小学数学 | 4,466 | openai/gsm8k[main] |
| 竞赛数学 | 500 | HuggingFaceH4/MATH-500 |
| 代码正确性 | 164 | evalplus/humanevalplus |
| 总计 | 22,000 |
利用记录的激活数据,REAP 通过结合路由门值、专家激活范数和频率加权显著性,对每一层中每个专家的重要性进行评分。评分最低的 20% 专家(每层 25 个)将被移除。剪枝后对路由 logits 进行重新归一化,以保持输出分布。
| 参数 | 值 |
|---|---|
| 压缩率 | 0.20(移除 20% 的专家) |
| 每层原始专家数量 | 128 |
| 每层剩余专家数量 | 103 |
| 剪枝方法 | REAP |
| 距离度量 | 角度(余弦) |
| 路由权重重新归一化 | 是 |
| 随机种子 | 42 |
使用 lm-eval 生成式任务进行评估,参数为 --apply_chat_template 和 think_end_token=<channel|>,以正确处理 Gemma 4 的思考模式。通过正则表达式匹配从模型响应中提取分数。
| 任务 | 原始模型 | REAP 0.20 | REAP 0.30 |
|---|---|---|---|
| 小学数学 | 92% | 90% | 88% |
| 哲学 | 92% | 88% | 74% |
| 世界宗教 | 90% | 64% | 48% |
| 大学计算机科学 | 56% | 76% | 68% |
| 高中数学 | 24%* | 44%* | 48%* |
| 抽象代数 | 12%* | 28%* | 28%* |
| 大学数学 | 16%* | 18%* | 24%* |
| GSM8K | 86% | 84% | -- |
* 这些任务存在显著的提取失败情况(模型输出方程式而非单个字母)。所有模型的实际准确率可能更高。
注意:
原始模型和 REAP 0.20 模型在 14 个具有挑战性的提示上进行了测试,涵盖编码、数学、哲学、长上下文和重复压力场景,并使用正确的聊天模板格式。
| 领域 | 数量 | 原始模型平均词数 | REAP 平均词数 | 原始模型循环 | REAP 循环 | 原始模型崩溃 | REAP 崩溃 |
|---|---|---|---|---|---|---|---|
| 编码 | 3 | 670 | 648 | 0% | 0% | 0% | 0% |
| 数学推理 | 3 | 296 | 261 | 0% | 0% | 0% | 0% |
| 哲学 | 3 | 819 | 727 | 0% | 0% | 0% | 0% |
| 长上下文 | 2 | 1210 | 854 | 50% | 0% | 0% | 0% |
| 重复压力 | 3 | 1088 | 1099 | 33% | 33% | 0% | 0% |
12/14 次完全持平,1 次 REAP 胜出(长上下文),1 次双方轻微循环(排序算法)。 REAP 0.20 模型在生成质量上与原始模型基本无法区分。
Gemma 4 采用混合滑动/全注意力 MoE 架构:
<|channel>thought / <|channel>response 通道from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "0xSero/gemma-4-21b-a4b-it-REAP"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype="auto", device_map="auto", trust_remote_code=True)
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=4096)
print(tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True))pip install vllm>=0.19 transformers>=5.0
vllm serve 0xSero/gemma-4-21b-a4b-it-REAP \
--tensor-parallel-size 2 \
--enforce-eager \
--gpu-memory-utilization 0.9 \
--max-model-len 16384 \
--trust-remote-code@inproceedings{lasby2025reap,
title={{REAP} the Experts: Why Pruning Prevails for One-Shot {MoE} Compression},
author={Lasby, Mike and others},
booktitle={International Conference on Learning Representations (ICLR)},
year={2026},
url={https://arxiv.org/abs/2510.13999}
}