5月23日,NVIDIA在HuggingFace上发了一篇博客。
标题很长,叫「Towards Speed-of-Light Text Generation with Nemotron-Labs Diffusion Language Models」。
我点进去之前,第一反应是,又来一个「光追级」的营销词。
但看完之后,我愣了大概十秒钟。
不是因为看不懂,是因为我想到了一件事。
我们过去三年跟大模型对话,已经习惯了它一个字一个字往外蹦。
GPT-3的时候是这样,GPT-4也是这样,Claude、Gemini、Qwen,全部都是这样。
我们觉得这就是AI本来的样子。
但也许,它本来不应该是这个样子的。
这件事值得认真聊一下。
这件事得从根上说。
现在你用的几乎所有大模型,ChatGPT、Claude、Gemini、Qwen,它们的生成方式本质上都是一样的,叫自回归,Autoregressive,简称AR。
AR的意思是,模型每次只能生成一个token,生成完这个token之后,把它塞回输入,再生成下一个。
就像你玩文字游戏,只能看已经写出来的部分,猜下一个字是什么。
这种方式有个致命问题,它没法并行。
GPU明明可以同时算几万个东西,但AR生成的时候,每个新token都必须等前一个token算完,因为后一个token的注意力机制需要依赖前一个token的Key和Value。
用大白话讲,就是GPU大部分时间不是在算,是在等。
等数据从显存搬到计算单元,再等计算结果搬回去。
这个瓶颈有个名字,叫内存墙。
很多人觉得大模型推理慢是因为计算量大,其实不是,是因为数据搬来搬去把时间全耗完了。
那有没有办法让模型一次生成好几个token,甚至一次生成一整块内容呢。
有,这就是扩散语言模型,Diffusion Language Model,简称DLM。
扩散模型的思路来自图像生成。
DALL-E、Midjourney、Stable Diffusion,它们都是扩散模型,先生成一堆噪声,然后一步步去噪,最后得到一张图。
图像扩散模型之所以快,是因为它生成图像的时候是并行的,整张图的像素是同时算的。
这个其实玩过 ComfyUI 的人都有体感。
你用 Nano Banana Pro 出图,一次出4张,不是4张图排队一张一张跑,是同一个去噪步骤,batch 里4个样本同时算。
扩散模型每一步都是矩阵运算,batch 起来非常自然,显存够就能一次跑N张。
这不是什么 API 技巧,是扩散模型架构本身就支持的东西。
但文字不行。
你现在跟 ChatGPT 对话,它也是一个字一个字蹦出来的,背后那个 AR 模型,本质上跟扩散模型完全相反,它是严格串行的。
所以这里有个很讽刺的事情。
我们用来生成图像的大模型,早就用上并行计算了。你 ComfyUI 里一个 batch 拉满,8张图同时出,GPU 的几千个核心都在干活。
但我们用来聊天的文本大模型,反而还在用一个字一个字串行生成的方式,GPU 大部分核心在旁边围观。
NVIDIA 这篇论文做的一件事,简单说就是,把图像扩散模型的并行生成方式,搬到了文本生成上。
那文字能不能也这么干。
能,但很难。
文字是离散的,一个字就是一个字,你不能把一个字「插值」成半个字。图像是连续的,像素值可以是0到255之间的任意数,所以可以从噪声逐步收敛到清晰图像。
文字不行,你必须精确地生成每一个token。
所以扩散语言模型的研究走得很慢。
2021年,D3PM这篇论文第一个提出了离散扩散模型,但效果很烂,生成质量远不如AR模型。
2022年,Stanford的Diffusion-LM尝试用连续嵌入空间来做文本扩散,效果好了一些,但还是不够好,而且速度优势没有完全体现出来。
之后的几年,这个方向一直不温不火,大家觉得DLM是个有趣的研究方向,但离实用还远。
然后到了2025年,事情开始变了。
Inception Labs推出了Mercury,声称在H100上能达到1000+ token/秒,比传统AR模型快10倍。
Google推出了Gemini Diffusion,虽然还没完全开放,但已经在内部测试了。
然后就是2026年5月23日,NVIDIA亲自下场了。
NVIDIA这篇博客的核心,不是提出了一个新算法,而是做了一个很「NVIDIA」的事情。
他们把现有的预训练AR模型,改造成了同时支持三种生成模式的统一模型。
三种模式分别是:
自回归模式,就是传统的逐token生成,跟现在的GPT、Claude完全一样,兼容性最好。
扩散模式,按块生成内容,每次生成一整块token,然后通过迭代去噪来优化这块内容,生成速度最快,但精度会有一点点损失。
自推测模式,这个最有意思,用扩散模块并行生成一堆候选token,然后用AR解码的方式来验证这些候选token对不对,只对了的才保留。
第三种模式,自推测,Self-speculation,是整篇博客里最值得关注的东西。
因为它的逻辑是,我用我自己的前半部分来生成草稿,再用我自己的后半部分来验证草稿。
不需要额外的小模型来当草稿模型,也不需要两个模型之间做对齐。
这是跟传统推测解码,Speculative Decoding,最大的区别。
传统推测解码需要两个模型,一个小草稿模型负责快速生成候选,一个大验证模型负责逐个验证,两个模型要是能力差距太大,加速效果就很差。
NVIDIA的这个方案,同一个模型既当爹又当妈,自己生成草稿自己验证。
根据博客里放出来的数据,在B200 GPU上,自推测模式的生成速度能达到约865 token/秒。
作为对比,同规模的AR模型在同样硬件上大概只有200多 token/秒。
4倍提速。
而且,零温度设定下,自推测模式的输出跟纯AR模式完全一致,没有精度损失。
这个数字让我盯着屏幕看了很久。
但光看数字没用,我更关心的是,这个东西到底是怎么做到的。
我翻了NVIDIA研究页面上放出来的技术信息,大概理清楚了他们的思路。
核心其实不复杂,复杂的是工程实现。
他们先有一个已经预训练好的AR模型,比如Nemotron 8B,然后在这个基础上做进一步训练,让模型同时学会两种生成方式。
训练的时候,损失函数是双重的,一部分是AR损失,保证模型保留原来的逐token生成能力,另一部分是扩散损失,让模型学会并行生成和一步步去噪。
这个思路在学术界有个名字,叫AR-to-DLM转换,Efficient-DLM这篇论文里系统阐述过。
但NVIDIA做对了一件事,他们解决了DLM一直没法很好支持KV缓存的问题。
KV缓存是大模型推理加速的关键技术,简单说就是把每个token的Key和Value存下来,后面生成新token的时候直接查表,不用重新算。
AR模型天生支持KV缓存,因为生成是顺序的,每个新token只依赖前面已经算过的KV。
但DLM是并行生成的,一开始所有位置都是噪声或者[MASK],你没法预先知道哪个位置会生成什么,所以传统的KV缓存用不了。
NVIDIA的解法是块级注意力,Block-wise Attention。
把文本分成一块一块的,块与块之间保持因果性,块内部可以做双向注意力。
这样,已经生成完的块可以正常用KV缓存,正在生成的块内部并行算,算完之后再把KV存进缓存。
这个设计很巧妙,但实现起来非常复杂,需要处理大量的边界情况。
我看了他们放在GitHub上的训练代码,基于Megatron-Bridge框架,光配置文件就几十个。
这个东西不是你clone下来就能跑的,需要对分布式训练和扩散模型都有相当深的理解。
说到这里,你可能会问一个问题。
这个方向,Inception Labs的Mercury不是已经做出来了吗,NVIDIA进来有什么不同。
这个问题问得好。
我仔细对比了一下Mercury和Nemotron Labs Diffusion的技术路线,发现了一个很有意思的差异。
Mercury的做法,是从头训练一个扩散语言模型,它的整个架构就是为扩散生成的,AR生成可能不是它的强项。
NVIDIA的做法,是在已有的AR模型上加扩散能力,相当于给一个已经很能打的模型装了一个新的引擎。
这两种路线的优劣,现在还不好说。
从头训练的扩散模型,上限可能更高,因为它没有被AR的生成范式约束住。
但基于AR模型改的,落地成本更低,因为你可以直接复用已经训练好的大模型,不用从头开始。
而且,NVIDIA这篇文章里反复强调一个词,兼容性。
他们的模型,在AR模式下,跟普通的自回归LLM完全没有区别,现有的所有LLM基础设施,vLLM、SGLang、TensorRT-LLM,都可以直接跑。
要切换到扩散模式或者自推测模式,只需要改一行配置。
这个设计选择,非常NVIDIA。
它不是要让你换掉现有的东西,它是要让你在现有的东西上,多一个选择。
但这里有一个问题,我一直没想通,直到我看了更多资料。
扩散语言模型这个方向,学术界研究了快5年了,为什么是现在才开始有能用的东西出来。
答案其实很朴素,就是算力和数据的门槛。
DLM要同时优化AR损失和扩散损失,训练时的计算量是纯AR模型的好几倍。
而且DLM对数据质量的要求比AR模型更高,因为并行生成的时候,一个位置生成错了,会影响周围好几个位置的解码。
2021年的时候,没有人有那么多算力去从头训练一个大的DLM。
到了2025年、2026年,算力成本降下来了,NVIDIA、Google这些有算力有数据的公司,才开始认真做这件事。
所以这件事的本质,不是算法突破了,是算力红利终于蔓延到了DLM这个赛道。
这个判断很重要。
因为如果我的判断是对的,那接下来12到18个月,我们会看到更多的大公司推出自己的DLM产品。
不是因为突然之间大家都想通了算法怎么弄,是因为现在训练DLM的成本,已经降到了大公司愿意买单的程度。
回到NVIDIA这篇博客。
我觉得最值得关注的信息,其实不是速度提升了多少倍,而是他们在研究页面里埋了一句很不起眼的话。
「所有模型均采用商用友好的授权协议,可免费用于研究和商业场景。」
Nemotron 3B、8B、14B,三个规模,每个规模都有基础预训练版和指令微调对话版,全部可商用。
还有视觉语言模型,8B参数,支持图文多模态输入,也开源了。
这个动作,跟2023年NVIDIA开源Nemotron-3的方向是一样的,用开源换生态。
你想想看,如果开发者可以免费拿到一个能跑865 token/秒的开源模型,而且部署起来跟普通LLM完全一样,只是改一行配置。
你会不会试一下。
只要有一部分开发者试了,觉得好用,NVIDIA的生态就扎下根了。
这一步棋很慢,但很狠。
我前面提到了,自推测模式在零温度下输出跟AR模式完全一致。
这个特性意味着一件事,自推测模式可以无缝替代AR模式,不需要改任何上层应用代码。
你之前用AR模式跑的所有东西,Prompt模板、RAG流程、Agent框架,全部不用改,只要把推理引擎的配置改一下,生成速度直接翻4倍。
这才是我觉得最可怕的地方。
它不是要你重新学一个新范式,它是让你在旧范式里,直接获得新范式的性能。
这种打法,历史上出现过很多次。
iPhone出来的时候,它不是让你放弃功能机,它是让功能机的用户发现,哦原来还可以这样。
然后一夜之间,所有人都在换手机。
当然,现在说这个还为时过早。
Nemotron Labs Diffusion目前还没有完全合并到SGLang的主分支,你要用得自己去GitHub上找PR,手动编译。
而且,865 token/秒这个数字,是在B200 GPU上跑SpeedBench数据集测出来的,真实场景下的表现,可能会有折扣。
但方向已经很清楚了。
写到这里,我想回到文章开头说的那件事。
我们过去三年跟大模型对话,已经习惯了它一个字一个字往外蹦。
GPT-3的时候是这样,GPT-4也是这样,Claude、Gemini、Qwen,全部都是这样。
我们觉得这就是AI本来的样子。
但也许,它本来不应该是这个样子的。
GPU几千个核心同时在跑,本来就不应该大半时间耗在等数据搬来搬去。
NVIDIA这篇博客的标题里有一句话,Speed-of-Light Text Generation。
光速文本生成。
这是一个很NVIDIA的标题,很大,很满,有点过度承诺的感觉。
但如果你真的去跑一下他们的模型,看看那个生成速度,你可能会跟我一样,愣个几秒钟。
然后想到一件事。
我们过去三年建立的关于AI生成速度的直觉,可能要更新了。
原文地址:https://huggingface.co/blog/nvidia/nemotron-labs-diffusion
