苹果港大联合团队提出扩散语言模型DiffuCoder
发布时间:2025-06-28 20:51 浏览量:2
最近这段时间以来,扩散语言模型( DLMs, Diffusion Language Models)愈发受到关注。在 Inception Labs 发布首个商业级 DLM Mercury 之后,谷歌在不久前也发布了他们的 DLM Gemini Diffusion,得益于其独特的并行生成机制,扩散模型在代码生成任务上表现出较大的潜力,尤其在提升生成速度和优化代码结构方面,被认为具有独特的优势。
不过,对于广大研究者和开发者而言,扩散模型在语言任务(尤其是代码生成)中的内部工作机制仍有许多未知之处。它们是如何进行全局规划的?其生成过程与自回归模型有何本质不同?又该如何有效地对其进行优化?
近期,一篇由苹果公司与香港大学研究人员合作发表的论文《DiffuCoder: 理解并改进用于代码生成的掩码扩散模型》(DiffuCoder: Understanding and Improving Masked Diffusion Models for Code Generation)[1],对这些关键问题进行了系统性的解答。该研究不仅推出了一个 70 亿参数的开源代码扩散模型 DiffuCoder,还深入剖析了扩散模型的解码行为,并提出了一套为其量身定制的高效强化学习框架。
图丨(a)DiffuCoder-Instruct 在采样温度为 1.2 时的真实解码过程示例;(b)编码基准测试结果;(c)当解码步骤减半时,使用 coupled-GRPO 训练的 DiffuCoder-Instruct 相比 Instruct 本身表现出更小的性能下降(来源: arXiv )
自回归模型通过逐词元、从左到右的线性方式生成文本。这种机制在保证序列连贯性方面表现出色,但对于代码生成这类本质上非线性的任务,存在一定局限。编程过程常涉及在不同代码块之间跳转、预先规划结构、后续补充依赖等操作,这是自回归模型的单向生成模式难以直接模拟的。
相比之下,扩散模型采用迭代式的并行“去噪 ” 过程。它从一个完全被 [MASK] 覆盖的序列开始,在多次迭代中同时评估所有位置,并逐步将 [MASK] 替换为实际词元。这种全局、并行的生成方式,理论上更适合处理代码这种具有复杂结构依赖的任务。
为了量化评估扩散模型的实际生成行为,研究团队引入了一个名为“自回归性 ” (AR-ness)的度量指标。该指标从“局部连续性 ” (模型生成相邻词元的倾向)和“全局顺序性 ” (模型从左至右填充的倾向)两个方面,分析模型的解码模式。
分析结果显示,扩散模型在解码时并不是完全随机的。受文本数据固有顺序性的影响,模型对紧邻提示词右侧的位置表现出更高的预测置信度,研究者将此现象称为“熵池 ” (Entropy Sink)。同时,这种“自回归性 ” 的程度会随任务类型变化:在生成代码时,模型的全局“自回归性 ” 显著低于生成数学解题步骤,这表明模型能够根据任务特性调整其生成策略。
研究还发现,采样温度(temperature)对扩散模型具有双重影响。在自回归模型中,提高温度主要用于增加词元选择的多样性。但在扩散模型中,温度的改变还会明显影响其对“在哪个位置生成 ” 的决策。提高采样温度会使模型的生成顺序更加灵活和多样化,不再严格局限于从左到右。这种行为多样性的增加,为后续的强化学习优化指明了方向。
图丨不同采样温度的影响(来源: arXiv )
利用强化学习优化代码生成是当前的主流方法,其奖励信号通常来自代码单元测试的通过率。但将标准强化学习算法应用于扩散模型面临挑战,主要在于精确估计生成序列的概率需要高昂的计算成本,且采样过程会引入高方差,导致训练不稳定。
为了解决这个问题,研究团队提出了一种名为“耦合-GRPO ” (coupled-GRPO)的强化学习算法。该算法的核心是引入一种互补成对的掩码采样方案。在训练的每一步,算法会为同一个代码样本创建一对互补的掩码。例如,若一个掩码覆盖了序列中的奇数位置,则另一个掩码就精确覆盖偶数位置。通过这种设计,在两次模型前向传播中,序列中的每个词元都能被评估一次。
图丨 DiffuCoder 训练阶段的流程以及 coupled-GRPO 算法的示意图(来源: arXiv )
这种“耦合采样 ” 机制有几个优点。首先,它保证了对所有词元的完整评估。其次,每个词元都是在有部分上下文的环境下被评估的,这比在完全隔离(全掩码)的情况下进行评估更接近真实解码情况,从而显著降低了概率估计的方差。该方法基于对偶变量(Antithetic Variates)的统计学原理,从理论上保证了方差的降低,使强化学习的训练过程更加稳定。
研究团队在多个代码生成基准测试上验证了 DiffuCoder 的性能。结果显示,经过 1,300 亿词元预训练的 DiffuCoder 基础模型,其性能已经与 Qwen2.5-Coder、OpenCoder 等开源自回归代码模型不相上下。
且相较于仅进行指令微调的版本,经过 coupled-GRPO 训练的模型在 EvalPlus 上还实现了 4.4% 的性能提升(这一改进仅使用了 21,000 个训练样本)。
图丨基准测试结果(来源: arXiv )
进一步的分析显示,优化后的模型“自回归性 ” 降低,对并行解码的适应性更强。当解码步数减半(即生成速度加倍)时,优化后的模型性能下降幅度更小。这表明模型对严格生成顺序的依赖性降低,更能发挥扩散模型并行生成的潜力。