← 返回信息流
AI 资讯Hacker News·2 天前

AI模型宽深之辩:边际权衡探析

原标题:Width vs. Depth: Speculating on the Margin

速览

本文分析AI模型设计中宽度与深度的权衡问题,从边际效益角度探讨不同架构的选择。文章指出,在计算资源有限的情况下,如何平衡模型宽度与深度以优化性能是一个关键问题。通过实验和理论分析,作者提出了在边际上调整的建议。这对于理解模型扩展规律和实际部署有重要参考价值。

AI 深度解读

背景

当在单个 GPU 上运行大型混合专家(MoE)模型(如 Qwen3.6-35B-A3B)进行推理时,如何最大化每秒输出的 token 数是一个经典问题。操作者通常有两种手段来利用有限的计算资源(例如引擎一次只能处理固定数量的 token 位置):一是增加批大小(width),将多个随机用户序列拼在一起处理;二是采用推测解码(depth),让模型在当前序列上向前推测一个 token,然后验证两个位置(当前已采样 token + 推测的 token)。两者究竟谁更优?直觉上,在内存受限场景下,增加批大小总是更好的选择,因为新的 token 不会被拒绝;但通过建模和实际数据分析,文章发现深度策略(推测解码)在特定条件下反而能产生更高的全局输出 token 速率,即便其推测接受率(per-token acceptance rate)较低。

核心内容

1. 深度可以比宽度更便宜

先看一个简化的面试题:假设你在单 GPU 上运行 Qwen3.6-35B-A3B,批大小为 1,引擎一次只能处理 2 个 token 位置。为了提升吞吐,你有两个选项:

  • 宽度策略:批大小为 2,把两个随机用户序列的 token 拼在一起算。
  • 深度策略:批大小为 1,但在当前序列上向前推测 1 个 token,然后验证两个连续位置(刚采样的 token + 推测的 token)。

假设推测模型的前向传播免费、无需预填充、序列足够短以至于 KV 缓存移动不影响性能。那么,在只关心每秒输出 token 数的前提下,哪个更好?

从理论上看,增加宽度似乎总是更好的:因为添加到工作集的额外 token 不会被拒绝。但实际建模发现,即便推测接受率 r = 0.9(即 10% 的推测 token 被拒绝),深度策略在全局上依然能产生更多的输出 token。

原因藏在 MoE 路由 中。MoE 路由是影响 LLM 性能分析的一个奇特因素:数据的语义内容会影响实际完成的工作量。文章通过实验收集了两种 draft 模型的50万次推测回合数据,记录每层每个 token 路由到的专家,以及 DeepSeek-V4-Flash 的路由信息。结果发现:

  • 路由的专家分布高度非均匀:最繁忙的专家处理的数据量是其公平份额的若干倍,且按排名大致指数衰减。
  • 当比较宽度与深度时(即对两个随机选择的 token 做验证,对比对两个连续 token 做验证),深度策略接触到的不同专家数量更少。这是因为连续 token 的激活模式更相似(co-activation),它们倾向于激活相同的专家,从而减少了需要加载的专家权重总量。在内存受限的批大小 1 时,验证两个位置的推测运行比增加一条新序列所需移动的专家权重更小,因此深度策略节省了内存带宽,提升了 token 产出。

2. 应该在哪些地方投入“深度”

实际推理引擎中,不同解码请求的推测难易程度差异很大。有些请求很容易被 draft 模型正确推测,有些则几乎立刻失败。如果能在运行前知道 draft 模型对每个序列的自信程度,就可以只在需要的地方投入推测深度,从而节省 draft 模型和验证模型的计算量,把这些计算用到其他地方(比如增加批大小或进一步推测)。

首先需要确认不同序列之间被接受 token 数量的变异程度。实验表明,变异很大:被接受的 token 长度并非集中在均值附近,而是呈现两极分化——要么 draft 几乎全对(clean sweep),要么几乎全错。固定深度策略不得不在这两类序列之间妥协:深度设得太大,会浪费验证时间在那些容易被拒绝的序列上;设得太小,则错过容易完成的序列。

