DiffuCoder

DiffuCoder

DiffuCoder是苹果公司与香港大学研究人员合作提出的一个面向代码生成的扩散大语言模型(dLLM),参数量为70亿,基于Qwen2.5-Coder适配改造而来,并在1300亿词元的代码语料上训练而成[1][2]。与之配套的研究提出衡量生成顺序的「自回归性」指标,以及名为耦合-GRPO(coupled-GRPO)的强化学习训练方法,用于提升扩散模型的代码生成表现[3]。

目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

DiffuCoder是一个参数量为70亿的开源扩散大语言模型,专门面向编程与代码生成任务。它属于掩码扩散模型路线:与逐词元顺序输出的自回归模型不同,它从一个被掩码符覆盖的序列出发,经多轮迭代并行地把掩码替换成实际词元[2][1]。

该模型并非从零训练,而是由已有的自回归代码模型Qwen2.5-Coder转换而来,因此同时具备扩散式并行解码的结构与代码领域的预训练知识[4]。相关工作在研究模型本身之外,还把 DiffuCoder 当作实验平台,用于分析扩散语言模型的解码规律与训练后优化策略[3]。

原理

在掩码扩散框架下,前向过程逐步破坏原始序列,把词元替换为掩码;反向过程则由神经网络在给定提示前缀的条件下,预测被掩码位置的内容,并经过若干扩散步不断降低序列中被掩码的比例[4]。解码时可以同时评估所有位置,按置信度选择先还原哪些词元,因此生成顺序不必严格从左到右[5]。

为描述这种非顺序性,研究提出「自回归性」(AR-ness)指标,分局部与全局两个角度:局部指标统计新还原词元是否紧接前文连续出现,全局指标统计还原位置是否集中在剩余掩码的最左侧,纯自回归解码时两者都等于1[4]。测量发现模型在第一步对各位置的置信度呈「L」形分布,紧邻前缀的位置得分偏高,这一现象被称为熵池(entropy sink)[5][2]。

在强化学习阶段,作者把扩散过程视为马尔可夫决策过程,沿用分组相对策略优化(GRPO)的框架,但用耦合采样改造似然估计:为同一段补全取一对时间步,使其满足 $t+\hat{t}=T$,并施加两个互补掩码,使每个词元恰好在一次前向中被还原。于是全部词元都能得到非零学习信号,估计方差也因对偶变量结构而下降[4]。

发展历程

该工作由苹果公司与香港大学的研究人员合作完成,论文题为《DiffuCoder: Understanding and Improving Masked Diffusion Models for Code Generation》,作者包括 Shansan Gong、Ruixiang Zhang、Huangjie Zheng、Jiatao Gu、Navdeep Jaitly、Lingpeng Kong 与 Yizhe Zhang[3]。

训练采用分阶段流程:先以 RefineCode 与 Stackv2 代码语料做适配预训练,再用 OpenCoder 数据做中期退火训练,随后用约 43.6 万条指令微调样本进行监督微调,最后进入耦合-GRPO 强化学习阶段[4]。作者提到,数据质量比数量更关键:预训练阶段扩展到 700B 词元后,下游验证表现反而弱于只用 65B 词元的版本,因此提前结束该阶段[5]。

2025 年 7 月 1 日代码开放,7 月 2 日模型文件在 Hugging Face 上发布,随后出现面向苹果芯片的 MLX 实现与 8 位量化版本;项目说明还提到 14B 规模模型仍在训练中[6]。

应用

DiffuCoder 的直接用途是代码生成,覆盖函数级补全与指令条件下的程序编写,其效果通常以 HumanEval、MBPP、EvalPlus、BigCodeBench 等基准上的通过率来衡量[5]。在 130B 代码词元上完成前两阶段后,基础模型的表现与同规模的 Qwen2.5-Coder、OpenCoder 大致相当[4]。

经过耦合-GRPO 训练后,模型在 EvalPlus 上较指令微调版本提升 4.4 个百分点,在 HumanEval 与 MBPP 的加强版上有更大幅度的提升,同时把解码步数减半时的性能衰减变小[3]。

除模型本身外,这套方法也被视为扩散语言模型训练与推理策略的实验载体:公开的仓库在开源工具链基础上给出耦合-GRPO 的实现,可供后续研究复用。

局限

扩散语言模型在文本数据上仍保留明显的从左到右偏好。测量显示,DiffuCoder 的局部与全局自回归性都更接近 1 而非 0,说明其解码在很大程度上仍接近顺序生成,非自回归的潜力只被部分释放[4]。

指令微调带来的增益相对有限。作者指出,在相同监督数据下,扩散模型经指令微调后的提升明显小于自回归模型,这一差距正是转向强化学习后训练的直接动因[5]。

采样效率与探索能力之间也存在取舍。温度较低时单次采样的准确率较高,但多次采样的增益很小,样本多样性不足;提高温度虽能改善 pass@k,却可能损害单次结果[5]。此外,该模型的规模为 70 亿参数级别,公开材料未给出其在更长代码库级任务上的结果[2]。

参见

  • Qwen2.5-Coder —— DiffuCoder 由该自回归代码模型适配改造而来。

  • 扩散模型 —— 掩码扩散与去噪过程是 DiffuCoder 生成机制的基础。

  • 大语言模型 —— 词条所属的模型类别。

  • 强化学习 —— 耦合-GRPO 属于其策略优化方法的一支。

  • GRPO —— DiffuCoder 后训练所采用的算法框架。

词条评价
词条统计

浏览次数:1 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-28T18:56:59Z

历史版本

本条目引用的词条
Qwen2.5-Coder 扩散模型 大语言模型 强化学习 GRPO