[控场AI]
· 11 分钟阅读· 5,777 字

斯坦福NCM论文逐条核对:31倍提速到底快在哪

斯坦福NCM论文逐条核对:31倍提速到底快在哪

NCM按抽象层级并行生成文本,31倍提速实为对比扩散模型,受益者是本地单流用户而非巨头。

文章澄清了斯坦福NCM(下一概念建模)被标题党夸大的“31倍提速”:该数字是在固定长度新闻摘要任务上对比最强扩散模型的结果,论文从未与GPT等自回归模型做时间对比。NCM通过多尺度残差VQ将文本压缩为金字塔状离散码,Transformer逐层预测整层码而非逐token生成,把带宽瓶颈换成算力瓶颈。这一特性在单流本地推理中收益显著,但在数据中心高批大小场景下优势消失。NCM还受固定输出长度、模型规模小、训练流程未开源等限制,最受关注的文本模型在Hugging Face上仅有占位文件。文章最后推荐Diffusion Gemma作为今晚可跑的替代方案,但提醒其在代码任务上质量换速度不划算。

凌晨两点盯着屏幕上闪烁的光标,等模型写完两千字分析,你大概会开始算一笔不体面的账:这两千字我自己是不是早写完了?都2026年了,手上的卡能实时渲染三维画面,可它每写一个字都要停下来喘一口。

这时候斯坦福一个团队在X上发了条东西,50万人跑去读一个叫NCM的名词——下一概念建模(Next Concept Modeling)。传出来的说法是写文本能快31倍,某些题上还更准。于是标题党动手了:大模型要终结了,GPT已死。

据B站UP主对论文原文与开源代码仓库的逐条核对,以及YouTube频道对同一篇论文的解读,两方在"31倍"这个数字的真实含义上得出了一致结论:它比的对象根本不是GPT。这篇就带你从炒作落回地面走一遍——NCM到底是什么,它动了谁的饭碗,没动谁的,对你意味着什么。

旧架构的瓶颈:每写一个字,读一遍全部权重

你现在用的所有聊天机器人都是一个token一个token往下写,token大约是一个词,有时候是半个。架构上有一条死规矩:第500个token必须等第499个彻底写完才能开始。你要1000个token的回答,它就走1000步,每一步花的力气一样多。

而为了写这一个token,显卡得把模型的全部权重从显存里整个读一遍。换个说法:你写一篇文章,每写一个词都得先把那本800页的写作教材从头读一遍,写下一个词再读一遍。AI从左往右写的时候,算力上干的就是这件事。模型越聪明参数越多,权重越多就越拖不动——让AI有用的东西,正是让它慢的东西。

就是1024次读权重,

这不是"要是再快点就好了"的模糊愿望,是架构里一个量得出来的瓶颈,每天都在烧真时间、真钱。斯坦福的人说他们找到了办法,写回答时把权重读取次数砍掉一大截,50万人点进去也就理所当然。

但这类热闹我被烧过太多回。所以现在先看论文再看封面:也为某个模型兴奋过,后来发现评测题就是它的训练集;也为速度数字兴奋过,后来发现是批大小512跑出来的。可我在家办公,不会同时开512个对话。

自回归生成(Autoregressive Generation)是当前几乎所有大语言模型的标准工作方式:模型根据已经生成的 token 序列,逐个预测下一个 token,并把新 token 追加到输入中继续预测。这种模式在数学上等价于对序列的联合概率做链式分解,因此训练目标简单、优化稳定。但它有一个硬的物理后果:生成第 N 个 token 时,必须等待前 N-1 个 token 全部完成,无法并行。更关键的是,每生成一个 token 都要把模型全部参数从显存搬运到计算单元一次,而搬运耗时往往远超计算本身。因此自回归模型的生成速度主要由显存带宽决定,而非算力,这也是为什么高端消费级显卡在本地跑大模型时,token 每秒数常常远低于理论算力应有的水平。

