Hacker News 中文摘要

RSS订阅

如何构建扩散语言模型 -- How to build a diffusion language model

本文介绍了如何构建扩散语言模型,涵盖掩码扩散原理、概率视角、块扩散实现灵活长度生成、编码器/解码器架构、迭代精炼与纠错、蒸馏加速采样,以及扩散模型在可控生成中的应用。

正文

好的,这是对原文主要内容的中文重述,已保留关键细节并删减了与主题无关的目录和图片引用等元素。


如何构建扩散语言模型

引言:自回归与扩散语言模型

当前主流的两类生成式AI算法中,对于图像等连续数据,最先进的是扩散模型;而对于文本等离散数据,标准方法是自回归模型。本文探讨了基于扩散范式的离散数据替代方案。

主流语言模型是自回归的:它们从左到右逐个生成词元,每个词元都依赖于之前的词元。这种方法虽然强大,但存在固有局限: * 无法纠错:一旦生成一个词元就无法修改,早期错误会不断累积。 * 生成速度慢:生成一个序列需要与词元数量相同的步骤,不利于快速并行生成。 * 因果注意力:生成过程只能回顾过去,无法看到未来的上下文。

扩散模型则不同。它们不是逐个生成文本,而是从初始猜测开始,通过若干步骤迭代优化,一次性生成整个序列。这带来了几个优势:可以通过使用更少或更多的步骤来权衡生成速度和质量;过程中的错误可以修正;每一步都能关注双向上下文。

将扩散应用于语言曾是一个长期难题。2024年,该领域迎来了转折点,扩散模型在质量上变得与自回归模型具有竞争力。到2026年,扩散大语言模型已成为现实,主要工业实验室(如Inception Labs、Google、NVIDIA)都发布了相关模型。本文追溯了这些现代模型背后的思想和论文。

背景:高斯扩散

在介绍语言扩散之前,我们先简要回顾一下用于图像生成的高斯扩散。其核心概念是去噪。扩散模型通过逐步去噪来生成图像:从纯随机噪声开始,每一步去除一点噪声,直到出现清晰的图像。通过许多小步骤生成图像比一次性生成要简单得多。

模型学习去噪的关键在于,通过展示噪声逐渐转化为图像的示例来训练它。扩散通过两个互补过程实现:前向过程将干净的源图像逐步转化为纯噪声;反向过程学习逆转这个转化,将纯噪声变回图像,它在前向过程产生的图像到噪声的轨迹上进行训练。

简单的掩码扩散模型

将扩散应用于语言的主要障碍是,对于离散的词元,“噪声”应该是什么含义。一个简单而有效的方法是通过掩码来定义噪声。这种方法可以理解为一种去掩码Transformer。我们通过取干净的序列,随机掩码其中一部分词元,然后让一个双向Transformer来填空来训练模型。这本质上就是具有随机掩码率的BERT,但不同于BERT,由此产生的模型是生成式的。你可以将掩码扩散视为一个生成式BERT。

训练好去掩码Transformer后,我们可以通过从一个完全掩码的序列开始,并重复两个步骤来生成文本: 1. 填充:让模型填充当前序列中的每个空白,得到干净词元的粗略猜测。 2. 重新掩码:随机地将填充后的序列中的部分词元重新替换为掩码,但保留比上一轮更多的未掩码词元。

每一轮,被掩码的位置都会减少,直到序列收敛为一个干净的样本。因此,生成过程相当于从一个充满空白的序列开始,然后以任意顺序逐渐填入单词。

我们也可以从概率的角度来理解这个过程。与高斯扩散类似,掩码扩散也可以描述为由前向和反向过程组成的模型。前向过程的目标是为反向过程生成训练数据,其输出是一条从数据点开始到纯噪声序列结束的轨迹。在掩码扩散中,我们随机掩码离散序列中的一部分词元。掩码量由一个调度控制,它扮演着高斯扩散中信噪比的角色。反向过程则学习逆转这个轨迹,从完全掩码的序列开始,最终生成类似于干净数据的输出。

总结来说,掩码扩散语言模型与BERT非常相似,有两个关键区别: * 它允许使用原则性的采样算法,对应于潜变量模型中的祖先采样。 * 训练使用随机掩码率,这对应于对数似然的一个原则性变分下界。

构建一个真实的扩散语言模型

上述的掩码扩散模型有助于建立直觉,但还不能用于生产。它们只能生成固定长度的序列,不支持开箱即用的迭代优化(纠错),并且如果没有额外的后期训练,速度也不够快。以下扩展解决了这些限制。

块扩散通过在被生成词元条件约束下,对块进行扩散来解决固定长度生成的问题。这些块可以是任意大小,并且自然地支持KV缓存,这是一种在自回归模型中加速序列生成的技术。

编码器-解码器架构将计算表示和去噪的任务分开。一个编码器负责表示已生成的干净词元,一个轻量级解码器负责迭代优化带噪序列。这种架构是当前最先进的开源扩散大语言模型的核心。

迭代优化与内置纠错。标准掩码扩散模型缺乏纠错能力,因为一旦一个词元被去掩码,它就再也不能被更新。现代扩散语言模型通过修改前向和反向过程来恢复这种能力。重新掩码是一种简单的修复方法:在每一步,我们保留一些新去掩码的词元,但也重新掩码一小部分先前已去掩码的词元,让它们被重新生成。另一种方法是均匀状态扩散,其前向过程不是掩码,而是用词汇表中的随机词元替换词元。在生成时,模型看到的序列没有掩码,并决定是否替换每个词元,这自然支持纠错。

