Margrop
Articles304
Tags782
Categories6

Categories

1password 24GB VRAM 2K 3-SAT 3.6 Flash 30B dense 4-bit 量化 6-DoF SLAM AC ACP AI & Economy ATLAS AI Agent AI Coding Assistant AI Tech AI Workflow AI tutor AI 基础设施 AI 安全 AI 工程 AI 应用 AI 日记 AI 生产力 AI编程助手 ALTK-Evolve AMIE AP API API 定价 API 降价 ARC-AGI-3 ASR ATEM chat 模板 AUTOMATIC1111 Agent Agent Harness Agent Memory Agent 入侵 Agent 可靠性 Agent 工程 Agent 推理 Agent 架构 Agent 检索 Agent 沙箱 Agent 系统 Agent 训练 Agent 记忆 Agent 评测 Agent 路由 Agentic AI Agentic SOC Agentic tools Ai2 Alertmanager AllenAI Android 17 Antigravity Apertus 1.5 AppDaemon AppWorld Apple Silicon Aqara Astra Async GRPO Attention AutoSynthData Baseten Benchmark CC-Switch CI/CD CLI Tools CLI工具 COBOL CPU 推理 Cache Hit Rate Caddy ChatGPT Claude Code Claude Sonnet ClawLoader Code Interpreter CodeMender Codex Coding Agent ComfyUI Computer Use Cookie 认证 Cosmos DB Cosmos-H-Dreams Cost Optimization Cron Cybersecurity DFIR DSpark Date DeepSeek DeepSeek V4 Flash Diagrams.net Diary Diffusers Diffusion Docker Efficiency Tools Embedding English Evaluation Cards FSDP2 Fable 5 Falcon ASR Fireworks AI FlashAttention FlashDreams Frontier AI Function Calling Funes GGUF GLM 5.2 GLM-5.2 GPT-4.1 GPT-5.6 GPT-5.6 Sol GPT-6 GPT-6 Astra GPT-Live GPT-Live-1 GPT-Red GPU 云 GPU 加速 GPU 性能分析 GPU 集群 GRPO Gated DeltaNet Gateway Gemini Gemini 3.5 Flash Gemini 3.7 Flash Gemini 3.8 Gemini 4 Argon Gemini API Gemini CLI Gemini Omni Flash Gemma 4 12B Gemma Translator Gemma4 GitHub Actions Google Google AI Google Beam Google Data Commons Google DeepMind Google Research Google Sheets Grabette Gradio Gradio Workflow Gripette HA HADashboard HF Security Incident Hailuo Hermes Hexo Holo4 HomeAssistant Hugging Face IBM Granite IBM Research In-context Learning Inference Providers Isaac Lab JSON Output JSON Schema Java KV cache KV 缓存 Kimi K3 Kubernetes LFM2.5 LFM2.5-VL LLM LLM Router LLM 安全 LLM 工程 LLM 评测 LVM‑Thin Late Interaction LeRobot Lean Linux Liquid AI LiquidAI Live Translate LoRA Luna MCP MLX MTP MacOS Magpie TTS Managed Agents Meta Microsoft 365 Copilot MiniMax Mistral Mistral Shieldstral MoE Model Routing MuJoCo Warp Multi-Agent Multi-Vector MultiLangBench Muse Glimmer Muse Spark Open MySQL NAS NIM NVIDIA NeMo Automodel NeMo Data Designer Nemotron Nemotron 3 Embed NeoMME Newton Nginx Node.js Nunchaku OCR OOM OlmoEarth On-device AI Open Source OpenAI OpenAI Codex OpenAI 兼容 OpenClaw OpenCode OpenResty OpenWrt PII 检测 Physical AI Pollen Robotics Portainer PostgreSQL ProcessOn Project Astra Prometheus Prompt Caching Prompt Injection Prompt 缓存 Proxmox VE PyTorch Qwen3 Qwen3-VL Qwen3.6 RAG RPC RTEB Real-Time Inference Red Teaming Reflection Beam Responses API SNAP SOCKS5 SPED SVDQuant SWE-Bench Schema Scientific Computing Self-Forcing Distillation Sentence Transformers Session Sheets canvas Shell Sol Speech-to-Text StateBench Storage Buckets Strands Agents Subagent Surgical Robotics TRL TTS Tabular Terra Think button TimeMachine Tokenizer ToyBlocks Transformers TutorMoments UML Uptime Kuma V4-Pro VLA VPS Voice Agent VoiceEQ WARP WebRTC WebSocket Windows World Foundation Model agent agentic aligenie aliyun annotation aop autofs backup bash bitwarden boot brew browser budget control centos cert certbot charles chat chrome classloader client clone closures cloudflare command commit commoditization container crontab cyber capability demo dependency deploy developer devtools dll dns docker domain download drafter draw drawio dsm dump dylib environment hooks exception fail2ban feign firewall-cmd flow flow matching free tier frontier hosted model frp frpc frps fuckgfw full-duplex function gfw git github gperftools gridea grub guardrail lockout gvt-g hacs havcs heap hello hexo hibernate hidpi hoisting homeassistant hosts html htmlparser https huggingface_hub iKuai iMessage image img img2kvm immortalwrt import index inference cost install intel io ios ip iptables iso java javascript jni jnilib jpa js json jsonb jupter jupyterlab jvm k8s kernel key kvm lastpass launchctl learning letsencrypt linux llama.cpp low-code lvm mac mariadb markdown maven md5 microcode mirror modules monitor mount mstsc multimodal mysql n5105 network nfs node node-red nodejs nohup notepad++ npm nssm ntp oop open d1 open weights openfeign openssl os ovz packet capture pdf pem perf pip plugin png powerbutton print pro productive struggle pve pvekclean python qcow2 qemu qemu-guest-agent rar reasoning control reasoning slider reboot reflog remote remote desktop renew repo resize retina router runtime safari sata scaffolding scheduled triggers scipy-notebook scoping scp self-play server serverless inference silent test simulated student so speculative decoding spk spring springboot springfox ssh ssl stash string support svg svn swagger sync synology systemctl systemd template terminal txt ubuntu ui undertow unlocker upgrade vLLM vhd vim vm vmdk web windows with worker xml yum zai-org/GLM-5.2 zip 一致性评测 上下文压缩 上下文工程 专家剪枝 世界模型 事件响应 交换机 人才争夺 人机协作 代理 代码生成 代码迁移 仿真基准 企业 AI 企业自动化 优化 低延迟 低资源编程语言 供应链 健康检查 光猫 免费层 具身智能 内存 内存优化 内网渗透 决策模型 分布式存储 分布式推理 分布式训练 医疗 AI 升级 卫星影像 反向代理 反诉 可复现性 合成数据 后训练配方 向量检索 启动 告警 告警优化 图像生成 地球观测 地理空间推理 基础设施 复盘评测 夏令时 多 token 预测 多向量检索 多智能体 多模型编排 多模态 多模态 AI 多模态 API 多模态 Agent 多模态交互 多模态检索 多模态模型 多语言 多语言 AI 大厂人才战 大模型评测 天猫精灵 安全 安全事件 安全对齐 安全评测 安全运营 安装 定时任务 实时协作 实时语音 客户端 SDK 容器 导入 小模型 小米 屏幕理解 工作流编排 工具审计 工具调用 工具调用拦截 工程团队 工程实践 工程笔记 常用软件 应用市场 延迟优化 开权重 开源权重 开源模型 异常 异步任务 异步委派 强化学习 形式化验证 微信 心跳 性能优化 性能捕捉 成本优化 成本控制 扩散模型 技术 抓包 拒答校准 持续预训练 按 provider 优先级 排查 推测解码 推理加速 推理成本 推理模型 推理速度 推理预算 描述文件 提示词敏感性 搜索 API 故障排查 效率工具 教育数据开源 教育评测 数学推理 数据工作流 数据治理 数据流 数据管线 数据集偏差 文本编码器 文档解析 旁路由 日志分析 日记 时区 显卡虚拟化 显存优化 智能家居 智能音箱 服务管理 本地 Agent 本地 agent 本地推理 机器人仿真 机器人学习 机器人数据采集 架构 模块 模型压缩 模型微调 模型快照 模型推理 模型评测 模型路由 残存访问 流式推理 流程 流程图 浏览器 混合专家 漫游 火绒 状态追踪 生成式影像 电信 画图 监控 监控系统 监管 知识蒸馏 磁盘 科研 Agent 科研自动化 稀疏注意力 立体声 端侧 AI 端侧推理 端口 端口冲突 端口扫描 结构化抽取 结构化输出 续期 网关 网络 网络安全 网络风暴 群晖 脚本 脚本优化 腾讯 自动化 自动恢复 自动攻击 自部署 苹果 虚拟机 表格基础模型 视觉语言模型 视频生成 视频问诊 计算复杂性 认证 训练基础设施 证书 评测 评测基准 评测方法学 诉讼 语音 AI 语音 Agent 语音识别 资源调度 超时 路由 路由器 软件工程 软件测试 软件管家 软路由 边缘 AI 运维 运维监控 连接保活 连接问题 通信机制 通知 邮件漏发 部署 配置 量化 量子计算 钉钉 镜像 镜像源 长上下文 长任务编排 长连接 门窗传感器 问题排查 防火墙 阿里云 阿里源 集客 非人类身份 飞书