NCM怎么工作:先画粗稿,再抠细节

你大概以为快31倍是找到了更快的选词法,恰恰相反,它到最后才选词。它不从左往右写,它从上往下写,一层一层。

最好懂的画面是一幅肖像。老办法是一笔一笔直接下中稿,从左画到右,不能回头,也不许打草稿。NCM是另一种画家:先起稿定大型,再铺明暗,再抠细节,睫毛留到最后。

睫毛留到最后。

拆开看是两块东西。第一块是单独的压缩网络,把一段话压成好几层编码,形状是个金字塔:塔尖只有几个码,是整个段落意思和结构的模糊草图;往下每一层更长,只存上面几层没兜住的部分;到底层,一个token一个码。所有层叠起来送进解码器,原文就还原出来了。论文管这个叫多尺度残差VQ。

第二块是标准Transformer,区别在于它不预测下一个token,而是一口气预测一整层的码,一次前向走完一层才往下走下一层。所以八层的模型就是八次,跟输出多长没关系。论文一步步演示:第一步跑完出来的是大方向不算错、具体到每个字全错的半成品,到第11步已经是干净准确的句子。

这里要澄清一件事:"下一概念"跟什么高级语义、什么思想一点关系都没有,它指的是从一个码表里跳出来的一个编号,说到底就是一个数字类别。跟Meta此前那套"大概念模型"更是毫无瓜葛——人家那个概念是一整句的向量,同一个词,两回事。

矢量量化(Vector Quantization,VQ)是一类把连续向量映射到有限码表中某个离散编号的技术,常用于图像压缩与生成。其基本做法是维护一个可学习的码本,编码器输出一个连续向量后,用最近邻查找替换为码本中距离最近的码字,从而用整数索引表示整段信息。解码器则反向查表还原。多尺度残差 VQ 在此基础上引入层级结构:第一层码本只捕捉最粗略的整体信息,第二层编码第一层未能重建的残差,依此类推。这样每一层只需负责上一层的“遗漏部分”,总码数更少、信息更紧凑,同时天然形成由粗到细的生成顺序。NCM 正是利用这种层级结构,让 Transformer 一次预测一整层的离散码,而不是逐 token 预测。

它和扩散语言模型不是一回事

两边都是分几趟把多个位置一起写出来,都号称比逐词生成快,但结构上有要命的差别。

普通的扩散语言模型一开始摆出一整块空格子,每跑一趟都把每一个格子修一遍。第一趟碰所有格子,第五十趟还是碰所有格子,所以每一趟开销一样重,想省时间少跑几趟,质量掉得很快。NCM反过来,一层走过就不回头:开头几趟只管塔尖那几个码,位置就那么几个,几乎没活所以飞快;越往后层越细,只有最后一趟才碰满全篇。

一句话:扩散把整份稿子改很多遍,NCM大纲写一遍、细节写一遍。这就是NCM前几趟便宜的根源。也正因为这样,论文几乎每个对照组都是扩散模型——作者本来就是拿它跟并行写法里最强的那一支打擂台。

扩散模型(Diffusion Model)原本是图像生成的主流范式:训练时对数据逐步加噪直到纯噪声,推理时从纯噪声出发,通过学习到的去噪网络反复迭代,逐步恢复出清晰样本。套用到文本上时,通常把 token 序列视为离散状态,在每一轮迭代中对所有位置同时去噪或修正。由于每一轮都要处理全部位置,总计算量约等于“迭代轮数 × 序列长度”,轮数越多质量越好但越慢。NCM 与扩散模型的关键区别在于计算分配:扩散模型每一轮的计算量固定且均匀,而 NCM 前几轮只处理少量高层码,计算量极低,只有最后一轮才覆盖全部位置。因此 NCM 的“早几轮”几乎免费,而扩散模型的“早几轮”和“晚几轮”一样昂贵。

31倍的账:比的是扩散模型,不是GPT

