论文

精炼的连续扩散语言模型可以通过几个步骤或一个步骤编写代码

Distilled Continuous Diffusion Language Models Can Write Code in Few Steps---or One

摘要

语言生成几乎普遍被视为一个顺序过程:自回归模型一次发出一个标记,而扩散语言模型则用长的迭代细化轨迹取代了 词元级 序列性。在这项工作中,我们介绍了 PlaidQ,一种用于代码生成的 0.7B 连续扩散语言模型,并表明它的轨迹可以被积极地分解为几个去噪步骤,甚至一个,从而实现高效的代码生成。 PlaidQ 将预训练的自回归模型重新用作连续词元嵌入的双向降噪器。我们通过分布匹配来实现少步生成,并通过配对轨迹监督来实现一步生成。在匹配的模型规模上,PlaidQ 在代码生成方面与离散扩散语言模型具有竞争力。然后,蒸馏 改变了质量计算前沿:一名 16 步学生在 HumanEval 和 MBPP+ 上达到 31.78 和 40.49 pass@10,超过了采样 512 步的同一 PlaidQ 老师。在极端情况下,配对轨迹 蒸馏 通过单个去噪步骤在 HumanEval 上实现了 7.07 pass@1,生成功能正确的程序。总之,这些结果将连续扩散确立为少步和一步代码生成的可行途径。从广义上讲,连续扩散不仅仅是语言的另一种表示:它提供了一个接口,通过该接口,语言模型可以继承连续扩散建模的加速和 蒸馏 机制。训练和推理代码以及模型检查点可在 https://github.com/pengzhangzhi/plaidq 获取。