Hitokoto

Archive

HOPE 二阶专家剪枝:MoE 砍掉一半专家还能不掉 SWE-Bench 分,凭什么?

HOPE 二阶专家剪枝:MoE 砍掉一半专家还能不掉 SWE-Bench 分,凭什么?

笔名:小六 / 上海 / 1995 女 / 某互联网公司工程师

MoE 专家剪枝与显存占用

先说结论

11 月 9 日,亚马逊团队在 Hugging Face 博客发布 HOPE(Higher-Order Pruning of Experts),把 MoE 专家剪枝从「给每个专家打一个独立分数」改成「按专家之间的配对协作强度做一次二次规划求解」。论文挂在 arXiv(编号 2609.18916),代码在 awslabs/HOPE 仓库。

我的结论:这条路线真正解决的不是「剪枝能省显存」这个老命题,而是「剪枝为什么会在高强度剪枝时崩掉」这个具体病因——它把专家协作当成一阶方法看不见的结构,然后用一个可解的二次规划把它捞回来。工程上最值钱的两个数字是:50% 剪枝率下,Qwen3.5-35B-A3B 在 SWE-Bench Pro 上 42.3 分,比未剪枝的 41.8 还略高;而同条件下上一代方法 REAP 掉到 36.2,退步 13%。代价是它只在 40%–50% 这种激进区间领先,低剪枝率下并不占优。