这一段我是放慢所读

这个31倍来自一个试验:给新闻写摘要,每篇摘要固定长度,NCM走8趟,它比的那个最强扩散模型走128趟,质量分大致相同,NCM早31倍收工。31倍是实测出来的,不是编的。

但实验设置里有两行比封面图分量重得多。第一,生成模型本身参数不大,可压缩网络是另算的另一套参数,缺了它一个字也生成不出来。第二,趟数是按模型定的,不是按回答定的:摘要模型永远8档,翻译模型永远11档,网页文本那个32档。你要三个字的答案还是要300字,档数一样,开销一样。

最要紧的一句:整篇论文一次都没给主流的自回归模型掐过表,里面每一个时间对比都是NCM对扩散模型。所以那个31倍不是比GPT快31倍,是在特定长度的新闻摘要任务上比某个扩散模型快31倍。论文里有一处作者挺敢放:德英翻译任务里放了一个平平无奇、逐词生成的自回归模型当对照,它反而赢了2.6分。NCM靠最小贝叶斯风险解码把差距追平,但那是拿大约一倍于对手的算力换来的。到了新闻摘要,风向倒过来,NCM赢得干脆。

所以按作者自己的数据计分:NCM赢一场,逐词赢一场,结构化推理那场NCM大胜。这是一篇挺有意思、也确实有贡献的论文,但它不是标题里那种革命,它是个新工具,有的地方强,有的地方弱。

对本地玩家意味着什么:瓶颈从带宽挪向算力

真正的故事不在OpenAI,不在谷歌,在你桌上这台机器。

逐词模型跑在显卡上时,显卡干的不是它被设计来干的活,大部分时间在等权重从显存走到计算核心——卡住的不是算,是带宽。换成NCM,这笔账完全不一样:同样长度的回答,权重读取次数大幅减少,搬运量成比例下降,同一台机器、同样的显存预算,时间省下一大截。

但省下来的搬运不会凭空消失,它变成了算。NCM处理的位置比输出的词多,每一个位置都吃算力,所以它干的是拿带宽问题换计算问题——这个交换,看过模型读长提示词的人都不陌生,就是预填充那一下:所有位置一起算,靠算力,不等显存。

有很实际的后果。现在挑本地跑AI的机器看的是显存带宽,因为生成时就卡在这个瓶颈上。可要是NCM这类做法铺开,瓶颈就挪到纯算力上。大多数统一内存方案带宽漂亮、图形算力一般,长远看这不算是好消息。不过今天还轮不到你操心。

预填充(Prefill)与解码(Decode)是大模型推理的两个阶段。预填充阶段处理用户输入的整段提示词,所有 token 可以并行计算,属于算力密集型,耗时与输入长度相关但并行度高。解码阶段逐个生成输出 token,每步只处理一个位置,却要读取全部权重,属于带宽密集型。NCM 的做法相当于把生成过程改造成类似预填充的并行计算模式:一次前向处理多个位置,权重读取次数被摊薄,计算密度上升。这也解释了为什么 NCM 在单流本地推理中收益明显——那里带宽是主要瓶颈;而在数据中心高批大小场景下,解码阶段已经被批处理摊薄了权重读取成本,NCM 的并行化收益就不再突出,反而可能因为固定输出长度而浪费算力。

数据中心里,革命的前提站不住

去了数据中心你会发现前提不成立。OpenAI服务的不是你一个人:你发给ChatGPT的那句话,会跟几百上千个请求拼成一批,一次读权重,这一批对话全用上了。为每个token读全部权重这件苦差事,被整批人摊了。到了这个规模卡本来就忙,批大小摆在那,芯片在真算。在那个环境里,拿带宽换算力看不出明显好处,甚至可能让服务商每次回答更贵。谷歌给Diffusion Gemma的说明里,漂亮的速度数字都注明了是在低批大小下测的;放出好成绩的团队也写明白了,每次测量批大小都是1,也就是一次一个对话。有评论说得最直白:文本扩散只在单流推理下占便宜——一个人,一块卡,一个模型。

