Skip to content

大语言模型分词器技术对比与实践

内容整理自学习笔记,仅供面试备考参考;不构成录用、培训或考试承诺。

1. Byte-Pair Encoding (BPE)

1.1 词典构建步骤

BPE 是 GPT-2、BART 和 LLaMA 采用的分词算法。构建流程如下:

  1. 准备足够的训练语料,设定目标词表大小
  2. 将单词拆分为字符粒度(字粒度),在末尾添加后缀,统计单词频率
  3. 合并方式: 统计每个连续/相邻字节对的出现频率,将最高频字节对合并为新的子词
  4. 重复步骤 3,直到达到目标词表大小或下一个最高频字节对频率为 1
python
# BPE 构建流程示意
input: "low" "lower" "newest" "widest"
step1: l o w _ , l o w e r _ , n e w e s t _ , w i d e s t _
step2: 统计相邻字节对频率 → 合并最高频对 → 重复

适用模型: GPT-2、BART、LLaMA

2. WordPiece

2.1 与 BPE 的异同

WordPiece 本质上仍是 BPE 思想,但最大区别在于如何选择两个子词进行合并

算法合并标准
BPE选择频次最大的相邻子词合并
WordPiece选择能够最大化语言模型概率的相邻子词合并

适用模型: BERT 采用 WordPiece

3. SentencePiece

3.1 核心思路

SentencePiece 将空格也当作一种特殊字符来处理,在此基础上使用 BPE 或 Unigram 构造词汇表。

其优势在于:

  • 语言无关:不依赖预分词步骤
  • 可逆性:编码后的 token 序列可以无损解码回原始文本
  • 统一处理:空格作为普通字符,避免分词不一致

适用模型: ChatGLM、BLOOM、PaLM

4. 各大模型分词方式对比

4.1 不同 LLM 的分词器

模型分词算法词表大小特点
GPT-2BPE~50,000标准 BPE,英文效果好
BERTWordPiece~30,000基于语言模型概率选择合并
LLaMABPE (SentencePiece)32,000词表最小,中英文分词较碎
ChatGLM-6BSentencePiece (BPE)~130,000中英文分词效果最均衡
BLOOMSentencePiece (BPE)~250,000词表最大,多语种支持
PaLMSentencePiece-基于 SentencePiece

4.2 分词效果对比

模型中文平均 token 数英文平均 token 数评价
LLaMA~1.45较多中文分词最碎,汉字可能被切为多个 token
Chinese LLaMA显著降低相当扩展词表后中文编码效率大幅提升
ChatGLM-6B较低较低平衡中英文分词效果最好,但词表大影响处理时间
BLOOM与 ChatGLM 相当与 ChatGLM 相当词表最大但多语种,效率与 ChatGLM 基本相当

结论: ChatGLM-6B 是平衡中英文分词效果最好的 tokenizer。LLaMA 原始词表最小,中英文分词都较碎,通过扩展词表可显著改善中文编码效率。

5. 分词器选择建议

场景推荐算法原因
纯英文模型BPE成熟稳定,效率高
多语种模型SentencePiece + BPE语言无关,统一处理
中英文平衡SentencePiece + 大词表兼顾中英文分词效率
中文为主SentencePiece + 中文词表扩充提高中文编码效率