

作者丨张璐
编辑丨张驰
写作往往伴随着整体构思、局部推敲和反复修改。一句话中的用词,既取决于前文,也可能受到后文的影响。由此出发,语言模型的生成过程,是否也可以在多个位置同时展开,再逐步补全文本?
在前不久的CNCC 2026上,上海交通大学副教授邓志杰以“扩散大语言模型方法及应用”为题,围绕一个核心问题展开讨论:能否在保证生成质量的同时,让扩散语言模型生成得更快?
从LLaDA、Dream的基础路线,到跨块并行生成、后训练和推理系统优化,邓志杰梳理了将并行潜力转化为实际速度的多种方法。
他强调,评价效率既要看每轮能够生成多少token,也要计入每轮耗时,并结合答案正确率、代码通过率考察生成质量。演讲最后,他介绍了相关方法在流式视频、语音修复、多模态与智能体中的应用探索。雷峰网(公众号:雷峰网)
以下为演讲主要内容。
我们写一本书,往往先写一遍,再反复重写。修改前面的内容时,会联系后面的章节;推敲“僧推月下门”还是“僧敲月下门”,也需要结合上下文。这说明,创作文本并不一定严格遵循从左到右的顺序。
扩散语言模型把这种想法付诸实践:同时预测多个缺失位置,逐步补全文本。这次分享主要讨论,怎样在保证生成质量的同时,尽可能提高生成速度。

自回归模型通过链式法则,将联合概率分布拆成一系列条件分布,标准解码依次预测下一个token,也就是文本的基本单元。这里重点介绍的掩码扩散模型,则先对序列中的不同位置独立进行随机掩码,掩码比例随时间步变化,再学习反向恢复过程:根据带掩码的序列,预测缺失内容。
推理时,模型每轮会预测所有掩码位置,但只选择其中一部分提交,其余位置留待后续迭代。例如,六个token可以分三轮完成。不过,轮数减少并不意味着实际速度同比提高,因为每一轮的计算开销也需要考虑。

LLaDA把这条路线扩展到了8B参数规模。预训练时,它对完整序列随机掩码;监督微调时,只对回答部分掩码。它还展示了生成能力随训练算力扩展的趋势。

Dream采用另一条路线:复用已有自回归模型的权重,再进行扩散继续训练。这里要调整两个方面:注意力从因果结构转为双向结构,学习任务从预测下一个token转为恢复掩码内容。Dream还保留了预测位置偏移一位的结构,以更好地复用自回归模型的能力。从零预训练和从已有模型转换,都可以构建性能较好的扩散语言模型。
评价效率,可以先看一个简单关系:实际速度约等于每轮有效提交的token数,除以每轮耗时。前者用TPF衡量,即每次前向计算实际提交多少token;实际生成速度则用TPS衡量,即每秒生成多少token。同时,还要观察答案正确率、代码通过率等质量指标。

早期扩散语言模型有两个实际问题:一是难以复用KV缓存,需要反复计算上下文;二是生成窗口大小固定,难以灵活输出长文本。如果每轮只能接受两三个token,却要对整个窗口重复计算,计算开销就会不断积累。
Block Diffusion采用“块内扩散、块间自回归”的方式。一个块内部可以并行生成,完成后缓存其KV状态,再生成下一个块。这样既能复用计算,也能通过追加块来扩展输出长度。

但它把并行范围限制在块内。比如代码中相隔很远的一对括号,如果分属不同块,就无法同时生成。因此,我们希望前一个块尚未完成时,后一个边的块也能同时开始生成。
D2F(Discrete Diffusion Forcing)将Diffusion Forcing的思路引入语言模型:前面的块噪声较低、信息更完整,后面的块噪声较高,多个块同时去噪。随着前面内容逐渐确定,后面的生成也逐步推进。

训练时,我们使用具有双向上下文的教师模型,指导采用块状因果注意力的学生模型。学生在块内使用双向信息,在块间保持因果关系,使完成的前序块能够进入KV缓存。
推理时,随着当前块的生成进度推进,系统追加新块;完成的块进入缓存,后续块继续生成。

这种方式的增益来自两个方面:多个块同时生成,提高每轮提交量;缓存已完成块时,也能继续解码后续块,减少单独为写入缓存而占用一次前向计算的情况。
进一步分析发现,D2F仍存在训练与推理不一致的问题。训练时,整个回答被切成多个块,噪声往往逐渐递增;实际推理时,同时活跃的通常只有两三个块,而且相邻块的噪声差距可能很大。
为此,我们提出MultiBD,也就是多块扩散。训练设计要覆盖实际推理中的窗口大小、块的位置以及噪声间隔。例如,同时生成两个、三个或四个块时,一个块可能处于不同位置、拥有不同生成进度。通过对这些组合进行模拟,让模型更好地适应推理时的状态。

算法并行度提高以后,还需要相应的推理引擎。多块生成时,每轮活跃块的数量可能变化,计算图也随之变化。我们设置固定大小的Block Buffer,用固定物理槽位容纳动态运行的块:完成块进入缓存,新块复用空闲槽位,从而减少动态调度的开销。

