Rebas Daily PERSONAL AI DAILY — 自动选题 · 核查 · 撰写 NO.020 — 2026-07-24
PAPER H 38 约 7 分钟

FlowBlock:扩散语言模型并行破局

FlowBlock让多个文本块边写边改,绕开扩散语言模型的块间串行瓶颈。

你请几个人合写一份长报告,最稳妥的办法是:第一人写完第一节,第二人才开始下一节。但这样很慢。更快的办法是,第一节有了像样的草稿,第二人就先动笔;上游稍后改动,下游再跟着修。FlowBlock做的正是这件事:让扩散语言模型的多个文本块重叠生成,同时利用模型已有的改字能力修补早期草稿。

这项工作值得看,是因为它没有重新训练模型,而是改变推理时的工作安排。论文声称,这种“波前并行”在保留自纠错和前缀缓存的同时,显著提高了生成速度。不过,FlowBlock目前是一篇arXiv预印本,以下效果均来自论文作者自己的实验,尚无第三方复现。

能同时改很多词,为什么还是慢?

扩散语言模型(Diffusion LLM,简称dLLM)不像常见模型那样严格从左到右逐词续写。它先面对一批空缺或噪声词元——词元可以粗略理解为模型处理文字的基本单位——再经过多轮修改,把草稿变成完整文本。

这种方式能同时处理多个位置,却带来缓存难题。KV Cache可以理解为模型阅读和生成时留在草稿纸上的中间结果,复用它就不必反复重算。若整段文字一直变化,缓存也要不断刷新。

分块解码因此把长输出切成固定长度的块。模型在一个块内同时改多个词;块定稿后,其KV Cache被冻结,成为后续内容可直接复用的前缀。问题在于,传统方法必须等前一块完全结束,下一块才能启动。块内可以并行,块与块之间仍是一条单行道。

FlowBlock抓住了自纠错扩散模型的一项现成能力:T2T editing,即token-to-token editing。模型不仅能把空缺填成词,还能直接替换已经写出的词。于是,下游块未必需要一个彻底定稿的上游块;只要上游草稿已经提供了足够信息,它就可以先写,随后再根据更新后的上下文纠错。

不是一拥而上,而是看信号放行

FlowBlock的第一项机制叫Gated Wavefront Decoding,可译作“带门控的波前解码”。波前并行像瓦工沿一条斜线同时铺砖:下游不用等上游全部完工,只要条件成熟就提前启动。

这里的关键是readiness gate,也就是“准备度闸门”。系统观察当前最前方的文本块:还有多少空缺位置已经达到模型原有的解码置信门槛。只有准备度超过设定阈值,下一块才进入并行窗口。

放得太早,下游依据不成熟的上下文起草,后面可能要花更多步骤返工;放得太晚,又会退回按块串行。论文的敏感性实验也显示,近乎不设门槛时准确率会落后于串行的LLaDA-2.1;适度门控可以追回这部分差距。换句话说,FlowBlock的妙处不是简单地“多开几个块”,而是把“前一块必须定稿”改写成一个可以调度的条件。

进入窗口的多个块会共同迭代,但提交仍严格按顺序。最左侧的块完成后才会被冻结,写入已提交前缀。论文设计的windowed block-causal mask——窗口化的块级因果注意力遮罩——规定每个块只能看见已提交前缀、自己和左侧块,不能偷看右侧的未来块。

这使已经冻结的前缀KV Cache可以精确复用,不必额外刷新。这里的“精确”只针对冻结前缀,并不表示整个波前中的临时草稿与串行解码逐步完全相同;近似性仍存在于尚未提交的活动窗口里。

每个请求走自己的进度,GPU仍整批计算

单条请求可以形成波前,批量服务却更麻烦。不同请求准备和完成的时间不同。如果所有请求必须同步前进,整批任务会被最慢的一条拖住;如果完全拆开运行,张量形状又会变得零散,不利于GPU高效计算。

FlowBlock的第二项机制Heterogeneous Wavefront Packing,即“异构波前打包”,让每个请求保留独立的窗口、完成状态和提交位置,再把各自正在活动的窗口拼成稠密、形状稳定的一批前向计算。绝对位置编号负责保留每段文字原来的位置,逐行的块对角注意力遮罩则隔开不同请求及其不可见区域。

论文称,这种打包只改变执行方式,不改变每条请求的解码策略;打包后的结果与逐条独立执行在词元层面一致。其消融实验也把收益指向了异步调度:批量增大后,统一步调的版本会受“慢请求”牵制,而独立波前仍能继续扩展吞吐。

数字说明了什么?

作者在LLaDA-2.1-mini上实现FlowBlock,并在四个数学、四个代码基准上测试。表中batch size为1时,FlowBlock的平均TPS——每秒生成词元数——为261.2,高于串行LLaDA-2.1的177.9和LLaDA-2.0的115.7;平均单请求延迟分别为1.60秒、2.43秒和4.20秒。

质量没有随平均速度一起下降。八项基准的平均分中,FlowBlock为87.00,LLaDA-2.1为85.70,提升1.3个百分点。这个“点”不是1.3%,而是平均分的百分点差。单项并非全胜,例如MATH500上FlowBlock为76.20,略低于LLaDA-2.1的77.00;但四个代码基准上,FlowBlock均取得更高分。

论文摘要还报告了最佳场景数字:相对LLaDA-2.1和LLaDA-2.0,TPS最高分别达到2.95倍和4.01倍,延迟最高分别降低53.6%和77.1%。与需要训练的块间并行方法D2F相比,FlowBlock准确率更高,批量服务吞吐最高达到其16倍。这些都是“最高”结果,不能理解为所有任务或常用设置下都能获得同等增益。

为什么值得关注

FlowBlock改变的不是模型会什么,而是系统何时让它做什么。它把自纠错从一种提高文本质量的能力,进一步变成了并行调度的缓冲区:下游可以在略微陈旧的上下文上先写,模型随后负责收拾误差。

这为非自回归语言模型提供了一条不同的提速路线。过去,分块帮助它们重新利用KV Cache,却又引入块间串行;FlowBlock试图同时保住缓存、自纠错和跨块并行。更重要的是,它作用于推理阶段,不要求为并行能力再蒸馏一个专用检查点,也不需要修改模型内核。

局限与未知

  • 证据目前只来自作者论文。尚无同行评审结论、独立机构复现或真实线上负载验证。
  • 最亮眼的2.95倍、4.01倍和16倍均为最佳场景指标。供稿中的实验摘录没有完整呈现这些峰值对应的硬件型号、batch size、序列长度、具体基准配置及统计波动。
  • FlowBlock依赖模型原本具备T2T自纠错能力。论文验证对象是LLaDA-2.1-mini;这套调度能否原样推广到其他扩散语言模型,材料尚未给出答案。

供稿材料 SOURCES — 1

← 返回 2026-07-24 · 学术板块