发生了什么

官方事实一:发布主体、时间与位置。 主来源是 Hugging Face 博客的亚马逊投稿栏目《Your Experts Have Partners. There’s HOPE for Keeping Them Together》,页面标注发布日期 2026 年 11 月 9 日,作者 Alex M Tseng(与 Prannay Kaul、Luca Zancato、Wei Xia、Stefano Soatto 共同署名)。原始 URL 见文末 Q&A。同一天对应论文与开源代码库一并放出。

官方事实二:它针对的是一个具体的显存账。 官方开篇给了一个非常具体的例子:Qwen3.5-122B 在 48 个 MoE 层里每层有 256 个专家,约 250 GB 的参数显存里,95% 全部被这些专家 MLP 占掉;但对任何一个 token,每层实际只用到 8 个专家。也就是说,绝大多数专家在推理时是闲置的,却必须常驻显存。这正是 MoE 的「便宜算力、昂贵内存」结构性问题。

官方事实三:剪枝本身不新,难点在「剪谁」。 官方明确说,专家剪枝是应对这个内存瓶颈最直接的办法之一:永久删掉最没用的专家,不需要训练,可以和量化叠加,也不会像动态加载/卸载那样引入延迟。真正难的是判断哪些专家「删了最安全」。既有方法(REAP、MAN、EAN、Frequency 等)都是一阶的——给每个专家单独打分,逐层独立地砍掉分数最低的。它们的隐含假设是「每个专家的贡献与别的专家无关」。

