静态缓存页面 · 查看动态版本 · 登录
智柴网 登录 | 注册
← 返回话题
✨步子哥 @steper · 2026-09-20 02:59

内存的饥饿游戏:当 MoE 权重与 KV 缓存争夺 GPU 的每一字节

一台 GPU,两个饿汉

想象一家餐厅只有一个厨房,但里面坐着一头大象和一条不断膨胀的蛇。大象是 MoE 模型的权重——60 多个专家网络密密麻麻码在显存里,占掉了 60% 以上的空间。蛇是 KV 缓存——每生成一个 token 就长一节,随着上下文延长不断吞噬剩余的显存。

当用户发来一个 128K 上下文的长文档分析请求,蛇开始疯狂膨胀。厨房就那么大,要么把大象切块搬出去,要么让蛇把厨房撑爆。

这就是 MoE 大模型推理服务面临的核心困境。vLLM 的 PagedAttention 解决了 KV 缓存的碎片化问题,但那只是让蛇排得更整齐——厨房里的大象依然纹丝不动。

2026 年 7 月,伊利诺伊大学香槟分校的 Yuchen Yang 等人提出了 PagedWeight,给出了一个优雅的答案:让大象学会缩骨功

核心洞察:权重也能分页

PagedWeight 的灵感来源出人意料地直接——既然 PagedAttention 能把 KV 缓存切成"页"来管理,为什么不能把模型权重也切成"页"?

但这里有一个关键技术前提:Any-Precision 量化。传统量化把模型从 16 位压到 4 位后就固定了,没法动态调整。Any-Precision 则允许同一个权重在不同精度之间切换——3 位、4 位、5 位、6 位,甚至回退到 16 位。每个专家的权重被拆成"位平面"(bit-plane)和查找表(LUT),就像一本书的章节可以独立拆装。

PagedWeight 把这些位平面当作"页"来管理。当 KV 缓存压力增大时,系统不是无差别地把所有权重压到最低精度,而是像一个精明的仓库管理员一样,挑选"最不敏感"的专家降精度,保留"关键专家"的完整精度。

三层感知:离线 + 路由 + 提示词

PagedWeight 的质量感知规划器(quality-aware planner)是整个系统的灵魂。它融合了三层信息来决定"降谁的精度":

第一层:离线敏感度表。 在部署前,用校准数据集对每个专家的每个线性块做 Hessian 加权敏感度分析。简单说,就是测量"把这个专家从 6 位降到 3 位,输出会变差多少"。这给出一个静态的"伤害评分"。

第二层:路由统计。 MoE 的路由器在推理时不是均匀分配负载的——有些专家被频繁调用,有些几乎休眠。PagedWeight 实时统计每个专家的"路由质量"(routing mass),对高频专家给予保护,对低频专家大胆降精度。这就像餐厅经理知道哪位厨师今天最忙,不会在高峰期抽走他的刀具。

第三层:提示词残差。 这是 PagedWeight 最精妙的设计。同一个量化动作对不同提示词的影响是不一样的——把某个专家降精度,可能对数学题毫无影响,但对代码生成伤害很大。PagedWeight 从路由加权输入范数中提取"提示词残差",对离线敏感度表做实时修正。这相当于仓库管理员不仅看库存表,还看今天的订单类型来决定优先保护哪些货物。

安全边界与异步搬运

降精度不是想降就降的。PagedWeight 引入了"位宽下限"(bitwidth floor)概念——每个专家都有一个最低安全精度,低于这个精度就会造成不可逆的质量损失。规划器在多个"位宽阶段"中逐级搜索,从最安全的降级方案开始,只在压力触发时才执行更激进的方案。

更聪明的是异步页面搬运。权重在 GPU 和 CPU 之间的搬运需要时间,PagedWeight 不会等搬运完成才继续推理——它在"安全边界"(safe boundary)提交变更,把搬运操作隐藏在推理计算的间隙里。实测显示,这种异步设计最多只损失 4.1% 的吞吐量。

数据说话:72% 省下来的代价

在三个主流 MoE 模型上的实验结果令人印象深刻:

Qwen1.5-MoE-A2.7B(14.3B 参数,60 个专家):PagedWeight 在 10GB 显存预算下达到 17.0% 的 LongBench 平均分,与 FP16 持平,而同等预算下的均匀量化只有 12.2%。在 Passage Retrieval 任务上,PagedWeight 从 10.5% 提升到 17.5%——同等内容量下检索准确率提升 67%

Mixtral-8x7B(46.7B 参数,8 个专家):PagedWeight 实现 72.0% 的 GPU 显存节省,同时保持 FP16 等效精度,吞吐量提升 1.94 倍。

Gemma-4-26B-A4B(25.2B 参数,128 个专家):在相似显存预算下,PagedWeight 比量化基线质量提升最高 39.3%。

消融实验揭示了三个组件各自的贡献:去掉路由统计,困惑度从 7.22 升到 7.26;去掉提示词残差,升到 7.31;去掉页面搬运机制,升到 7.43;去掉全局敏感度,升到 7.55。每一层都有不可替代的贡献,但全局敏感度是地基——没有它,其他三层都无从谈起。

为什么这很重要

PagedWeight 解决的不只是一个工程问题。它揭示了一个被忽视的维度:推理时的显存管理不应该只盯着 KV 缓存,权重同样是可塑的

过去几年的 LLM 服务优化有一条隐含的分工:KV 缓存管理归系统人(PagedAttention、KV 压缩),权重量化归算法人(GPTQ、AWQ、SmoothQuant)。两边各自为政,互不干涉。PagedWeight 打破了这个边界——它把权重的量化精度变成了一个运行时变量,和 KV 缓存的大小一起进入同一个优化框架。

这和操作系统的虚拟内存管理异曲同工。操作系统不会把物理内存静态分配给某个进程——它根据压力动态调配,把不活跃的页面换出去,需要时再换回来。PagedWeight 把同样的逻辑应用到了神经网络的权重上:权重不是静态资产,而是可以被动态调配的资源

更深一层看,PagedWeight 利用了 MoE 架构的一个结构性特征——路由不平衡。专家不是被均匀使用的,有些被频繁调用,有些几乎闲置。这个"不公平"在静态量化下是浪费(所有专家同等对待),但在 PagedWeight 中变成了机会(闲置专家可以更激进地压缩)。系统的不均匀性不是缺陷,而是可以被利用的信息。

未竟之业

PagedWeight 也有局限。它目前只支持 Any-Precision 量化格式和 Hessian 敏感度指标,其他量化格式(如 GPTQ 的分组量化)是否兼容尚待验证。提示词残差的设计还比较粗糙——用路由加权输入范数作为特征,只是一个初步近似。未来如果能用更精细的提示词表征来估计量化敏感度,质量-显存权衡还能进一步改善。

但核心贡献已经足够清晰:PagedWeight 把"权重精度"从一个静态配置参数变成了一个动态系统变量。在 MoE 大模型越来越普及、上下文窗口越来越长的趋势下,这种"让大象学会缩骨功"的能力,可能成为推理服务系统的标配。

---

*论文:PagedWeight: Efficient MoE LLM Serving with Dynamic Quality-Aware Weight Quantization* *作者:Yang, Zhao, Dasgupta, Misailovic(UIUC)* *arXiv: 2607.16184*

暂无表态