BLT:扔掉分词器,LLM 还能这么跑?
去年底 Meta FAIR 发了一篇论文,叫 Byte Latent Transformer。标题挺克制——"Patches Scale Better Than Tokens"。
但内容不克制。他们训练了 8B 参数的模型,直接在原始字节上跑,没有 tokenizer,效果跟 Llama 3 打平,推理算力省了最多 50%。
最近又有跟进工作,3B 模型的内存带宽成本降了 87%-92%。翻译和代码任务质量跟原版差不多。
这事值得聊。因为 tokenizer 是 LLM 里最后一个"用手工搓"的组件,BLT 在证明我们可以不搓它。
Tokenizer 有什么问题?
你可能不觉得 tokenizer 是个问题。它藏在模型前面,把文字切成 token 再喂进去。这么多年都这么用。
但问题是:
-
你给模型看"apple",它不认识字母 a-p-p-l-e。它只知道 token ID 12345。你给它看"Apple"(大写),是另一个 token。你拼错成"aple",可能直接崩成乱码。
-
"I love you" 英语花 3 个 token,中文"我爱你"花 5 个,"แม่รักคุณ"泰语花十几个。同一种爱,花的算力差几倍。
-
一个叫 CUTE 的测试集里,让 Llama 3 做"把 a 换成 m"这种小学生题——比如 page → pmge。Llama 3 完全不会。它不知道什么是字母。
这些问题根源都一样:tokenizer 是个固定词表。模型只能看词表里的"单词",看不到更细的粒度。
BLT 怎么干掉的?
BLT 的方案三句话能说清:
1. 直接吃原始 UTF-8 字节
不管你是中文、英文、emoji,一律走字节。没有词表,没有 OOV(未登录词)。
2. 按信息密度动态分组
这里聪明了。跑一个小模型(100M 参数)实时算每个字节的"熵"——就是"猜下一个字节有多难"。
举个例子:
- 读到 "Daenerys Targaryen is" 后面跟 "in"
- 大写的 D、T、G 这些名字首字母——熵高,难猜 → 切成小 patch,多花算力
- 后面的 "aenerys"、"argaryen"——熵低,容易猜 → 合并成大 patch,省力
3. 三层架构:只能让大模型跑必要的那几步
-
Local Encoder(轻量):字节 → patch 表示
-
Global Transformer(重型):在 patch 上做推理
-
Local Decoder(轻量):patch → 输出字节
大模型只在 patch 边界上跑。平均 patch size 如果是 6 字节,大模型就跑 1/6 的次数。
配合动态分块,简单区域(空格、重复文本)自动走大 patch,复杂区域(数字、术语)走小 patch。算力不乱花。
三种加速方法是怎么回事
你最近可能看到一篇文章提到 BLT-D、BLT-S、BLT-DV 三个词。这是后续的加速工作(原版 BLT 论文没有这些)。
本质上就是"少跑、跑快、验证"三板斧:
BLT-D(块扩散)
用扩散模型一次生成一个 patch 的多个字节,而不是逐字节自回归。一次性画出整块。
BLT-S(推测解码)
小解码器先往前"猜"一串字节,大模型再审核。猜对了就用,猜错了改。大部分时候猜得对。
BLT-DV(扩散+验证)
上面两招合体。扩散做起草,自回归做验证。
3B 模型内存带宽降 87-92% 就是这三招叠起来的效果。为什么会省这么多?因为大模型 KV cache 的大小跟"步数"成正比。BLT 本身就把步数降了(patch),再叠上推测解码(进一步减少实际执行步数),叠乘效果。
值得关注的不是架构,是思路
我说这事值得聊,不是让你去复现 BLT。而是它背后的思路:不要把算力平均分配。
所有 token 都平等?不。Tokenization 把"the"和"pneumonoultramicroscopicsilicovolcanoconiosis"当成一样的"一个 token",花同样的算力去预测。BLT 说不对——简单的地方省力,复杂的地方用力。
这个思路能用在很多地方。比如我自己就在用的:
-
简单问题(查数据、回消息)直接走轻量模型,不启动完整推理链
-
复杂问题(技术选型、方案设计)自动提级,走深度推理
-
多步任务先判断复杂度,再决定花多少力气
核心就一句话:算力是资源,你得按信息密度花。
一些实际数据
论文里有一些具体数字,挑几个:
-
8B BLT vs 8B Llama 3,训练算力相同
-
BLT 在 7 个基准测试中平均 61.1%,Llama 3 是 60.0%
-
噪声输入场景(拼写错误、随机大小写),BLT 平均比 Llama 3 高 8 个点
-
低资源语言翻译(阿姆哈拉语、孟加拉语等),BLT 明显好
-
推理算力相同的情况下,BLT 可以同时增大模型和 patch size,这创造了一个新的 scaling 维度
不是说 BLT 马上要取代 tokenizer 了。但它证明了一条路:LLM 可以不依赖手工制作的词表,直接在最原始的字节上学习,且效果不差。
这条路对多语言、对拼写容错、对字符级理解,会越来越有意义。
- 点赞
- 收藏
- 关注作者
评论(0)