在两张H100、单样本、张量并行度为2的测试设置下,MBD-LLaDA2-Mini达到约746 TPS。这里仍要把每步产出和每步耗时结合起来看,不能只依据TPF判断实际加速。
即便采用了多块生成,质量与速度之间仍有折中。降低解码接收阈值,每轮接受更多token,可以加快生成,也可能损害质量。尤其在早期,上下文还不充分,一次提交太多内容容易放大误判。
一类方法是Consistency Force,简称CForce:用后期更充分的预测,指导早期预测。

具体来说,先收集模型自身的解码轨迹,再按掩码比例划分阶段,由相邻阶段构成监督对,让早期预测接近后期预测。对于具有编辑能力的模型,待填充位置和已经生成、又被修改的位置都可以参与学习。同时,使用与目标置信度相关的分布约束,并加入交叉熵监督,帮助模型学会正确提交token。
在相同解码阈值和块长下,LLaDA2.1-mini经过CForce训练,四项任务平均得分从85.57提高到86.41,平均TPF从6.94提高到9.08。在两张H20、张量并行度为2、单样本的系统测试中,GSM8K和HumanEval上的速度分别约为1232和1353 TPS。
另一类方法是强化学习。对扩散语言模型来说,同一个问题可以有不同的生成顺序。这些轨迹不仅最终答案可能不同,生成并行度也可能不同。因此,奖励可以同时考虑“答得对不对”和“生成得快不快”。

我们的LightningRL分别对正确性奖励和TPF奖励做组内标准化,再将它们结合起来进行更新,同时加入token级负对数似然损失,防止训练偏离。采样时,还要尽量探索具有不同并行度的轨迹,并保留能够得到正确答案的探索空间。
在两个数学任务和两个代码任务上,LightningRL平均达到7.32 TPF,MBPP上达到11.10。在同样固定TPF为7的比较中,GSM8K准确率由原始SDAR的71.2%提高到87.5%。
除了训练,还可以改进推理算法。这里介绍Fast-dLLM和LoPA。
Fast-dLLM无需额外训练,主要结合两种策略。第一种是近似KV缓存。对于双向注意力模型,上下文变化会影响其他位置的状态,因此复用旧状态属于近似。通过缓存前缀以及尚未生成的掩码后缀,可以减少重复计算。

第二种是基于置信度的解码:不预设每轮固定接受多少token,而是接受预测置信度超过阈值的位置。缓存主要降低每轮耗时,置信度解码主要提高每轮提交量。
在LLaDA-Instruct、GSM8K 5-shot、生成上限256、单张A100且批量为1的实验中,两者结合使速度从6.7提高到54.4 TPS,准确率从79.3%变为78.5%。

LoPA进一步考虑:在当前选择某个位置选择解码位置时之后,应该尽量保证下一步是否更容易产生大量高置信度预测,即下一步解码时并行度更高,从而加速整个推理过程?。也就是说,这其实是要求在解码时向前看一步。

但只追求未来置信度也会出问题。朴素的前瞻策略可能选择出生成更快、内容质量却不好的路径。因此,LoPA我们保留基于当前置信度的基础路径,再构造多个前瞻候选,并行比较它们后续剩余掩码位置的置信度,选择更有利于继续并行解码的分支,同时复用验证得到的预测结果。
增加探索分支,通常可以提高潜在并行度,但收益会逐渐饱和。系统上,我们把不同候选的验证分发到多个GPU并行执行,再同步选中的状态与缓存。在MBPP测试中,结合LoPA的分布式推理引擎,单样例请求生成速度达到1073.9 token/s。
第一个应用方向是流式视频生成。多块并行的思想与视频生成关系密切,而视频通常可以使用固定大小的运行窗口。我们将这一思路拓展为WaveForcing,让不同视频块处于不同去噪阶段,在流水线填满后持续输出。

这里既需要适应多块噪声状态的训练,也需要系统优化。不同GPU处理不同块时,可以将KV通信与计算重叠;VAE解码也要与生成过程并行,避免成为整体瓶颈。
在测试中,端到端速度达到约117帧/秒,后续系统优化进一步达到150帧/秒,同时兼顾视频质量、动态性和长视频稳定性。
第二个方向是语音修复。面对噪声、混响、带宽限制和丢包,模型既要恢复自然的声音,也要保留“说了什么”和“谁在说话”。扩散语言模型能够结合整句前后文恢复受损语义,也能利用文本预训练中的语言先验。
TIMUSE分两步处理:先通过Whisper编码,配合文本扩散语言模型恢复语义token;再结合退化语音的声学信息,通过条件流匹配和声码器重建声音。实验显示,掩码生成与文本预训练有助于提升内容准确性,并基本保持音质与音色。

还有多模态与智能体方向。LLaDA-o探索将文本扩散与图像等模态的生成结合,通过理解与生成分支之间的双向注意力,协调不同模态的表示与生成过程。

在智能体场景中,模型需要调用工具、接收反馈,再继续生成。LLaDA 2.2还探索了删除、插入和重新生成等编辑操作。配合相应语料进行监督微调,可以让扩散语言模型学习这些能力。这也是未来值得继续探索的应用方向。



