Byte Latent Transformer: Patches Scale Better Than Tokens¶
会议: ACL 2025 (Outstanding Paper)
arXiv: 2412.09871
代码: https://github.com/facebookresearch/blt
领域: 模型架构 / LLM / 高效训练
关键词: 字节级模型, 动态分组, 基于熵的分段, tokenizer-free, scaling law
一句话总结¶
Meta FAIR提出BLT——首个在大规模(8B参数/4T字节)上匹配基于tokenizer的LLM性能的字节级架构,通过基于下一字节熵的动态分组(patching)将字节聚合为可变长度patch,在保持性能的同时实现最高50%推理FLOP节省,并开辟了"同时增大模型和patch尺寸"的全新scaling维度。
背景与动机¶
几乎所有现代LLM都包含一个非端到端的预处理步骤——tokenization(如BPE),它将原始字节压缩为固定词表的token。这种方法存在本质缺陷:对领域/模态敏感、对输入噪声脆弱、缺乏正字法知识、造成多语言不公平。此前的字节级模型因序列过长导致计算成本远超token模型。MegaByte等方法用固定步长分组(strided patching)缓解了部分问题,但在大规模上性能仍落后于Llama 3等SOTA。
核心挑战:Transformer的计算瓶颈不在注意力机制(长序列时确实如此),而在于大型前馈网络层——它们在每个位置上都运行。因此,减少位置数量(即智能分组字节)比改进注意力更关键。
核心问题¶
- 如何设计一种无需固定词表、直接在原始字节上训练的LLM架构,并在8B参数规模上匹配基于tokenizer的SOTA?
- 如何根据数据复杂度动态分配计算——对可预测的字节(如单词后续字母)用更少计算,对不可预测的字节(如新句子开头)用更多计算?
- 基于patch的模型是否能开辟tokenizer模型不具备的新scaling维度?
方法详解¶
整体框架¶
BLT由三个模块组成: - Local Encoder(轻量级):将输入字节序列编码为patch表示,通过hash n-gram嵌入和cross-attention - Latent Global Transformer(重量级):在patch表示上做自回归建模,消耗绝大部分FLOP - Local Decoder(轻量级):将patch表示解码回字节序列
关键机制:Global Transformer的调用次数由patch数决定,而非字节数。patch越大,Global Transformer运行越少,计算量越小。
关键设计¶
- 基于熵的动态分段(Entropy Patching)
- 训练一个小型字节级LM(100M参数)估计每个字节位置的下一字节熵H(x_i)
- 当H(x_i)超过阈值θ_g时,在该位置创建新patch边界
- 直觉:高熵=不确定=难以预测=需要更多计算→分配更多Global Transformer步骤
- 例如"George R.R. Martin"中,"G"的熵高(新实体开始),其后字母可预测(低熵),所以"eorge"被合并为一个大patch
-
满足增量分段(incremental patching)属性:不依赖未来字节,兼容自回归生成
-
Hash N-gram嵌入
- 对每个字节位置计算3-gram到8-gram的滚动多项式哈希
- 映射到固定大小的嵌入表(500K哈希),无需维护显式n-gram表
-
这是BLT匹配tokenizer模型性能的关键因素(消融实验中移除后BPB显著下降)
-
Perceiver式Cross-Attention
- Encoder中:patch表示作为query,字节表示作为key/value → 将字节信息聚合到patch
- Decoder中:角色互换,字节表示作为query → 将patch信息展开回字节
-
mask策略:每个patch query只attend到构成该patch的字节
-
新Scaling维度:同时增大patch和模型
- 传统token模型中,固定推理预算=固定模型大小
- BLT中,增大patch size → 减少Global Transformer步数 → 节省的FLOP可用于增大模型
- 实验证明:patch size 8 + 更大模型在固定推理预算下超越了更小patch + 更小模型
实验关键数据¶
| 设置 | BLT-Entropy (ps4.5) | BPE Llama 3 | 差异 |
|---|---|---|---|
| 平均基准 | 61.1% | 60.0% | +1.1% |
| CUTE(字符理解) | 54.1% | 27.5% | +26.6% |
| HellaSwag噪声版 | 64.3% | 56.9% | +7.4% |
| 低资源翻译(→English avg) | 14.0 BLEU | 12.1 BLEU | +1.9 |
| 拼写任务 | 99.9% | 1.1% | +98.8% |
消融实验要点¶
- Hash n-gram嵌入是最关键的组件,提供0.024 BPB改进(相比无嵌入),比cross-attention更重要
- Entropy patching > Space patching > Strided patching,在scaled实验中差距进一步放大
- Decoder比Encoder更需要层数:在总参数不变时,1层Encoder+9层Decoder优于5+5
- 从Llama 3初始化BLT的Global Transformer可以显著利用已有预训练知识("字节化"已有模型)
- 固定推理FLOP scaling:BLT在超过compute-optimal点~2.5x后即超越BPE模型
亮点¶
- 首次字节级模型大规模可行性证明:8B参数+4T字节,匹配并在多项指标超越Llama 3,彻底回答了"字节级模型能否在大规模上work"
- "Patches Scale Better Than Tokens"是本文最深刻的洞察:tokenizer模型的模型大小和推理成本强耦合(词表越大→嵌入表越大→模型越大),而BLT解耦了这种关系——patch大小可自由选择
- 字符级理解能力的飞跃:CUTE基准上99.9% spelling vs BPE的1.1%,说明tokenization对底层字符知识造成了不可逆的信息丢失
- BLT从Llama 3初始化的实验暗示了一条"先tokenizer训练、后byte化"的实际路线,避免从零训练的成本
局限性 / 可改进方向¶
- Scaling law是基于BPE模型的最优比例(来自Llama 3),BLT可能有不同的最优参数-数据比
- 训练效率(wall-clock time)还未完全优化到tokenizer级别,需要更多工程工作
- Entropy model目前是单独训练的,未与BLT端到端联合优化
- 固定推理scaling中,BLT在small training budget时不如BPE——需要超过compute-optimal约2.5倍才crossover
与相关工作的对比¶
- vs MegaByte:MegaByte用固定步长(如4字节一组),BLT用动态熵分段。BLT在flop-controlled比较中大幅领先
- vs ByT5:ByT5直接在每个字节上跑全transformer,计算成本极高。BLT通过patching将全局transformer步数大幅减少
- vs SpaceByte:SpaceByte在空格处分段,BLT在高熵处分段。空格分段无法处理非空格语言,且不能控制patch大小
- vs Llama 3:在同等训练FLOP下,BLT匹配Llama 3通用性能,在鲁棒性和字符理解上大幅领先
启发与关联¶
- BLT与NSA(Native Sparse Attention,同会Best Paper)理念呼应:两者都在质疑"标准做法是否最优"——前者质疑tokenization,后者质疑full attention
- 动态计算分配的思想可迁移到视觉领域——对简单区域用大patch、复杂区域用小patch
- 如果字节级模型在低资源翻译上天然更好,可能改变多语言模型的设计范式
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ 首次大规模证明字节级模型的可行性,开辟全新scaling维度
- 实验充分度: ⭐⭐⭐⭐⭐ 8B规模+4T训练字节,FLOP-controlled比较、大量消融、鲁棒性测试
- 写作质量: ⭐⭐⭐⭐⭐ 论文组织精美,每个设计选择都有清晰的动机和消融支持
- 价值: ⭐⭐⭐⭐⭐ 可能改变下一代LLM的基础架构设计,对多语言和鲁棒性研究有深远影响