概念地图 ③ · 2026-11-07 · Datawhale DIY LLM 第 2 章配套

分词器这 30 年:四次被逼出来的改动

不是一堆散名词,是一条主线。全程只用同一句话举例。

一句话判断:整部历史只在回答一个问题——「到底以什么为单位切」。每改一次,都是被一个很具体的痛点逼出来的;你记不住,是因为教材把算法名、工具库名、模型名、产品实现名塞进了同一张表。
贯穿到底的例子
「夏天湿度影响烘箱温度」
假设你有一大堆产线记录,这句话反复出现;某天又冒出一个词表里没有的新术语「虚拟调试」。后面每一站都拿这两样东西试切。

0 · 先把名词分分类

它们压根不是同一类东西。认清这个,后面就不会记混了。

名字它是什么类型一句话
BPE算法 · 做法数谁最常挨着,就把这俩粘成一块
Byte-Level BPE / BBPE算法的变种还是 BPE,只是起点从「字符」降到「字节」
WordPiece算法 · 做法也粘,但挑「粘了最划算」的那一对
Unigram算法 · 做法反过来:先摆一大堆候选,再删掉没用的
SentencePiece工具库 · 不是算法一个软件包,里面能跑上面两种做法
tiktoken具体实现OpenAI 家那个包,GPT 系列在用
UL2模型名教材表格里出现的一个 Google 模型,跟分词算法无关
UniLM模型名微软一个模型,跟分词器无关。你大概把它和 UL2、Unigram 揉一起了
DeepSeek Tokenizer产品实现字节级 BPE 的一个具体做法,不是新算法

1 · 时间线:四个痛点,四次改法

每一站都是「上一代出了什么事 → 有人怎么改 → 留下了什么」。

最早 · 按词切

一个词给一个编号

痛点:词表爆炸 + 新词查不到。语料里「虚拟调试」第一次出现,词表里没这个编号,只能记成一个「不认识」的符号,信息直接丢了。

英文更惨:一个词的各种变体各占一个编号,词表动辄几十万。中文还要先决定「哪儿算一个词」,本身就说不清。

「夏天湿度影响烘箱温度」 → 要先吵一架:「烘箱温度」是一个词,还是「烘箱」+「温度」两个词?
留下:「按词切」这个念头,和它带来的那个至今没消失的麻烦——新词、专业术语、人名怎么办。
退一步 · 按字切

不猜词了,一个字一块

痛点:什么都能表示,但一句话被切成十几块,序列太长。模型每一步要照顾的块数变多,算得更慢、更贵,上下文窗口也被吃掉。

另一个问题:单看「温」这个字,基本没意义,模型得自己把几个字拼出意思来,学起来更费劲。

「夏天湿度影响烘箱温度」 → 夏 / 天 / 湿 / 度 / 影 / 响 / 烘 / 箱 / 温 / 度 —— 10 块,新词「虚拟调试」也能拼出来了
留下:「切得细就什么都不会丢,但太长」这条跷跷板。后面所有方法都在这两头之间找位置。
1994 → 2015 · BPE 登场

让语料自己决定该粘哪儿

痛点:按词太粗、按字太细,能不能不靠人定?

做法特别朴素:从单个字起步,数一数哪两个相邻的字最常挨在一起,把它俩粘成一块,写进表里;然后重新数,再粘下一对,重复几千次。

语料里这句话出现很多次 →「温」「度」总挨着 → 粘成 「温度」;「烘」「箱」也总挨着 → 粘成 「烘箱」;最后常见组合整块留着,生僻的还能拆回单字
最有意思的一点:这算法本来不是给 AI 用的。1994 年一个叫 Philip Gage 的人在程序员杂志上发表它,是为了把文件压缩小一点。2015 年三个做机器翻译的人(Sennrich、Haddow、Birch)借来解决「翻译时遇到没见过的词」,从此成了标配。你教材参考资料里那篇 arXiv 1508.07909,就是这次「跨界」。
2012 / 2018 · 同样是粘,换个挑法

WordPiece 与 Unigram:一对反向的兄弟

痛点:「只数谁最常挨着」有点糙,会不会粘出没意义的块?

WordPiece(Google,2012,最早是给日语/韩语语音搜索做的):还是从小往大粘,但不挑「最常挨着」的,挑「粘了以后最划算」的那一对。后来 BERT 用了它,你看到的 ## 前缀就是它的记号。

Unigram(Taku Kudo,2018):整个反过来。先摆一大堆候选块,给每块一个「有用程度」,然后一次次把最没用的丢掉,丢到词表大小合适为止。

同一句话,BPE 是 从小往大粘;Unigram 是 从大往小删。方向相反,终点差不多
留下:「一个句子可以有好几种切法、各自有个分数」这个想法。Unigram 顺带能故意换几种切法来训练,让模型更抗造。
2018 / 2019 · 把起点降到字节

SentencePiece 与「字节级」

痛点:中文、日文没有空格,得先「预分词」才能跑算法;emoji、生僻字、代码缩进又常常没被词表覆盖。