官方事实四:这个假设是错的。 官方给出的观察是:专家会形成稳定的协作群组,被持续共同激活;这个现象在训练早期就出现并稳定下来,独立研究也验证过「专家协作是 MoE 的稳定属性,且对性能重要」。于是删除专家 A 看似无害,但若与 A 高频协作的 B 很重要,删 A 就等于拆掉一个协作群——一阶方法完全看不见这一层,因为 A 和 B 是分开打分的。这个效应在剪枝率高时被放大:砍到 50% 时,会打断大量协作链路。

相关背景(非当日新闻,作为对照)。 11 月 4 日同一批 Hugging Face 博客里出现过 Dharma Field Extractor(2B 专用模型做文档字段抽取),11 月 5 日是 NVIDIA Cosmos 3 的四个开放检查点,11 月 6 日是 AllenAI 的 ToyBlocks 机器人基准。这几天的一条共同线索是「把大而全的东西切成小而专用的部件」;HOPE 属于这条线索的另一端——不换模型,只把已有 MoE 的冗余结构拆掉。

技术细节

1. 一阶 vs 二阶:差别就在那个交叉项

标准 MoE 里,每层有 E 个专家,每个 token 被路由到 top-K(常见 K = 8)。路由层输出 softmax 归一化的门控权重,取权重最高的 K 个专家构成激活集,层输出是这些专家输出的加权和。

一阶方法只看「单个专家的贡献」。HOPE 的做法是先定义一个代理量 Z:对被剪掉的、本来会被选中的那批专家,把它们的门控权重与输出范数乘起来再求平方和。官方强调 Z 是剪枝误差主导成分的严格上界。关键在「平方」这一步:平方展开天然产生成对的交叉项——两个专家的门控权重相乘、输出范数相乘。这些交叉项就是一阶方法丢掉的东西。

2. 把剪枝变成一个二次规划

于是问题被重写成:在给定剪枝预算下,找一个剪枝集合,使校准集上的期望 Z 最小。官方把它化成二次规划:目标是最小化「选择向量转置 × F 矩阵 × 选择向量」,约束是选择向量为 0/1、且 1 的个数等于预算。

F 矩阵的定义很直白:每个元素 F(i,j) 是「专家 i 与 j 同时被激活的那些 token 上,两者门控权重乘积 × 两者输出范数乘积」的平均值。对角元素 F(k,k) 衡量单个专家的重要性;非对角元素衡量成对的协作贡献。求解时用连续松弛再取整到 0/1,官方给出的耗时是每层 1–2 秒,相对校准前向传播的总时间可以忽略。

3. 一个很硬的验证:对角项几乎就是 REAP 的排名

官方专门做了一次对照:F 矩阵的对角项,与上一代最强一阶方法 REAP 的专家排名几乎完全一致——Spearman 相关系数 ρ = 0.988,差别只在专家贡献的方差口径。这句话的工程含义很重:HOPE 相对 REAP 的全部增益,都可以归因于非对角的那部分交互项,而不是「换了个更好的单专家打分公式」。这是一条干净的可归因链条,也是我认为这篇发布最可信的地方。

4. 实验结果:平均排名 2.07,50% 剪枝率下 1.58

评测设置:3 个模型(Qwen3.5-122B、Qwen3.5-35B、GLM-4.5-Air),2 套校准数据(Evol-CodeAlpaca 与 SWE-Bench Verified 轨迹),测试集用 Tulu3 套件加 SWE-Bench Pro(agentic coding),对照组是 4 个一阶基线(REAP、MAN、EAN、Frequency),剪枝率从 10% 扫到 50%。

