科研深读|2026 年 10 月 13 日更新
2026 年 10 月 7 日,Nature 发表论文 Retrofitting language models to operate over bytes,可以意译为「将既有语言模型改造为字节级模型」。研究团队提出 Byteification(字节化改造):不抛弃已经投入巨额算力预训练的子词模型,而是在原有主干周围建立字节级输入输出与可学习的分组机制。结果表明,改造后的模型可在多类任务上接近来源模型,并明显改善字符粒度理解。
先看结论:这不是「Token 已死」,也不是「只用 1% 算力重训同等级模型」;它更像是给一台现成的语言引擎换上可直接读写字节的接口,并通过继续训练完成适配。
原文:Nature |DOI: 10.1038/s41586-026-11111-4 |Ai2 研究介绍
阅读导航:三句话读懂这篇论文
- 问题:传统分词器把文本预先切成子词,便于计算,却把「每个字节与字符如何组成单词」这一层信息藏在了固定词表里。
- 方法:让局部网络按字节读写,让大型 Transformer 继续按动态组合的片段(patch)工作,再借助原模型进行低追加成本的迁移。
- 证据:研究报告约 49.1B token 的两阶段追加训练、1B—8B 规模的多家族验证、字符理解与部分效率改进;通用能力和实际部署成本仍有取舍。
一、研究问题:Tokenizer 究竟带来了什么限制?
当前主流大语言模型通常先用固定词表将文本切成 subword token,再交给 Transformer 等网络处理。这个方案很有效率,却也带来了几个问题:
- 字符细节不直观:代码符号、拼写、DNA 等科学序列往往对一个字符甚至一个字节的变化高度敏感;
- 切词方案影响行为:同一段文本的分组方式可能改变模型学习到的表示,甚至改变下游表现;
- 词表存在语言偏向:子词词表通常与训练语料的语言分布密切相关,对跨语言、陌生字符串未必公平;
- 词表大小与计算成本纠缠:增加词表可以使用更粗粒度的 token,但 embedding 与输出 softmax 的代价也可能上升。
直接处理原始 UTF-8 字节看似可以绕过固定子词词表,但若深层 Transformer 逐字节执行,序列变长也会带来显著计算开销。因此,真正的问题不是“能不能读字节”,而是能否以接近成熟子词模型的性能和速度来读字节。
还需明确:字节并不等于汉字或 Unicode 字符。一个常见汉字在 UTF-8 中通常占三个字节;字节级语言模型面对的是编码单元,并非天然完成汉字级语义拆分。
背景补课:一个 Token 到底是什么?
在许多 LLM 中,分词器首先把连续文字映射成一个个整数 ID,随后模型通过 embedding 表把 ID 转换成向量。常见的 BPE(Byte Pair Encoding,字节对编码) 及其衍生算法,会不断合并训练语料中经常共同出现的符号片段,因此高频词片段可能只占一个 token,生僻字符串却可能被拆成多个 token。不同模型的真实切分取决于各自的词表和规则,不存在所有模型通用的「一个汉字对应一个 token」关系。
用一个可核验的编码例子解释字节粒度:
| 输入 | UTF-8 字节(十六进制) | 字节数量 |
|---|---|---|
A |
41 |
1 |
中 |
E4 B8 AD |
3 |
😀 |
F0 9F 98 80 |
4 |
这张表描述的是 UTF-8 编码,不是某一款 LLM tokenizer 的实际 token ID。字节模型需要从这样的原始编码序列中学习哪些字节属于同一个字符、词或语义结构。它不再受固定子词词表的直接约束,但也必须面对更长的原始输入序列。
技术前史:为什么不是更早全面采用字节?
将文字拆成字符甚至字节,并不是什么新发明。过去已经出现直接操作细粒度输入的模型与框架;论文提到的 DTP(动态 token pooling)、BLT(Byte Latent Transformer)与 H-Net 都属于「先将字节分组,再交给较大模型处理」的潜在分词路线。相比每个字节都调用一次完整 Transformer,这类方法试图把昂贵计算集中到较稀疏的语义片段上。
| 技术路线 | 主要做法 | 典型代价 |
|---|---|---|
| 固定子词分词 | 先用词表切出 token,再交给主干 | 低序列长度,但字符粒度表达受分词结果影响 |
| 逐字节密集建模 | 对每个字节运行主要模型 | 输入通用,深层计算次数可能大增 |
| 潜在分词 / 动态 patch | 小型局部网络处理字节,主干处理分组片段 | 需设计边界、聚合和解码机制 |
| Byteification | 复用成熟子词模型主干,再把输入输出改成字节级 | 不必从零训练主干,但需要新增模块与迁移训练 |
这里真正的新意是研究问题发生了变化:此前往往从随机初始化比较字节模型与子词模型;这项工作则问,「能否继承一台已训练好的优秀模型,让字节架构不用重复支付完整的预训练成本?」这也解释了为什么它选取了 Olmo、Qwen3、Llama 等成熟模型作为起点,而非只展示自研字节模型。
参考背景:Nature 论文正文与 Related work 、Ai2 对 Bolmo 的研究说明 。
二、技术核心:把外部切词变成模型内部的动态分组
论文使用 Latent Tokenizer Language Model(LTLM,潜在分词语言模型) 思路。模型接受字节序列,但通过学习得到的边界将若干连续字节组成 patch(片段),只让昂贵的全局主干处理片段表示。
文本 → UTF-8 字节
↓
局部编码器(mLSTM)
↓
边界预测 / patches
↓
汇聚(Pooling)
↓
全局 Transformer 主干
↓
展开(Depooling)
↓
局部解码器(mLSTM)
↓
逐字节预测与输出关键改进是边界预测的时序设计。 在处理完整输入提示词(prefill)时,边界预测器可利用后续一个字节的信息,以更好地模拟原始子词 tokenizer 基于后文决定边界的行为;在自回归输出(decoding)时,未来字节尚不存在,因此由输出侧同时预测下一个字节和片段结束位置。这并不是生成时偷看未来,而是分别处理了输入预填充和因果解码两个阶段。
架构还会复用来源模型的深层 Transformer 参数,并在字节侧添加局部编码器、解码器、边界预测器等模块;实验中还利用原始子词 embedding 的信息改善效率。所以 Byteification 更像是「为成熟模型更换文本接口并做适配」,而不是完全重练一套网络。
为什么「看后面一个字节」如此关键?
固定子词分词器有一个容易被忽略的特性:它在拿到完整输入时,会依照上下文决定切分边界。即使两段字符串的前缀完全相同,后续字符不同,也可能使前缀末端的切分不同。论文用近似 _Hello_Wor! 与 _Hello_World! 的例子说明:仅根据已经出现的字节判断边界,不一定能复现子词分词器的行为。
先前许多 LTLM 边界预测器只能利用当前位置及其之前的字节,称为因果式(causal)边界预测。本研究在已有完整输入的预填充阶段,允许边界决策再参考下一个字节,从而改善与旧模型分词行为的对齐。到了真正生成未来内容时,模型仍按因果条件运行,不会在尚未生成的字节上作弊。
为什么仍然需要 patch?如何理解效率?
假设一段文本包含 L 个字节,平均每个 patch 汇聚 r 个字节,那么全局 Transformer 大约只需处理 L/r 个位置。这个近似只说明主干序列长度的减少,不等于整机延迟恰好缩短 r 倍;局部编码/解码、边界预测、内存访问和硬件实现本身都有成本。
这种设计同时回避了两难:若每个字节都调用大型主干,计算过重;若只增大固定子词词表以获得更长的 token,输出层又可能受到词表规模引发的 softmax 计算瓶颈。论文正是在这一质量—速度折中上测试了更高压缩率。
三、训练方法:先复现旧模型,再联合优化
研究采用两个阶段完成转换:
- 阶段一:子词到字节的迁移。 固定全局主干,训练局部模型、边界预测器及预测头,使其尽可能模拟原始子词模型。实验使用约 9.8B(98 亿)token。
- 阶段二:端到端适应。 开放整个模型参与优化,让深层网络真正适应字节表示和动态分组。实验使用约 39.3B(393 亿)token。
合计约 49.1B(491 亿)追加训练 token,按来源模型的分词计量;论文还提供约 43B 字节 + 173B 字节 的训练规模对应值。作者称该 token 数少于典型预训练预算的 1%。但必须强调:这里比较的是已有模型的转换阶段,并未将来源模型原本的预训练成本计算为零。也不应将 token 数量比直接视为精确 GPU 小时或能耗比例,因为两阶段的冻结范围、反向传播与计算开销不同。
论文分别改造了多类模型:
| 字节化模型 | 来源模型 | 实验意义 |
|---|---|---|
| Bolmo 7B | Olmo 3 7B | 验证在开放预训练骨干上的转换效果 |
| Bwen 8B | Qwen3 8B Base | 验证对不同模型家族的适配 |
| Blama 8B | Llama 3 8B | 检查迁移方法的普适性 |
| Bolmo 1B | OLMo 2 1B | 观察更小规模下的能力与效率 |
一个重要的实验控制:提升来自架构,还是追加数据?
论文采用 Dolma 3 预训练混合数据,并额外加入约 7500 万(75M)token 的字符级合成任务,约占训练混合数据的 0.04%。这些任务包括拼写、逆序、字符替换、删除与交换。作者确保用于生成训练题的词表与 CUTE 测试词不重叠;这批合成任务仅使用英语,但字节化模型在跨语言字符理解基准 EXECUTE 上也有改善。
因此,论文不仅与原模型比较,还用同一数据继续训练的 Olmo 3 7B(CT) 作为对照,以区分「多看了一些训练数据」与「架构本身改变」的影响。读论文时若只比较原模型和 Bolmo 的数字,就可能把数据贡献和结构贡献混为一谈。
四、论文发现:接近原模型,字符理解显著改善
① 整体能力接近,而非普遍超越。 Bwen 8B、Blama 8B 与 Bolmo 7B 在多项任务上接近相应子词模型;其中 Bwen 8B 在论文的大部分比较类别中超越此前同规模的字节级方法。但数学、问答及代码首次通过率等任务并非没有下降。
② 相比早期字节级模型有明显进步。 论文报告 Bolmo 7B 在 STEM 类任务相较从随机初始化训练的 BLT 7B,有 16.5% 的绝对提升。这是特定任务类别与对照组的结果,不能概括成“所有能力提高 16.5%”。
③ 字符级理解的优势更突出。 字节化模型在字符理解任务上明显优于对应子词模型。不过,研究也在训练中加入了促进字符理解的合成样本,并安排相同数据继续训练的子词模型作为控制组,不能忽视数据贡献。
④ 代码生成存在复杂的质量—多样性权衡。 实验报告较高的 pass@16,同时较低的 pass@1:在给出多个候选方案时更可能有正确解,并不等于单次生成就更可靠。作者也提醒,相同采样参数未必在两种模型中产生完全可比的输出分布。
⑤ 效率和生态兼容性具有工程潜力。 模型推理速度能够接近来源子词模型;提高每个 patch 的平均字节数,可在速度与质量之间调整。扩展数据中的单批量 H100 实验显示,Bolmo 7B 在约 6.6 字节/patch 的压缩比处,输入预填充的首字节延迟开始优于相应 Olmo 3 7B 基线;这是特定设置下的交叉点,不代表所有硬件和负载都更快。研究还通过 task arithmetic(参数差值迁移),把来源模型后训练得到的指令遵循能力迁移至字节化模型,而无需专门为该转移重复后训练。实验中,提高压缩率时基于 BPE 的片段合并比熵或交叉熵合并表现更好。
如何正确理解四组常见指标?
- STEM 平均分:报告的 +16.5% 绝对改进,只比较 Bolmo 7B 与从零训练的 BLT 7B 的 STEM 任务,不能推广至综合智能水平;
- CUTE / EXECUTE:是对英文及跨语言字符知识的补充测试,能反映字符串细节能力,但不能单独代表通用多语言推理能力;
- pass@1 与 pass@16:前者关注单次候选生成,后者关注多候选方案中存在正确结果的概率。论文使用相同的
temperature = 0.6与top_p = 0.6,但采样机制对不同架构的实际影响仍可能不同; - 吞吐与首字节延迟:分别体现持续生成速度与开始响应速度,论文的 H100、batch size 1 结果不可直接当作手机 CPU、消费级 GPU 或多人并发服务的实测数据。
五、可能改变哪些实际应用?
代码与精确字符串处理。 标识符、标点、转义序列和空白字符都很重要。更直接地保留字节细节有望帮助此类任务,但代码测试也说明:字节级输入并不自动提高单次生成正确率。
多语言模型。 固定子词词表往往具有语言分布偏向。字节级输入提供统一的底层表示形式,可能改善对非英语、混合语言和罕见字符串的处理。只是 UTF-8 编码长度、语料覆盖不足及跨语言泛化问题仍然存在,特别是中文等语言的真实收益需要逐项验证。
科研与生物序列。 生物序列和科学文本的细粒度差别可能改变意义,字节级架构降低了固定子词划分对细节的遮蔽。但这不意味着该研究已证明字节级通用 LLM 能取代领域专用模型。
模型部署和推理系统。 动态 patch 使“主干每次处理多少文本”成为可调的设计变量。研究展示了性能—效率的帕累托折中,但能否在具体硬件上降低显存、能耗、端到端延迟,仍需独立工程测量。
中文与工程读者特别需要注意的三个细节
中文字符的成本不是「一个字节一个字」。 UTF-8 中文字符经常占三个字节;如果字节模型不能高效聚合这些字节,序列反而可能更长。因此,评价中文推理或中文推理成本,应同时记录每段中文的字节数、每个 patch 的平均字节数、字符理解分数与真实端到端延迟。
API 中的 token 单价不必随之消失。 模型内部改用字节表示,并不等于上游 API、服务商计费、上下文限制或聊天协议立刻改成按字节计算。对使用者可见的单位仍取决于具体产品接口与计费规则。
字节级不等于 Unicode 语义级。 在自然语言处理中,用户感知的一枚表情或一个带组合符号的字符,可能由多个 Unicode 码点与更多 UTF-8 字节构成。字节级架构减轻了固定词表约束,但要让模型理解人类感知的「一个字符」仍需数据和训练目标。
六、哪些结论目前不能下?
- 不是完全消灭 token。 模型的输入输出按字节处理,内部仍以动态 patch 压缩序列;转换阶段还会借助原子词 tokenizer 进行监督。
- 不是全面击败子词模型。 实验既有字符理解与部分代码指标的改善,也有其他任务的退步。
- 不是任意规模都已验证。 研究集中在约 1B—8B 的实验模型,不应外推到所有超大模型。
- 不是把模型总训练成本降低到 1%。 追加转换训练量的比较不包括来源模型已有的训练投入。
- 不是现成的生产环境性能保证。 基准、采样方式、硬件实现、字符合成数据等因素都可能影响实际结论。
专题观察
这篇 Nature 论文的看点不是一句“Token 时代终结”,而是一条颇有实际意义的工程路线:保留成熟大模型最昂贵的深层知识与算力投资,把文本表示改成字节,再通过可学习的片段边界把计算效率找回来。
如果后续研究能在更大规模模型、实际多语言输入和生产负载中复现这些优势,外部固定 tokenizer 的地位就可能逐步下降。但在现有证据下,Byteification 打开了低追加成本探索字节级 LLM 的道路,并未证明传统子词模型已经过时。
论文、代码与数据
- 论文:Benjamin Minixhofer 等,Retrofitting language models to operate over bytes,Nature,2026 年 10 月 7 日。全文 |DOI
- 训练与复现代码:allenai/bolmo-core
- 训练数据:allenai/bolmo_mix
- 评测工具:allenai/olmes
- 官方背景:Ai2|Now in Nature: Retrofitting language models to operate over bytes
- 字符理解测试:CUTE 数据集 与 EXECUTE 数据集
- 论文原图:Nature 图 1(架构与边界预测)及图 2(性能与效率权衡)
本文为独立中文解读。实验结论按原论文所述的模型、任务及训练设置限定;应用展望属于分析,不代表已被实验逐项证实。