这项由Meta人工智能基础研究团队(FAIR at Meta)与斯坦福大学、华盛顿大学联合开展的研究,于2026年5月发表,论文预印本编号为arXiv:2605.08044v1。感兴趣的读者可以通过该编号在arXiv平台上查阅完整论文。
现代语言模型的工作方式,大多数人都没仔细想过:当你在用ChatGPT或类似的AI工具时,它并不是真的"逐字逐字"地写出回答,而是把文字先切割成一个个"词片段"——专业上叫做"词元"(token)——然后对着这些词片段进行预测和生成。这种做法效率高,但也带来了一些隐患。比如,对于不同语言的用户来说,同样一段话被切割成的词片段数量可能相差几倍,中文用户往往"吃亏";再比如,遇到拼写错误、专有名词、代码这类不规则内容时,这套切词规则就容易"露馅"。
字节级语言模型就是为了根治这个问题而生的。顾名思义,它不再依赖预先设计好的词汇表和切割规则,而是直接对原始字节(也就是计算机存储文字的最小单位,每个英文字母、数字甚至汉字都由若干字节组成)进行处理,彻底绕开了词汇切割这道门槛。
然而,字节级模型长期以来面临一个让人头疼的问题:太慢了。原因不难理解——一个普通的英文词元平均覆盖好几个字节,如果模型要像传统方法那样"一步一步"地生成,对于同样一段文字,它需要走的步骤数远远多于词元级模型。这就像是一个厨师,别人用一把大铲子翻炒一道菜,而他非要用筷子一粒一粒地翻动食材,最终结果一样,但耗时完全不成比例。
Meta和斯坦福的研究团队把目光投向了一个已经在字节级领域展现出潜力的架构——字节潜变换器(Byte Latent Transformer,简称BLT)。BLT的聪明之处在于,它不是对每一个字节都进行"全力以赴"的深度运算,而是把字节动态地打包成长度不等的"补丁"(patch),然后集中精力对这些补丁对应的潜在表示进行运算。越难预测的文字内容,补丁越短、处理越精细;越容易预测的部分,补丁越长、处理越粗略。这样一来,整体运算量大幅降低。
但即便如此,BLT在生成文本时仍然是一个字节一个字节地往外蹦,这在现代AI推理的硬件层面造成了一个被称为"内存带宽瓶颈"的问题。通俗地说,就是模型的权重参数被反复从内存中调入调出,每生成一个字节就要搬运一次这些庞大的"工具箱",效率极低。
正是针对这个具体的瓶颈,这支研究团队提出了三种全新的训练与生成技术,统一冠以"快速字节潜变换器"(Fast BLT)的名号。这篇文章将带你完整地了解这三种方法的来龙去脉、实际效果,以及它们各自适合什么场景。
一、从"逐字节蹦跶"到"整块并行释放":BLT扩散模型是怎么炼成的
要理解研究团队的第一个发明——BLT扩散模型(BLT Diffusion,简称BLT-D)——先得了解扩散语言模型(diffusion language model)这个概念的基本逻辑。
扩散模型原本是图像生成领域的明星技术。它的核心思路是:先把一张清晰的图片"污染"成一团噪声,然后训练模型学会如何一步一步地把噪声"去除",还原成清晰的图片。文本领域的扩散模型借鉴了这个思路,但把"加噪声"改成了"遮盖"——把一段文字里的某些词或字节替换成特殊的"遮罩"符号,然后让模型学会把被遮住的内容猜回来。这和我们熟悉的完形填空非常像。
关键在于,扩散模型在生成时,可以同时预测一整段被遮住的内容,而不是像传统自回归模型那样必须先生成第一个字,才能生成第二个字,再生成第三个字……这种"并行生成"的能力,正是它速度优势的来源。
然而,把扩散模型硬塞进BLT的架构里,并不是件简单的事。BLT的补丁是动态计算的——文字的难易程度不同,补丁的长度就不同,这让"固定块大小"的扩散框架显得很别扭。研究团队的解法是:在训练时,构造出一些"固定长度的块",这些块的起点与BLT的补丁边界对齐,但块的长度可以超过单个补丁,延伸到后续补丁的字节中。这样,模型就被迫学会"向前多看几个字节",具备了预测超出当前补丁范围的能力。
训练过程同时使用了两个目标:一个是传统的"下一个字节预测"(逐字节的自回归损失),另一个是"被遮盖字节预测"(扩散损失)。二者合并成一个总损失函数一起优化。这样训练出来的BLT-D,既保留了BLT原有的自回归生成能力,又额外获得了并行扩散解码的能力。
在生成阶段,BLT-D的工作流程可以这样理解:编码器和全局模型(这是BLT架构中负责"深度思考"的大脑部分)照常工作,对已有的文字内容进行理解和编码,输出一组"潜在表示"。然后,解码器面对的不是一个空白位置,而是一整块填满了"遮罩"符号的固定长度区域,就像一张布满空格的填字游戏纸。解码器用双向注意力(它可以同时看到这块区域内所有位置的状态)对这些空格进行推断,每次可以填入多个最有把握的字节,直到整块区域全部填满。
填字的顺序由两种策略控制。一种是"置信度优先":每次选出模型最确定的那些空格填入,直到达到一个预设的置信度阈值。另一种叫"熵约束采样"(EB sampling):先按照每个空格的预测不确定程度从低到高排序,然后依次累加不确定性,一旦累加值超过某个阈值就停下来,把阈值以内的空格全部填入。这种方式可以和"top-p采样"结合,产生多样化的生成结果。两种策略都有一个保底机制:如果没有任何空格满足条件,就至少填入最有把握的那一个,确保不会卡死。
这套机制的实际效果怎么样?研究团队训练了四种模型:一个标准BLT,以及块大小分别为4、8、16字节的三种BLT-D变体(分别称为BLT-D-4、BLT-D-8、BLT-D-16)。每种模型都训练了10亿参数和30亿参数两个规模,所有模型都在同一个包含1万亿词元的大规模数据集上训练,确保比较公平。
从30亿参数的翻译任务结果来看,BLT-D-4在法语到英语翻译中获得了38.09分(BLEU分数,衡量翻译质量的标准指标),与BLT的40.72分差距不大,而它的内存带宽消耗比BLT低了约58%。BLT-D-8在同一任务中得到37.09分,内存带宽降低约78%。BLT-D-16则将内存带宽压缩到只有BLT的8%到13%左右,降低幅度高达87%到92%,但翻译质量有所下降,代码生成任务上的表现下滑更为明显。这说明块大小越大,速度越快,但模型需要"猜测"的未来字节越多,质量代价也越大。
二、BLT的"自我草稿":让轻量解码器替代专门的草稿模型
了解了BLT-D之后,我们来看第二种方法——BLT自我猜测(BLT Self-speculation,简称BLT-S)。这种方法的思路来自近年来在大模型推理领域非常流行的一项技术:推测性解码(speculative decoding)。
推测性解码的基本逻辑是:与其让大模型每生成一个词就搬运一次整个"工具箱",不如用一个轻量级的小模型先快速草拟出几个候选词,然后让大模型一次性验证这批草稿,接受对的、拒绝错的,并替换掉第一个出错的位置。因为大模型的一次并行验证往往比多次单步生成高效,整体速度就提升了。传统推测性解码的代价是需要维护两个模型,增加了系统的复杂性。
BLT-S则利用了BLT自身架构的特点,把"草稿模型"的角色交给了BLT自己的轻量解码器,完全无需引入额外的模型。
回忆一下BLT的工作方式:编码器把输入字节打包成补丁,全局模型对这些补丁进行深度处理,然后解码器根据全局模型的输出,一个字节一个字节地生成新内容。每当解码器生成到一个高不确定性的字节时(也就是下一个补丁应该开始的地方),BLT就会重新调用编码器和全局模型,获取最新的潜在表示。
BLT-S的改动很简单:不再在高不确定性处立刻停下来调用编码器和全局模型,而是让解码器"硬撑"着继续往下生成,直到生成了固定数量k个字节。这k个字节就是"草稿"。草稿生成完毕后,BLT才调用完整的编码器和全局模型,对整个包含草稿的序列进行一次完整的前向传播,得到每个位置的下一字节预测。然后,BLT-S从草稿的第一个字节开始逐一比对:若草稿字节与模型验证的预测一致,接受并继续;若不一致,替换掉该字节,并终止这轮草稿,从替换点开始下一轮。
由于验证使用的是贪心解码(即每次选概率最高的字节),且接受标准是精确匹配(草稿字节必须与模型验证的预测完全一致),BLT-S在贪心解码下保证输出与标准BLT完全相同——这是一个非常重要的性质,意味着加速没有任何质量代价。
实验数据印证了这一点。在30亿参数的翻译任务中,BLT-S使用k=8时,法语到英语翻译得分依然是40.72分,与标准BLT完全一致,但内存带宽降低了约51.65%;k=16时降低了约62.15%,不过此时解码器生成的草稿有更多字节不被接受(验收率降至约70%),说明解码器在预测较远的未来字节时开始力不从心。代码生成任务上,k=16时内存带宽降低约63%,质量同样没有损失。这意味着BLT-S在不牺牲任何生成质量的前提下,实现了相当可观的效率提升。
三、扩散草稿加上自回归验证:BLT-DV如何两全其美
有了BLT-D的高速并行生成和BLT-S的无损验证加速,研究团队自然想到了一个组合技:能不能用BLT-D的扩散解码器来生成草稿,再用自回归的方式来验证和修正这些草稿,从而在速度和质量之间取得更好的平衡?这就是第三种方法——BLT扩散加验证(BLT Diffusion+Verification,简称BLT-DV)。
实现这一思路的关键前提,恰恰就藏在BLT-D的训练设计里。前面提到,BLT-D的训练损失函数包括两部分:扩散损失和自回归下一字节预测损失。这意味着,同一个BLT-D模型,既可以用扩散模式运行(解码器对一整块遮罩位置进行双向注意力并行预测),也可以用自回归模式运行(解码器只用因果注意力掩码,一个字节一个字节地生成)。切换模式,只需要改变注意力掩码的设置,模型参数完全不用换。
BLT-DV的生成过程就是:先用扩散模式生成一块草稿字节,然后立即切换到自回归模式,对整段包含草稿的序列做一次完整前向传播,得到每个位置的下一字节预测,再用与BLT-S相同的验证逻辑逐一核对草稿,接受正确的,替换第一个错误的。
研究团队发现,在BLT-DV中使用"一步扩散"(也就是只做一次解码器前向传播就把整块遮罩全部填完,相当于最激进的并行生成)配合验证,是推理速度最快的设置。虽然一步扩散单独使用时质量会严重下降,但验证步骤有效地"兜了底",把质量拉回到一个可接受的水平。
具体来看30亿参数的代码生成任务(HumanEval):BLT-D-8在纯扩散模式(置信度阈值0.7)下得分15.85,而BLT-DV-8(一步扩散加验证)得分上升到16.46,内存带宽比BLT降低了约54%。BLT-D-16纯扩散下得分9.76,BLT-DV-16一步扩散加验证后提升至14.02,内存带宽降低约71.5%。对于翻译任务,BLT-DV-8的表现接近BLT-D-4的水平,而BLT-DV-16也明显优于纯BLT-D-16。可见,验证这一步确实在大块扩散时发挥了显著的质量修复作用。
代价是什么?验证需要额外调用一次完整的编码器和全局模型,因此BLT-DV的编码器和全局模型调用次数比纯BLT-D更多,总内存带宽比纯BLT-D略高。不过依然远低于标准BLT。这在速度与质量之间构成了一个合理的中间地带。
四、三种方法的横向比较:各有所长,各有代价
把三种方法放在一起看,我们可以清晰地感受到它们各自的定位。
BLT-D是三者中速度最快的。以30亿参数模型在翻译任务上的内存带宽为基准,BLT-D-4可以降低约57%到59%,BLT-D-8可以降低约77%到79%,BLT-D-16可以降低约87%到92%。代价是随着块大小增加,代码生成等需要精确逻辑推理的任务质量有明显下降,而翻译任务的质量则相对鲁棒。这说明扩散解码在处理"规律性强、容错性高"的任务时游刃有余,但在需要精确到每一个字节的任务(如代码)上会暴露出局限性。
BLT-S的优势在于"零损失"。它在贪心解码下与标准BLT生成完全相同的结果,不存在任何质量折损,内存带宽可以降低约50%到77%,具体取决于推测窗口大小k以及各任务的草稿接受率。它的不足在于增加了解码器的调用次数(解码器要额外跑k个字节的草稿),对于解码器参数量很小的模型来说这个代价几乎可以忽略,但如果未来解码器被扩大,这部分代价会变得更明显。
BLT-DV则是质量与速度之间的折中方案。它比纯BLT-D的质量更好,尤其是在大块扩散(如块大小16)时提升明显,但比BLT-S的质量略低(BLT-DV不保证与标准BLT完全相同的输出,因为扩散草稿本身就可能与自回归路径有所偏离,只是被验证过滤到"足够好"的程度)。内存带宽减少幅度大约在52%到81%之间,视块大小和任务而定。
五、还有什么被测量了:多样性分析与基准能力评估
除了主要的翻译和代码生成任务,研究团队还做了两类补充实验。
第一类是无条件文本生成的多样性分析。研究团队让BLT-D模型从起始符号开始自由生成最多1000个字节的文本,不给任何提示,然后计算生成文本的"词语类型-词语总数"比值(type-token ratio,TTR),这是衡量词汇多样性的一个简单指标,值越高说明生成的词汇越丰富、越不重复。
结果显示出一个清晰的规律:解码器调用次数越多,TTR越高;调用次数越少(也就是并行程度越高、每步填入的字节越多),TTR越低,文本越单调重复。这背后的逻辑是:当模型被要求一次性填完更多字节时,它倾向于选择最安全、最"显而易见"的内容,导致生成文本缺乏变化;而当它有机会逐步调整、每次只填几个最确定的字节时,生成的多样性就更高。这个现象揭示了扩散解码中一个内在的权衡:想要更快,就得接受更少的多样性。
第二类是标准语言理解基准测试。研究团队对所有BLT和BLT-D模型跑了ARC-Easy、ARC-Challenge(两个科学问答基准)、PIQA(常识推理)、HellaSwag(常识句子补全)和MMLU(多学科知识理解)这五个测试。
以30亿参数为例,BLT在ARC-Easy上得74.33分,BLT-D-4得72.39,BLT-D-8得70.95,BLT-D-16得66.89,分数随块大小增大而逐渐下滑。PIQA和HellaSwag上也呈现相同趋势。MMLU的差距相对小一些(BLT是41.15,BLT-D-16是37.08)。总体而言,BLT-D在添加扩散训练目标后,自回归能力有所下降,但仍然在合理范围之内,不至于"丢掉了语言模型的本分"。1B参数版本也有类似规律,但分数普遍低于3B版本(这符合模型越大越强的一般规律)。
这些基准结果同时也为BLT-DV的验证质量提供了间接依据:因为BLT-DV的验证步骤用的正是BLT-D的自回归模式,如果BLT-D的自回归能力越接近BLT,那么验证时的预测也就越准确,接受率越高,速度越快,生成质量也越有保障。
六、测量效率的方式:为什么用内存带宽而不是时钟秒数
细心的读者可能注意到,上面所有的效率讨论都是用"内存带宽"或者"网络函数评估次数(NFE)"来衡量的,而不是我们日常更熟悉的"每秒生成多少字"或"实际运行时间"。这个选择背后有明确的理由,研究团队在论文中也坦诚地说明了这是一个局限性。
现代AI模型在小批量、低延迟场景下(比如你在手机上跟AI对话,只有你一个人在用,不是一堆人同时发请求),推理速度的瓶颈主要不是计算量(浮点运算的多少),而是内存带宽(也就是把模型参数从内存搬到计算单元的速度)。每次做一次前向传播,就要把相关的模型参数从内存搬运一次。参数越多,搬运越慢;前向传播次数越多,搬运越频繁。所以用"参数量乘以前向传播次数"来估算内存带宽,是一个合理的近似。
具体的公式是:总内存带宽(GB)= b × [解码器前向传播次数 × 解码器参数量 + 编码器全局模型前向传播次数 × (编码器参数量 + 全局模型参数量)] / 10的9次方,其中b=2表示每个参数用16位浮点精度存储占2字节。
但NFE和内存带宽毕竟是估算,而不是实际测量的wall-clock时间(也就是你拿着秒表计时的那种真实耗时)。实际运行时间还会受到硬件特性、计算核心的利用率、KV缓存的管理方式、算子融合优化等众多因素的影响。研究团队明确指出,在高度优化的推理引擎上对这几种方法进行实际运行时间测试,是一个重要的后续工作方向。换句话说,本文的效率数据是理论估算,落地实现时可能与这些数据有出入,但整体趋势应当是成立的。
此外,这篇论文评估的模型规模是10亿和30亿参数,属于中等规模。更大规模的模型(如数百亿参数)上这些方法的表现,以及扩散解码与自回归验证的最优组合比例,都有待进一步探索。
说到底,这篇论文干的事情可以用一句话来概括:让字节级语言模型在生成时不再那么"费力",具体做法是给它们安上了"批量填字"、"提前打草稿"、"草稿加校对"这三种新本领。这不是什么改头换面的革命,而是在一个已经很有潜力的架构上,针对一个具体而现实的瓶颈,提出了有效的工程解法。
对于普通用户来说,这意味着什么?如果字节级模型在未来真的被广泛部署,这类技术上的改进会直接让AI回复速度更快、响应延迟更低,同时对多语言用户更公平,对包含特殊字符或格式的内容(比如代码、数学公式、罕见语言)处理得更准确。当然,从实验室结果到产品落地还有很长的路要走,论文自己也坦承NFE只是效率的代理指标,真实部署的性能还需要进一步验证。
如果你对这些技术细节有更深的好奇,可以在arXiv上以编号2605.08044检索这篇论文,看看研究团队在附录里提供的完整超参数扫描结果和更多分析。
Q&A
Q1:字节级语言模型和普通语言模型有什么区别?
A:普通语言模型(如GPT系列)把文字切分成"词片段"(token)再处理,不同语言切分效率不同,有时会"亏待"中文等非英语用户。字节级语言模型跳过了这一步,直接处理计算机存储文字的最小单位——字节,不需要提前设计词汇表,理论上对所有语言更公平,对拼写错误、代码等特殊内容也更鲁棒,但历史上速度较慢。
Q2:BLT-D、BLT-S和BLT-DV这三种方法哪个最好?
A:没有绝对最好,各有侧重。BLT-D速度最快,内存带宽最低,但在代码生成等精确任务上质量有下降;BLT-S不损失任何生成质量(贪心解码下与原BLT输出完全一致),效率也有显著提升;BLT-DV介于两者之间,比纯BLT-D质量更好,比BLT-S速度更快,适合对质量有一定要求但又希望加速的场景。
Q3:Fast BLT的研究结果是用真实运行时间测的吗?
A:不是。论文使用的是"内存带宽"和"网络函数评估次数(NFE)"作为效率指标,这是对实际推理成本的理论估算,而非秒表计时的真实运行时间。实际部署时的速度还受硬件、优化程度等因素影响。研究团队明确指出,在高度优化的推理实现上做真实时间测试是重要的后续工作。