加速扩散采样。由于扩散可以每步生成或优化多个词元,它可能比自回归生成快5-10倍。采样加速通常受到渐进式蒸馏的启发:一个模型在其自身的生成结果上训练以跳过一步,并递归重复,每轮将采样步骤减半。

扩散实现可控生成。扩散模型擅长可控生成:生成一个同时满足目标属性的样本。由于它们是全局优化而非提交到不可逆的局部编辑,扩散模型能更有效地导航样本空间,并生成具有目标属性的更好样本。在实践中,可控性表现为自然度和属性满足度之间的帕累托权衡。扩散模型通过基于分类器的引导和无分类器引导等技术在可控生成方面特别有效。

扩散语言模型的后期训练。扩散语言模型也可以使用强化学习进行后期训练,以改进推理能力。主要挑战在于,像策略梯度方法这样的强化学习算法需要采样轨迹的似然,这对于自回归模型很容易计算,但对于掩码扩散模型则很昂贵。新的算法通过估计这些轨迹的对数概率来解决这个问题。

当今的扩散大语言模型

在过去的几年里,扩散语言模型已被扩展到数十亿参数,在规模上显示出优于自回归模型的改进。

生物与科学领域是扩散语言模型最早的成功领域之一。原因有二:生物序列不太可能表现出自回归模型固有的从左到右的偏差;科学应用通常受益于可控生成,这是扩散的自然优势。例如,ESM3模型将掩码扩散应用于蛋白质建模,参数高达1000亿,在蛋白质生成方面设立了新的最先进水平。Nucleotide Transformer v3 (NT-v3) 模型家族将掩码扩散扩展到DNA序列,支持通过离散无分类器引导和重新掩码来生成具有目标属性的DNA序列。

基于扩散的大语言模型在过去18个月中迅速涌现。LLaDA将掩码扩散模型扩展到80亿参数,报告了与自回归模型相比有利的扩展性。Mercury是第一个商业扩散大语言模型,其差异化优势在于速度,在标准GPU上超过1000词元/秒/用户,同时匹配同类模型的质量。Gemma Diffusion是一个现代开源扩散模型,结合了均匀状态扩散、块扩散、编码器-解码器架构和加速采样。Nemotron Diffusion是一个开源扩散模型家族,使用联合自回归-扩散目标进行训练,报告了比同类自回归模型大约2-8倍的吞吐量。

结论与思考

扩散语言模型领域在过去两年中发展迅猛,多个前沿实验室发布了生产级扩散大语言模型。扩散在速度、可控性、多模态和推理时扩展方面提供了潜在优势。虽然扩散尚未扩展到与自回归模型相同的参数、计算和数据规模,但在高达1000亿参数上的实验显示出巨大潜力。

扩散是通往更智能模型的路径吗?一个扩展定律视角。 从2019年到2024年,模型智能最重要的进步无疑来自大语言模型的预训练扩展。是什么让这种扩展成为可能?Transformer架构的发展以及计算资源的更广泛可用性。Transformer之所以特别,是因为它引入了一种完全并行的训练算法,能够扩展到大型GPU,从而开启了大语言模型革命。

自2024年以来,预训练的收益趋于平稳,模型智能的提升主要来自后期训练和推理时计算的扩展。然而,后期训练和推理都受限于快速生成的能力,而目前这是通过顺序算法完成的。如果推理也能像训练一样实现并行化,那么结果可能会加速智能的提升,其幅度可能与我们之前在预训练中看到的同样巨大。

我们认为扩散就是可能使推理完全并行并释放这些增益的方法。简而言之,扩散之于推理时和后期训练扩展定律,可能就像Transformer之于RNN对于预训练扩展定律一样。通过能够每秒花费更多的FLOPs,扩散可以解锁更好的硬件利用率,这反过来又打开了我们扩展能力的大门。现在判断扩散会以多快的速度改进还为时过早,但可以说,在我们看来,其潜在回报是巨大的。

评论

根据评论内容,总结主要观点如下:

1. 对扩散模型(如Diffusion Gemma)的积极评价
- 评论2(作者quirino)认为理解ELBO推导后模型变得简单,并推荐使用ChatGPT填补知识空白。
- 关键引用:"Once you give names to the larger mathematical structures... it becomes quite simple."
- "ChatGPT was surprisingly helpful... it can do an amazing job filling in the gaps."
- 评论3(作者gdiamos)肯定Diffusion Gemma在GPU上的速度,认为其作为本地模型可用。
- 关键引用:"I’ve been using diffusion Gemma and it is very fast on GPUs in output token/sec."
- "Even with those caveats, it is very use-able as a local model."

2. 对扩散模型局限性的讨论
- 评论1(作者electroglyph)指出文章未提及置信度,建议参考其他模型。
- 关键引用:"good stuff, no mention of confidence tho, recommend having a look at diffusiongemma and others."
- 评论3(作者gdiamos)提到Diffusion Gemma白皮书承认“若有更多时间和算力可做得更好”。
- 关键引用:"In the diffusion Gemma whitepaper, they say they could have done better with more time and compute."

3. 对文本生成方法的创新思考
- 评论5(作者radarsat1)提出用图像扩散方法生成文本(如渲染文字后OCR),质疑是否优于传统token方法。
- 关键引用:"instead of all the complexities induced by discrete token generation, just generate the image of the text using standard image diffusion methods."
- "I’d be curious to know if it compares on par with token-based methods."

4. 其他资源推荐
- 评论4(作者rottc0dd)推荐Welch Labs关于图像扩散模型的视频教程。
- 关键引用:"A good video from welch labs on image generation with diffusion models."

总结:评论整体对扩散模型持肯定态度,尤其关注其速度与实用性,同时指出置信度缺失、算力限制等不足。部分评论提出创新方向(如图像扩散生成文本),并推荐学习资源。