题目
现代大模型多采用 BPE(Byte-Pair Encoding)分词。请说明其原理,以及它在中文等非空格语言上的处理与坑。
参考答案
BPE 核心思想:从字符级开始,反复合并出现频率最高的相邻字节对,逐步构建子词词表。
训练流程:
- 把所有文本拆成字符序列,每词加结束符
</w>。 - 统计相邻字符对频率,合并频率最高的对为一个新 token。
- 重复直至达到目标词表大小或无对可合。
示例:low、lower、newest、widest → 合并出 low、er、est、new、wid 等子词。
优势:
- OOV 友好:未见词可拆成已知子词,不会出现
<unk>。 - 平衡:高频词整词存储(短),低频词拆字符(更细),词表大小可控(通常 3 万–15 万)。
- 跨语言通用:基于字节可处理任意语言。
变体:
- BBPE(Byte-level BPE):在字节级操作,LLaMA、GPT-2 采用,可表示任意字符(含 emoji)。
- WordPiece:BERT 用,类似 BPE 但合并准则不同(最大化似然而非频率)。
- SentencePiece:Google 工具,不依赖空格预分词,直接在原始文本上做 BPE/Unigram,适合中日韩。
中文的特殊问题:
- 无空格分隔:BPE 在英文上以空格预切词,中文无空格需 SentencePiece 直接处理原始文本。
- Token 膨胀:早期模型(GPT-2)词表偏英文,中文一字可能多 token,导致同等内容 token 数翻倍 → 推理慢、上下文浪费。
- 中文优化:现代中文大模型(Qwen、GLM、DeepSeek)在词表中显著扩充中文 token,一字一词,效率大幅提升。
面试加分点:
- 指出 token 数直接影响成本与速度(API 按 token 计费、推理按 token 计算延迟)。
- 同句中文,GPT-4 token 数约为 Qwen 的 1.5–2 倍,这是中文模型在中文场景的成本优势。
- 词表大小是权衡:大词表覆盖好但 embedding 层参数多(embedding 占总参数 10%+),小词表省参数但序列长。
出处:HuggingFace Tokenizer 文档、SentencePiece 论文、BPE 面经。
内容来源
整理自 HuggingFace Tokenizer 文档与 BPE 面经
本站内容整理自公开面经与开源仓库,仅供学习交流,严禁杜撰。