专家分页机制:7倍MoE推理吞吐背后的显存解耦革命
跑大模型的人,几乎都默认接受了一个昂贵的常识。 要跑动几百亿、上千亿参数的 MoE 混合专家模型,必须先把海量的模型权重全塞进显存。 显存差几百兆,程序就会直接报错崩溃。 为了把权重完整装下,大家只能疯狂堆卡,做多卡张量并行。 香港中文大学李柏晴团队刚公开的一项系统工作,把这个常识彻底推翻了。 在 8 张 NVIDIA H20 上跑 3550 亿参数的 GLM-4.5,推理吞吐量直接飙升到原生 vLLM 的 7.2 倍。 平均每个 token 的生成时间,缩短了整整 79%。 在 2 张原本连模型都装不下的平价卡 L40S 上,它跑通了 470 亿参数的 Mixtral。 吞吐量达到了专做内存卸载的 KTransformers 的 4.3 倍。 物理显存没有增加。 GPU 卡数没有增加。 模型更没有做牺牲精度的有损量化。 这凭空暴涨的 7 倍吞吐,到底是从哪里挖出来的?
答案藏在当今大模型推理最隐蔽的一场资源错配里。 多数人直觉上觉得,显存的主要任务就是容纳模型权重。 工程现实恰恰相反。 在大模型推理任务里,真正决定吞吐效率的生命线,是动态的 KV 缓存。 离线评测、数据合成、长文本生成,每一个并发请求都要在显存里实时写入上下文。 显存里留给 KV 缓存的空间越大,系统能同时并行处理的请求批次就越高。 但在 MoE 模型里,95% 以上的参数全部分布在各个专家网络中。 现有的主流推理框架做了一个粗暴的设定: 把这 95% 的全部专家权重,从头到尾死死锁在 GPU 显存里。 这就制造了一个极其荒谬的物理现场。
Transformer 网络的计算,在底层是严格按层串行推进的。 一个大模型通常包含几十个计算层。 当 GPU 正在全速计算第 1 层的时候,第 2 层到第 40 层的几百个专家,全都在显存里原地沉睡。 在这个纳秒级的瞬间,它们对计算没有任何贡献。 可它们却蛮横霸占了 95% 的宝贵显存。 负责吞吐并发的 KV 缓存被挤到墙角,容量迅速见底。 系统调度器为了防止显存溢出崩溃,只能强行腰斩活跃并发批次。 就算你提交了 256 个并发请求,显存也只能逼着调度器每次放出几个任务。 算力强悍的 GPU 核心,大半时间都在干等。 加卡堆显存能解决吗? 李柏晴团队在论文里给出了残酷的数据: 把 Qwen3 80B 从 2 张 H20 扩展到 8 张卡,单卡吞吐量反而暴跌了 62.4%。 卡间通信的开销,直接吃光了堆卡带来的红利。
论文给出的破局机器,叫专家分页(Expert Paging)。 核心的工程洞察只有一句话: 为什么所有图层的专家,必须同时挤在物理显存里? 模型在显存里的存在形式,应当被拆解为两个部分: 静态的计算图,加上流式供给的动态权重。 整台机器由三个严密的齿轮协同咬合。 第一个齿轮,是骨干网络留守与执行流水线重叠。 注意力机制等非专家网络只占总参数的 4% 左右,永久驻留显存。 当 GPU 在执行注意力计算时,天然留出了一段宝贵的毫秒级时间窗。 就在这个窗口期内,系统通过后台管道,把下一层即将点名的专家权重悄悄拉进显存。 第二个齿轮,是虚拟内存映射 PagedTensor。 权重频繁进出,底层的 PyTorch 和算子代码完全不用重写。 系统调用 CUDA 虚拟内存管理,给所有专家分配不变的稳定虚拟地址。 底层物理显存里,仅仅保留 2 个图层大小的物理缓冲块做轮替复用。 算完当前层,缓冲块当即释放,无缝让位给下一个图层。 第三个齿轮,是带宽均衡的存储分级。 光靠 PCIe 通道搬运,传输速度跟不上 GPU 的吞吐。 系统在显存中开辟了一块无损压缩层,针对浮点数指数位做离线霍夫曼编码,在显存内实现高达 400 GB/s 的实时无损解压。 显存解压与主机内存搬运两路并行,流量与各自带宽精确匹配。
这套解耦机制落地的瞬间,显存的产权结构被彻底颠覆了。 原本被几百个沉睡专家长期霸占的物理显存,全数归还给了 KV 缓存。 并发批次被彻底释放,GPU 的计算单元终于被真正喂饱。 六十年前,曼彻斯特大学的工程师为了打破物理内存上限,发明了虚拟内存与分页机制,让现代操作系统脱胎换骨。 六十年后,面对数千亿参数的膨胀压力,同样的体系结构思想在 GPU 显存里再次重现。 把显存当成囤积权重的静态仓库,从一开始就陷入了物理的死胡同。 显存真正的价值,是承载动态思考与上下文吞吐的流动跑道。 一旦将沉重的静态权重还原为按需涌现的水流,困扰整个产业的算力与显存瓶颈,立刻露出了完全不同的物理本质。
引用 / CITATIONS
No citations exported.
同领域解读 / AI & LLMS
导出 / EXPORT
订阅 · SUBSCRIBE
每周一封独立、不受审查的科技与 AI 深度评论,周一发出。带出处,可核查。