← 返回概念解读

Concept Fable精修版

字节对编码

Byte Pair Encoding, BPE · Tokenization

先读故事。这里不急着给定义,先让问题自己长出来。

寓言故事

印刷坊里越切越省的字模

书院要把各地来的古籍抄成统一小册。抄手们遇到生僻字就卡住,遇到长词又写得太慢。院长想做一本符号表,让短笔画也能拼出长句子。

最初,院长让大家一字一格。常见字很好办,外地地名和新造词却塞不进去。有人提议把每个整词都收进表里,结果表册厚得搬不动,抄手翻页比抄写还慢。

年轻抄手想了个折中法。他先把所有句子拆成最小笔画和字块,再统计哪些相邻小块最常一起出现。若“清”和“泉”总挨着,就把它们合成一个新块;若“东”和“门”常出现,也合成一个。

第一次修订效果不错,抄“清泉街东门”少写了许多笔。院长便催他把所有常见组合都合进去。没过多久,符号表又开始变胖,一些只出现过几回的组合占了位置,真正有用的块反而难找。

抄手改成一轮一轮地合并。每轮只挑最常并肩出现的一对,写进表册,再重新统计。这样,常用词会自然长成较大的块,罕见词仍能由小块拼出来。

有个学童问,为什么不一开始就把整本词典搬来。抄手把两张纸摊开:一张太碎,人人写得慢;一张太满,人人找得慢。好表册要在碎和整之间,留下可拼接的余地。

院长又拿外邦人名试验。若符号表只收本地常词,外邦名字会全碎成细末;若把每个外邦名字都收进去,表册又会膨胀。逐步合并让书院在熟悉和陌生之间都有办法。抄手还给表册设了容量。合并太少,大家仍写得手酸;合并太多,翻表又慢,还会把罕见组合误当成常用。每次加入新块,都要看它节省了多少抄写、占了多少表位,值不值得留下。抄手还发现,表册不是一次定终身。新书越多,常见组合会变化;旧组合若很少再用,也要让出位置。

后来外地商人送来新地名,书院不用重造整套符号。抄手把陌生名字拆成已有小块,能拼就拼,常出现的再慢慢合并。小册越抄越快,却没有失去容纳新词的弹性。

揭示

这个故事讲的是:字节对编码

Byte Pair Encoding, BPE 是一种常见子词分词方法。它从基础符号开始,反复合并训练语料中最频繁相邻出现的符号对,得到一套固定 vocabulary。这样模型能用较少 token 表示常见片段,同时用更小的子词片段处理未见过的词、代码、专有名词和多语言文本。企业使用大模型时,BPE 会影响 token 成本、上下文长度、日志可读性、领域术语处理和模型迁移评估。

它重要的地方在于:它不只是一个术语,而是在真实 AI / Agent 系统里会反复出现的结构性问题。理解它,才能判断什么时候该加模型,什么时候该改流程,什么时候该补治理。

隐喻映射

  • 印刷坊:需要把文本送进模型的企业 AI 系统
  • 整词字模:纯词级分词,难以覆盖新词
  • 单个笔画:过细粒度切分,导致 token 数膨胀
  • 统计常见相邻字块:BPE 的频繁 pair merge 过程
  • 有限字模:训练得到的 token vocabulary
  • 常见内容更短、陌生内容有退路:子词分词在效率和覆盖之间的折中
  • 最后洞察:BPE 决定文本被压缩成哪些可计算单位,从而影响成本、速度和模型行为

Soloharness 判断

这个概念的实战价值,是帮你把“看起来聪明的 AI 功能”拆成可交付、可验收、可治理的工作单元。

tokenizersubwordvocabularyGPT tokenizer