总体结果:HOPE 在所有条件下的平均排名是 2.07(5 个方法里),top-1 占比 39%,top-2 占比 67%;在多数条件下对每个基线都是正面赢。随着剪枝率上升,优势扩大:50% 剪枝率时平均排名升到 1.58,而第二名 REAP 是 2.42。

最值得单独拎出来的是 SWE-Bench Pro:这是要求模型自主解决真实 GitHub issue 的 agentic coding 基准,任务组合多样(写代码、调工具、推理),多轮交互,天然会激活更多样的专家组合——正是「保住协作结构」最有价值的场景。Qwen3.5-35B-A3B 在 50% 剪枝下拿到 42.3,而未剪枝版本是 41.8;同条件 REAP 是 36.2,相对未剪枝退步约 13%。

5. 官方自己承认的边界

官方在「局限」一节写得很清楚,值得原样记住:

  • 优势主要在 40%–50% 这种激进剪枝率;10%–20% 的低剪枝率下,REAP 和 MAN 这类一阶方法有时能打平,HOPE 的优势会缩小。
  • 和多数专家剪枝算法一样,HOPE 逐层独立剪枝,不处理跨层交互;论文里给了跨层框架,但结果还是初步的。
  • 它只建模成对交互;三元组以上的更高阶交互可能还有信号,但组合爆炸,难以估计。

另外官方也解释了「剪过的模型偶尔能追平甚至超过未剪枝版本」这个反直觉现象:可能是因为删掉低相关专家后,目标任务上的噪声变少了。官方特意说明这不是 HOPE 独有,别的剪枝方法也观察到过。

6. 三步命令与一个关键事实:产物是标准检查点

官方给的流水线是三段:hope calibrate 用 HuggingFace transformers 钩住每层 MoE 的前向,记录每个 token 的选中专家、门控权重、输出范数和成对共激活统计,落成 HDF5 里的 F 矩阵;hope solve 求解二次规划,输出剪枝集合 JSON;hope prune 生成更小的模型检查点。官方强调最后一步产物是标准 HuggingFace 检查点,磁盘和内存都更小,vLLM 和 SGLang 的模型定义不需要改。这一点比分数更影响落地:剪枝后的模型可以直接塞进现有推理栈,不用改服务端代码。

官方说这套包已在 Qwen3、Qwen3-Next、Qwen3.5 和 GLM-4.5 上测过。校准只做一次前向,用 agentic rollout 或单轮轨迹都行——也就是说校准数据可以就是你自己业务里的真实调用轨迹,这一点对内部落地很关键。

对 Agent / 工程的影响

立刻能用上的场景:

  • 自托管 MoE 的显存账:如果你在本地或私有集群跑 Qwen3.5、GLM-4.5 这类 MoE,显存里 95% 被闲置专家占着这件事就是硬成本。50% 剪枝带来的显存下降,直接换成更长的上下文、更深的推理链、更多的工具调用轮次——这三样恰好是 Agent 系统最吃资源的部分。
  • 长跑 agent 的稳定性:SWE-Bench Pro 那组数字的意义不只是分数,而是「多轮、多工具、组合多样」这种形态下剪枝没有崩。Agent 场景的 token 分布比单轮问答散得多,一阶剪枝在这种分布上更容易误删协作群;用二阶口径做校准,等于把校准集换成你自己的 agent 轨迹。
  • 不改推理栈:产物是标准检查点,vLLM/SGLang 不用改定义。这意味着可以在现有部署上做一次「模型瘦身」,不需要配套改服务代码。

需要进一步验证的:

  • 校准集就是你的业务分布:官方用的是代码类轨迹(Evol-CodeAlpaca、SWE-Bench Verified)。如果你的 agent 主要做文档抽取、客服、报表查询,专家协作结构大概率不同,F 矩阵必须用自己的轨迹重算,不能照抄官方剪枝集合。
  • 剪枝率的选择:40%–50% 是优势区间,但也是风险区间。10%–20% 用一阶方法更省事且不差。真正的决策点是「显存缺口有多大」,不是「哪个方法排名高」。
  • 跨层效应:逐层独立剪枝意味着层与层之间的补偿关系没被建模。深层被剪后浅层是否需要同步调整,官方只说框架初步,没给可用结果。

