【免费下载链接】altar-1
Altar-1 是 Aikido 基于 GLM-5.3 发布的 504B 参数 MoE 专家剪枝模型。本文带你彻底搞懂它的核心选择标准——massmax168 准则:为什么它比"保留全局使用频率最高专家"的剪枝方式更能保住模型在各领域的能力,以及新手如何快速读懂仓库里的剪枝计划与配置文件。
1分钟速览:massmax168 三个词拆开看
massmax168 这个名字其实是一句压缩过的技术说明,拆开就是三个部分:
| 组成 | 含义 |
|---|---|
| mass | 路由权重下的专家激活量(Router-weighted Expert Activation),即每个专家实际"承接了多大量的路由工作" |
| max | 不取平均值,而是取该专家在任意单一领域内占比的最大值 |
| 168 | 每层保留 168 个专家(原模型每层有 256 个) |
一句话总结:先给每个专家算它在各领域里的"份额",再挑它表现最强的那个领域份额打分,每层留下分数最高的 168 个。
这个打分依据来自 REAP(Router-weighted Expert Activation Pruning)方法,在网络安全流量、编码、工具调用、推理和英文语料上完成校准,并额外加入了多语言 Wikipedia 文章——这也是后面"保住领域专才"的关键。
为什么"全局频率剪枝"会误伤模型?
最直觉的剪枝思路是全局频率剪枝:统计校准语料中每个专家被路由到的总次数,保留被用得最多的 168 个。听起来很合理,但问题在于——
频率统计只看总量,不看"是谁在用它"。
想象一家综合医院:骨科专家全年门诊量很高,而罕见病专家全年只接诊几十例。如果按"总门诊量"排名裁人,罕见病专家第一个被裁——可一旦遇到罕见病,这家医院就彻底瘫痪了。
MoE 模型里的专家也是一样。以 Altar-1 的校准数据为例,代码专家主要在处理编码任务时被激活,小语种专家只处理多语言文本,结构化输出专家只在生成 JSON 类内容时出现。这些"领域专才"的整体激活频率往往排不进前 168 名,按全局频率剪枝就会把他们删掉,模型随即在对应领域明显退化。
massmax168 的max正是针对这一点:
- 一个专家哪怕全年只在 5% 的 token 上被用到,只要在这 5% 里它是该领域的主力(占路由工作量的大头),它的 max 分数就会很高,就能留在 168 名额内;
- 反过来,一个"什么都沾一点"的高频杂工专家,如果没有任何一个领域是它挑大梁的,max 分数反而不突出。
结果:每一层、每一个领域都保留了自己的"专科医生",而不再只留下一屋子全科常客。
Altar-1 是如何执行 massmax168 剪枝的?
整个过程不需要重新训练,直接对 GLM-5.3 的 AWQ-INT4 版本做"外科手术":
- 校准打分:在真实流量(网络安全、编码、工具调用、推理、多语言)上收集路由行为,按 massmax168 给每层 256 个专家打分;
- 逐层删除:每层删掉最末位的 88 个专家(256 → 168,删掉约 34%);
- 路由逻辑不动:每个 token 依然从剩余 168 个专家里选 8 个,激活参数量保持在约 40B,与原模型一致;
- 精度混合配置:只有路由专家压到 INT4(W4A16,compressed-tensors/AWQ),注意力、共享专家、稠密层和输出头保持 BF16。
剪枝结果固化在 reap_prune_plan.json 中,打开就能看到核心字段:
{"keep": 168, "criterion": "massmax168", "layers": {"3": [0, 1, 2, 4, ...], ...}}"criterion": "massmax168"即本文主角;"layers"列出第 3 层到第 78 层共76 个稀疏层各自保留的专家编号,每层恰好 168 个;- 前 3 层是稠密(dense)层,没有可剪的专家,与 config.json 中
first_k_dense_replace: 3的设置吻合; - 文件末尾还有一个
mtp_ranking字段:针对 MTP(多 token 预测)层改用权重幅度排序,属于该准则的一个特例。
在 config.json 里也能直接验证剪枝后的架构参数:
| 参数 | 值 | 说明 |
|---|---|---|
n_routed_experts | 168 | 剪枝后的每层路由专家数 |
num_experts_per_tok | 8 | 每个 token 激活 8 个专家(未变) |
n_shared_experts | 1 | 保留 1 个共享专家(BF16 不量化) |
num_hidden_layers | 78 | 层数未变 |
quantization_config | int4 / group_size 32 | 路由专家的 W4A16 量化配置 |
效果如何:0.506 nats 的 KL 散度说明什么?
衡量"剪枝后模型和原模型差多少",项目采用KL 散度(Kullback–Leibler divergence),数值越小越接近原模型,0 表示完全一致:
| 对比项 | KL 散度(25 条密封提示词、154k 完整词表) |
|---|---|
| Altar-1(INT4) vs 完整 BF16 GLM-5.3 | 0.506 nats |
| 同剪枝方案的 EXL3 版本 vs 完整 BF16 | 0.511 nats |
两个细节值得注意:
- 同一份 168 专家剪枝方案下,INT4 与 EXL3 两种量化格式只差 0.005——说明在 4-bit 档位上量化格式几乎不影响结果,真正决定保真度的是"留哪 168 个专家",这正是 massmax168 的价值所在;
- README 中明确提到该方案与频率剪枝做过正面对比(head-to-head),结论是 massmax168 保留的领域专才让剪枝后的输出分布更贴近原模型。
剪枝前后参数对照表
| 维度 | 原 GLM-5.3 | Altar-1 |
|---|---|---|
| 总参数量 | 753B | 504B(减少约 34%) |
| 每层路由专家 | 256 | 168 |
| 每 token 激活专家 | 8 | 8(不变) |
| 激活参数量 | 约 40B | 约 40B(不变) |
| 权重精度 | BF16 | 路由专家 INT4 + 其余 BF16 |
| 权重体积 | 远超单机能力 | 328 GB,4× H200 即可部署 |
| 是否重新训练 | — | 不需要,纯剪枝 + 量化 |
对推理侧来说,328 GB 权重摊到 4 张 H200 上后,仍有余量支撑 128k 上下文的 KV cache(生产批量下);vLLM 会自动选择 Marlin MoE kernel。
部署 Altar-1 的 vLLM 启动命令
官方推荐的部署方式是一行 vLLM 命令(要求 Hopper 架构,H100/H200):
vllm serve aikido/altar-1 --tensor-parallel-size 4 --trust-remote-code --max-model-len 131072生成参数见 generation_config.json:temperature 1.0、top_p 0.95、采样开启,与 GLM 系列原模型的推荐设置一致。
文件导航:去哪里查 massmax168 的细节?
| 文件 | 看什么 |
|---|---|
| README.md | 模型总览、校准语料、KL 散度数据、vLLM 部署命令 |
| reap_prune_plan.json | 剪枝计划本体:criterion: massmax168+ 每层保留的 168 个专家编号 |
| config.json | 架构与量化配置:n_routed_experts、W4A16 量化组、BF16 白名单 |
| generation_config.json | 采样参数(temperature / top_p / eos 等) |
| model.safetensors.index.json | 39 个权重分片(model-00001 ~ model-00039.safetensors)的张量索引 |
| chat_template.jinja | 对话模板,接入服务时渲染提示词用 |
总结:massmax168 给 MoE 剪枝留下的启示
- 频率不是价值:全局频率剪枝把"低频但不可替代"的领域专才当垃圾清掉了;
- max 才是关键:massmax168 用"在任一领域的最大份额"打分,让每一层、每个领域都留下自己的主力专家;
- 无需重训、代价可控:删掉 34% 的专家后,KL 散度仅 0.506 nats,激活计算量保持约 40B 不变,753B 的模型直接瘦身成 4×H200 就能跑的 504B 版本。
如果你的场景是多领域混合服务(代码 + 安全 + 多语言)、硬件又跑不动完整 753B 模型,Altar-1 这套"massmax168 + INT4"的组合就是一个开箱即用的答案。
【免费下载链接】altar-1
相关推荐
为什么简洁是react-content-loader的终极设计原则:打造高效骨架屏的完整指南
为什么简洁是react content loader的终极设计原则:打造高效骨架屏的完整指南 react content loader是一个基于SVG的组件,专
前端UI组件metube前端框架选择:为什么是Angular?
metube前端框架选择:为什么是Angular? 你是否曾在开源项目中纠结过前端框架的选择?当metube(一个自托管的视频下载器,为视频下载工具提供Web界
后端前端视频Deepagents自动化测试:确保AI代理的质量与稳定性
Deepagents自动化测试:确保AI代理的质量与稳定性 Deepagents是基于langchain和langgraph构建的AI代理框架,通过规划工具、文
人工智能AI AgentAgent 框架工具调用代码智能体
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考