那就是凌晨两点在家里的你,冷掉的咖啡,闪着的光标。所以并行写法要是有地方先划算,一定先划算在桌面上。讽刺的是,标题把它写成对巨头的威胁,可结构上巨头恰恰最不怕那个旧瓶颈,最容易被卡住的正是你。

为什么NCM今天还上不了你的机器

第一道限制是结构性的:每个NCM模型都往一个固定大小的盒子里写,摘要模型永远生成固定数量的位置,网页文本那个永远填满它那一档。你要5个token还是5000个,它照样填满那么多位置。打得短,算力就耗在空格子上;打得长,要么截断,要么换个大模型。做聊天机器人这是硬伤,同一场对话里问题长短能差出好几倍。

接着是规模。论文里最大的NCM按今天的标准小得可怜,在家认真跑模型的人骑手就是七八十亿参数。这条路放大成不成立,质量优势还在不在,训练会不会贵到没法做,都是开放问题。

700亿上质量优势还在不在?

最后是实操:GitHub上那份代码只能评测,现成模型能下能跑,但训练流程没放出来,而且整套东西要依赖特定厂商的卡和系统。对通用场景最该关心的那个写网页文本的模型,在Hugging Face上挂着文件夹,里面只有一个文件,名字是todo,五个字节——这就是那个最配得上头条的NCM模型的全部部署状态。

还有个质量问题得单独点出来:压缩那一步出错的时候,错法很集中,专有名词和数字会被换掉——人名、地名、参数、金额。你要是拿AI处理配置、价格、人物、日期、统计,那真是最不能容忍它换个名字、把数字写错的地方。

今晚就能跑的替代方案

有,只是它不是NCM。谷歌DeepMind的Diffusion Gemma今年6月10日发布,总参数252亿、一次激活38亿的混合专家路子,Apache 2.0协议,一次前向写15到20个token,Hugging Face上快70万次下载。单流推理上的提速是真的,在你的机器上、就在你那一个对话的场面里,它比同尺寸的自回归模型明显快一截。但谷歌把质量数字和速度数字并排放着没藏:数学竞赛基准上Diffusion Gemma拿69.1,同尺寸的Gemma 4拿88.3;代码基准上69.1对77.1。问题变成这份速度按什么汇率换来的——写摘要、改写、起草、随手聊两句,这批买卖是值的;可要是让AI写代码,一个变量名写错、差一个数编译不过,一小时白扔,这笔账就算不过来。另外有人反馈它的KV缓存大得离谱,32G显存几乎塞不下多少上下文,兴奋之前先看看自己的内存。

结论

NCM是真的,论文和代码也是真的,那些数字确实漂亮,结构也是新的——按抽象层次写而不是按线性顺序写,顺带把带宽需求砍掉一大截,值得认真对待。但NCM就是个语言模型,一个在文本上训练、突出文本的Transformer,按任何一条还算正经的定义,NCM就是大模型。你没法用一个更好的大模型去终结大模型。

它真正威胁的东西窄得多,也值得多想一层:大模型从左往右一个字一个字写、每个字把权重整个读一遍这个习惯。这个习惯是瓶颈,而且更像你的瓶颈,不是OpenAI的——你没有那个福气把几千个对话做成一批来摊成本。这篇论文没有改变你这个月该买什么,今晚要跑的每个模型还是一个token一个token递写,决定手感快慢的还是显存带宽那一行。但下次看参数表时,除了带宽那行,也开始看算力那行。要是这个势头继续,瓶颈就会挪位置。今天照旧买带宽,从明天起开始看算力。

#NCM#下一概念建模#斯坦福NCM论文#文本生成加速#扩散语言模型#Diffusion Gemma#本地大模型推理#显存带宽瓶颈
分享:

相关推荐