首页 491 亿 token 的手术:tokenizer 的退出成本降到 1%
文章
取消

491 亿 token 的手术:tokenizer 的退出成本降到 1%

先看两件不相干的事

第一件你已经见过很多次了。问一个大模型:strawberry 里有几个 r?过去几年,好几个旗舰模型会一本正经地回答”两个”。它不是不会数数,而是压根没看见字母——在进入模型之前,这个词已经被分词器切成了一两个不可分割的 token,字母层面的信息在门口就被没收了。

第二件藏在你的 API 账单里。同样一句话,用英文和用中文写出来,切成 token 的数量可以差出好几倍,你的账单直接跟着差好几倍。这不是汇率问题,是分词器的问题:词表是在英文语料上训练出来的,其他语言的用户,实际在为这套英文中心的设计长期支付溢价。2026 年 10 月 7 日在线发表于《自然》第 658 卷的一篇论文,引用了先前一项标题就叫《Do all languages cost the same?》的研究来支撑这一点。

这两件事指向同一个部件:tokenizer。它是大模型脸上最不起眼的一个零件,却是你付费的计量单位、模型识字的全部视野。

而这篇来自 Allen Institute for Artificial Intelligence(Ai2)的论文——《Retrofitting language models to operate over bytes》——做成的事情可以概括成一句话:把”换掉 tokenizer”的成本,从一次完整的重新预训练,砍到不到 1%。

一、tokenizer 是大模型的 schema

写过数据库的人都知道 schema 是什么:表结构一旦定下来,所有业务代码都长在上面。改 schema 的成本从来不是改那几行 DDL,而是改所有依赖它的代码。所以正经团队对改 schema 的态度永远是:能不改就不改。

大模型的 schema 就是词表。

嵌入矩阵的行数等于词表大小;输出层每生成一个 token,都要对整个词表做一次 softmax 归一化;预训练学到的所有分布,都是”在这个词表上”的分布。你后来做的指令微调、RLHF、量化、推理加速,全部默认这套词表不变。想把词表从 15 万扩到 40 万去覆盖更多语言?每一步生成的输出层开销都跟着涨,而新词表上的模型等于一张白纸——之前的预训练一分钱都带不过来。

所以”要不要放弃子词分词、直接让模型读字节”这个讨论,其实吵了很多年。字节是最诚实的表示:没有词表,没有英文中心,任何字符都以 UTF-8 编码进入模型,strawberry 的每一个 r 都看得见。这条路从来不缺尝试——ByT5、Meta 的 BLT、后来的 H-Net,都是从头训练的字节级模型。但它们的性能长期落后于同规模的子词模型,差距大到没有商业团队愿意认真考虑。

于是这个问题的形态变得很奇怪:它的成本是无穷大,所以只能吵原则。“Tokenizer 是 LLM 流水线里最难设计、最难撤销、也许根本不该存在的部件”——这类论断在圈子里流传了很久,但始终停留在信仰层面,因为唯一的验证方式是烧掉一整次预训练的钱。

二、一场不动大脑的手术

这篇论文的做法,用外科手术打比方很贴切:病灶在眼睛,就不动大脑。

全局 Transformer——那个花了天价预训练、装着模型全部知识的部分——被原封不动地保留。工程师在它前后各装了一个小模块:前面是局部编码器(1 层 mLSTM),负责把字节流打包成一个个 patch;后面是局部解码器(4 层 mLSTM 和 FFN 的交替堆栈),负责把模型输出的 patch 还原成字节。打包与还原之间,原来的模型照常工作,只是它处理的”token”现在不再是查表切出来的,而是模型自己现场决定的字节段。

手术里最有意思的一个细节是边界怎么定。以前的字节级模型(BLT、H-Net 这些)在判断”哪里该切开”时只能因果地看过去——读到哪算到哪。这篇论文改成了非因果的边界预测器,允许偷看未来 1 个字节:当前字节和下一字节投影的余弦距离够远,就认为这里是个边界。只偷看一个字节,听起来寒酸,但这是 prefill 阶段才用的奢侈;真正解码时,他们把字节词表从 256 扩到 512——每个字节外加一个”带着边界符号”的版本——融合进一次输出,零额外开销。

那旧词表呢?没有浪费。每个字节的嵌入上,残差叠加了”以这个位置结尾的最长子词”的嵌入——旧 schema 被拆碎了,当脚手架埋进新地基里。

训练分两个阶段,一共 491 亿 token。第一阶段 98 亿,全局模型完全冻结,只教两个小模块学会把字节打包成全局模型能消化的 patch;第二阶段 393 亿,端到端一起训练。论文的估算口径是:这不到一次典型预训练预算的 1%。参数量的变化小到近乎行为艺术:7B 模型加了 330M(+4.5%),1B 模型反而减了 10M。

四个被改造的开源模型,名字起得像是某种行为艺术:Olmo 变成 Bolmo,Qwen3 变成 Bwen,Llama 3 变成 Blama。

三、三个值得单独拎出来的数字