短期不要碰的:

  • 别把它当「通用压缩」用。它只删专家,不处理注意力头、embedding 层、量化误差;要和量化叠加才有完整收益。
  • 别在没跑过自家校准集的情况下,把官方的 42.3 分当成自己业务的预期。

我的判断

第一,这是一篇「病因明确」的论文,不是「又一个 SOTA」。 它把一阶剪枝在激进区间崩掉的原因定位到「协作群被拆」,并用 ρ = 0.988 的对角项对照证明增益全部来自交互项。这种可归因的结构,比一个漂亮的平均排名更值得信任。

第二,50% 剪枝率 + agentic coding 不掉分,是这条路线最实用的卖点。 但它的适用范围也正好卡在这里:低剪枝率不占优,跨层没解决,三元组没建模。所以它是「显存真的不够、且业务是长跑 agent」时的解法,不是默认解法。

第三,落地顺序应该是「先换校准集,再换剪枝率」。 先用自己业务轨迹跑一次 calibrate,看 F 矩阵的块结构是否明显;块结构清晰说明协作群存在,二阶口径才有意义。然后再按显存缺口选剪枝率,而不是先追排名。

Q&A

Q1:来源/出处?
A:主来源是 Hugging Face 博客的亚马逊投稿《Your Experts Have Partners. There’s HOPE for Keeping Them Together》,页面标注发布日期 2026-11-09,URL:https://huggingface.co/blog/amazon/higher-order-pruning-experts 。对应论文《Higher-Order Pruning of Experts in Mixture-of-Experts Language Models》,arXiv 2609.18916,URL:https://arxiv.org/abs/2609.18916 。开源代码库:https://github.com/awslabs/HOPE 。文中所有分数、排名、剪枝率、模型规格均取自该博客正文与论文摘要。

Q2:能不能复现/怎么验证?
A:可以,且不需要重训。最小验证三步:一,准备一批你自己的调用轨迹当校准集;二,跑一次 calibrate 得到 F 矩阵的 HDF5;三,在 20% 和 50% 两个剪枝率各解一次,分别在你的评测集上对照未剪枝版本。判断标准不是「分数有没有涨」,而是「50% 剪枝下相对未剪枝的退步是否小于一阶基线」——这才是 HOPE 声称的优势区间。另可先看 F 矩阵可视化:若对角块结构明显,说明协作群真实存在。

Q3:适用边界是什么?
A:适合显存确实不够、模型是 MoE 架构、业务分布偏多轮多工具的 agent 场景。不适合稠密模型(没有专家可剪)、不适合只需要省一点显存的轻度压缩(10%–20% 用一阶更简单)、也不适合把剪枝当唯一压缩手段的场合(需与量化叠加)。

Q4:和 REAP 的关系到底是什么?
A:不是替代关系,是包含关系。HOPE 的 F 矩阵对角项几乎复刻了 REAP 的专家排名(ρ = 0.988),所以 HOPE 等于「REAP 的单专家打分 + 成对交互项」。这也意味着:如果你的场景里协作结构不明显,两者结果会非常接近,用 REAP 更省事。

Q5:实施有什么坑?
A:三个。一是校准集必须匹配业务分布——用代码轨迹算出的剪枝集合套到文档任务上,协作群可能对不上;二是剪枝集合是逐层的 0/1 向量,层间不协调,剪完必须整模型重测而不是逐层抽检;三是「偶尔追平未剪枝」这个现象别当成保证,官方自己说这来自噪声减少,不是稳定收益,做预算时按退步上界留余量。

本文阅读量 --
Author:Margrop
Link:https://blog.margrop.com/post/2026-11-09-hope-expert-pruning-moe-memory/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可