SentencePiece(Kudo 和 Richardson,2018,EMNLP)不是新算法,是一个工具库:直接吃原始文本,把空格也当成一个普通字符(常见记法是 ▁),内部可以选 BPE 或 Unigram 来跑。教材说「用它可以不额外预分词」,就是这个意思。

2019 年 GPT-2 又往前一步:起点干脆用字节。任何文字在电脑里都是字节,所以再也没有「这个字我没见过」——emoji、任何语言、代码,统统能编码,再靠 BPE 把常用字节组合粘回来。

「烘」在电脑里是 3 个字节;先切成字节,再让 BPE 把常挨着的粘成「烘」「烘箱」…… 你教材 4.2 节讲 DeepSeek 为什么用 latin1,就是为了让「把字节当字符来粘」这一步不丢数据
留下:今天主流大模型的形态——字节打底 + BPE 粘合 + 一张固定词表。Llama、GPT 系列、DeepSeek 都在这个框里,差别是词表多大、语料怎么配。
2024 至今 · 正在发生,还没定论

有人想干脆把分词器拿掉

痛点:词表是训练前定死、之后跟着模型一辈子的。它带来了几个顽固毛病:模型看不到单个字母、不同语言切出来的块数差很多、罕见块会引发怪异输出。

Meta 在 2024 年 12 月提出 BLT(一个直接读字节、不要固定词表的模型架构),8B 规模上做到跟同类模型相当,抗拼写错误和噪声更好。2025–2026 有一批后续研究在解决「一个字节一个字节吐字太慢」的问题(例如 2026 年 5 月被 ICML 接收的 Fast BLT),还有改进 BPE 本身的 SuperBPE、BoundlessBPE 等。

诚实标注:这些是研究进展,不是你手上模型的状态;部分年份和数字来自二手资料,我没有逐篇回原文核对。到 2026 年 11 月,生产环境里跑的仍几乎全是「字节级 BPE」这一代。别拿论文结论当教材结论。

2 · 四个最好玩的故事

这几件事比年份更值得记住。

① 分词器不是 AI 发明的

它原本是个压缩文件的小技巧,1994 年发在一本程序员杂志上,图的是解压快、占内存小。隔了 20 年被做翻译的人借走,才成了大模型的入口。现在你教材附录让你手写的那个「合并顺序表」,就是当年那张压缩表。

② 模型数不清 strawberry 里有几个 r

不是模型笨,是它压根看不到字母——它看到的是切好的整块。让它数一个词里有几个 r,等于让一个只看得见包装箱的人猜箱里有几颗糖。同理,拼写、倒着念、精确改字符这类活儿天生吃亏。

③ 中文比英文「贵」

同一段意思,英文常被切成较少的块,中文、印地语等往往被切得更碎。API 按块计费、上下文按块算长度,于是同样内容,非英语要多付钱、还更占窗口。这不是模型偏心,是词表训练语料里英文占多数。对你做企业 AI 交付,这条直接关系到成本和方案选型。

④ 有些词块会「闹鬼」

2023 年有人发现,某些极罕见的词块(网上流传最广的是 SolidGoldMagikarp)会让模型突然胡言乱语。原因是训练时几乎没见过它,对应的编号几乎没被学好。词表不是中性的字典,它是有脾气的历史遗留物。

3 · 回到你正在读的这一章

我把你给的 GitHub 那一节抓下来核对过了:它没讲历史,讲的是训练四步、四种分词器对比、动手实现、以及 DeepSeek 分词器分析。

所以你记不住不是记性问题,是教材把四类不同的名字放进了同一张「算法对比表」:SentencePiece 根本不是算法,UL2 是模型名,tiktoken 是实现名,只有 BPE / WordPiece / Unigram 是做法。先按上面第 0 节分好类,再看那张表就不乱了。

你教材末尾的参考资料,其实就是这条时间线的路标:

  1. arXiv 1508.07909 — 2015,把压缩算法借进翻译,BPE 的跨界时刻
  2. arXiv 1804.10959 — 2018,SentencePiece 那个工具库
  3. arXiv 1808.06226 — 2018,Kudo 的 Unigram 与「一句话可以有多种切法」
  4. HuggingFace 的四种分词器介绍 / WordPiece — 补 WordPiece 那一站

读这一章时带着三个问题就够:① 表里哪个根本不是算法?② 附录让你手写的 merges,是不是就是那张「先粘哪对、后粘哪对」的顺序表?③ DeepSeek 为什么要绕一道 latin1 才能把字节当字符处理?

我的判断:历史这条线不用背年份,但「BPE 是从压缩软件借来的、核心就是一张合并顺序表」这件事必须懂——因为你附录 6 要手写的正是它。其余名字,等你要换分词器、或者要跟客户解释「为什么中文更贵 / 为什么模型会数错字母」时再回来查。
概念地图 ③ · 2026-11-07 · 配套笔记:2026-11-07-diy-llm-ch2-tokenizer.md(含提问记录区,等你的问题)
资料:Datawhale DIY LLM 第 2 章〈分词器〉;历史节点经公开资料与教材参考文献交叉核对。2025–2026 部分为研究动态,二手来源未逐篇回原文核验。