好消息是,draft 模型本身在验证运行之前就已经知道自己有多自信。通过对比 draft 模型每个深度的置信度(cumulative product)与实际提交的 token 长度,可以发现多数点落在对角线上(即完美校准),这意味着 draft 模型的置信度是有效的信号,可以用来改进推测策略。

置信度门控(confidence gating) 的思想:让每个序列使用不同的推测深度。在每一步,求解一个深度向量 d,使得期望的批处理吞吐量最大化。实际操作中,可以先从所有存活序列的置信度中选出一个批公共的深度,然后针对每个序列贪心地截断——如果截断该序列能提升预期吞吐,就缩短其深度。仿真结果显示:

  • 在小批大小下,专家“集齐券”效应使得错误推测代价高昂,置信度门控能带来显著收益。
  • 随着批大小增大,批平均信号逐渐消失,此时全局固定深度反而可能更好(因为更大的批更加异质)。
  • 当接近计算受限的临界点时,收益再次出现:此时只有仍处于内存受限部分的模型才值得做推测。

仿真表明,置信度门控推测在不同的工作点上都能带来实质性的吞吐提升。但前提是推理引擎需要支持高效的不规则推测(ragged speculation),即同一个验证步骤中不同序列有不同的推测深度——目前 vLLM 和 SGLang 尚未很好地实现这一功能。

关键要点

  • 深度(推测解码)在特定条件下优于宽度(增加批大小):当内存受限且批大小很小时,深度策略通过利用连续 token 的专家共激活(co-activation),减少了需要加载的专家权重总量,从而节省带宽,提高输出 token 速率。
  • MoE 路由的非均匀性是核心原因:连续 token 倾向于激活相同专家,而随机 token 会激活更多不同专家;验证深度时只需移动更少的专家权重。
  • 固定深度策略存在次优性:真实数据中序列间的推测难度差异巨大(两极分化),固定深度无法同时兼顾容易和困难的序列。
  • draft 模型自身的置信度是可用信号:模型在每个深度上的预测置信度与实际被接受的 token 数量高度相关(完美校准),可以用来动态决定每个序列的最佳推测深度。
  • 置信度门控推测能提升吞吐:通过为每个序列(或同一批次的不同序列)分配不同的推测深度,可以更高效地利用计算资源;仿真显示在小批大小和计算受限边界时收益明显。
  • 工程瓶颈:要实现置信度门控,推理引擎必须支持不规则推测(不同序列在同一个验证步骤中消耗不同深度),当前主流框架(vLLM、SGLang)尚不支持此特性。

意义与影响

这篇文章揭示了推测解码在 MoE 模型推理中一个被忽视的优化维度:MoE 路由的局部性可以量化,且这种局部性使得深度(连续 token 验证)比宽度(随机 token 批处理)在内存受限场景下更高效。这一发现挑战了“增加批大小总是最优”的直觉,并为优化 LLM 推理延迟和吞吐提供了新的理论依据。

更重要的是,置信度门控推测的思路让推测解码从“一刀切”的固定深度策略进化到“个性化”的按需投入策略。它直接利用 draft 模型已有的信息(无需额外计算),在保留推测解码优势的同时,降低了被拒绝 token 带来的浪费。这在实际部署中潜力巨大,尤其对于需要处理多样请求的在线服务——例如聊天机器人、代码补全等,不同用户输入的推测难度千差万别。

但该方案的实用性取决于推理引擎的能力。当前 vLLM 和 SGLang 等主流框架尚未支持不规则推测,这意味着需要底层系统层面的改动(如处理可变长度的验证计算、动态调度)。如果未来框架支持这一特性,置信度门控推测有望成为标准优化手段之一。

此外,文章还暗示了 MoE 路由的非均匀性本身可能反映训练数据的分布特征——这对于理解模型行为、改进负载均衡损失函数也有启发价值。总体而言,这篇文章不仅是关于“宽度 vs 深度”的技术分析,更展示了如何利用模型内部的细粒度信号(专家路由、置信度)来优化推理系统,其思路可推广到其他涉及动态资源分配的 ML 推理场景。

查看原文 →blog.doubleword.ai