第一个:62.5 对 62.3。 这是 Bolmo 7B 和源模型 Olmo 3 在覆盖科学、数学、编码、阅读与常识的综合测试集上的平均分;Bwen 8B 对 Qwen3 是 69.8 对 70.3。花 1% 的预算把表示层整个换掉,整体能力几乎没丢——这才是整篇论文成立的底线。换成任何主流的渐进式改法,这个底线都守不住。

第二个:+16.5%。 在 STEM 任务上,Bolmo 7B 比从零训练的同尺寸字节级基线 BLT 7B 高出 16.5 个百分点(绝对值)。这个数字的重点不在”赢了”,而在证明了从零训练的劣势可以被完全绕过。过去十年字节级模型的所有尝试都死在同一件事上:从零开始,追不上。现在有了第四条路——把一个已经训好的模型原地改装。

第三个:0.04%。 训练数据里只掺了 7500 万 token 的字符级练习——拼写单词、反转单词、交换字符这类小学作业——占总数据量的 0.04%。就这点剂量,模型在字符级理解任务上大幅超越了源模型。更值得琢磨的是,练习全用英语做的,多语言的字符级基准也跟着涨。这说明字符理解的瓶颈从来不在知识,纯粹在表示:模型一直”知道”字母,只是以前的输入格式让它看不见。

顺带一个反直觉的观察:代码任务上,Bolmo 的 pass@1 降了,pass@16 升了——单次生成的命中率略降,多次采样的命中率上升。换表示改变的是能力的形状(生成更多样),不是能力的总量。这个副作用是福是祸,取决于你在用模型做什么。

四、真正被改变的不是模型,是决策结构

读到这儿你可能觉得,这是一篇”某模型涨了几分”的论文解读。我认为不是。

这篇论文最重要的产出不是 Bolmo 本身,而是它把一个问题的性质改了:“要不要放弃 tokenizer”从信仰问题变成了成本问题。

信仰问题的特征是无法进入决策流程——你没法在预算表里写”原则”两个字。而 1% 是一个有单位、可以进预算表的数字。当一个原本要 all-in 的决定变成一次小额实验,它就会被真实地评估,而不是被永远地争论。数据库领域花了十几年,把 schema 迁移从”停机重写”做成”在线变更”,之后才有微服务拆分那一代架构。LLM 的表示层正在走这条路的第零步。

论文里还有一个容易被忽略的证据,指向同一个方向:他们用 task arithmetic(任务算术)的方式,把源模型的 RL 后训练 checkpoint 直接合并进改造后的模型,零额外训练成本。这件事的含义比它听起来的要深——它说明你花两年预训练攒下的东西,大部分并不依附在 token 边界上。知识与表示,第一次被证明是可以解耦的两层。旧 schema 的退出成本,主要从来不是知识迁移,而是没人试过便宜地迁移。

当然,把它读成”tokenizer 将死”就过头了。论文自己摆着的局限至少有四条:效果只在 8B 以下验证过,更大规模是未知数;多语言收益是论文明说的”预期”而非实验结论;字节序列更长,KV cache 的显存压力是实打实的;收益集中在字符级任务,一般推理和编码的边际提升有限。论文也没给出这次转换花了多少 GPU 小时或美元——”不到 1%”是 token 口径,不是账单口径。

所以我的判断是:这既不是革命,也不是玩具。它让表示层第一次可以被当作一个可替换组件来评估——而这正是所有基础设施部件走向成熟的标志。真正的连锁反应,要等第一个有生产压力的团队把这道 1% 的算术真的算进预算,才会开始。

结语:眼睛换得起之后

回头看 strawberry 那个老掉牙的笑话。模型数不对字母里的 r,从来不是智力问题,是视力问题——它戴着一副出厂就焊死的眼镜,而镜片的度数,是当年词表设计者按英文语料配的。

过去,换这副眼镜的费用是整双眼睛重买。现在有人证明,491 亿 token、不到 1% 的预算、一台不动大脑的手术,就能换成裸眼。眼镜店当然不会明天就倒闭——1% 也是钱,8B 以上还没人验证,老词表上拴着的生态比论文里任何一个数字都庞大。

但工程的直觉告诉我:当一个问题从”要不要”变成”多少钱”,它的答案就已经开始倒数了。


参考与延伸

  • 论文原文:Minixhofer et al., Retrofitting language models to operate over bytes, Nature 658, 915–922(2026 年 10 月 7 日在线发表):https://www.nature.com/articles/s41586-026-11111-4
  • 代码与模型:github.com/allenai/bolmo-core,Hugging Face 上的 Bolmo / Bwen / Blama 检查点
  • 论文引用的《Do all languages cost the same?》及 BLT、H-Net 等从零训练字节级模型的既往工作

说明:文中 49.1B token、两阶段拆分(9.8B + 39.3B)、参数变化(+4.5% / −0.7% / +1.5% / +2.7%)、+16.5% STEM 绝对提升、pass@1 / pass@16 变化、词表 256→512、1 字节前瞻等数字均取自 Nature 论文页及 Ai2 官方发布;综合分 62.5/62.3、69.8/70.3 来自论文报道转述。”不到 1%”为论文自述的 token 口径估算,论文未给出具体 GPU 小时或美元成本。

本文由作者按照 CC BY 4.0 进行授权

55 次退回与 10 万词条院规:Cockroach Labs 给 Agent 盖了一座医院

-