前端进阶之旅前端进阶之旅
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
首页程序员面试题库LLM tokenization BPE 分词
AIAI 开发大模型基础

大语言模型中的 token 化(如 BPE 分词)是如何把文本转成模型输入的?

BPE 分词将文本拆成子词单元,常见词保持完整,罕见词拆成更小片段,再映射为词表 ID,使模型能处理未见词。

前端进阶之旅 · 一题精讲更新于 2026.09.05
AI 开发#大模型基础
先看核心答案
理解线索

BPE 三分法

  1. 预分词按空格和标点切出初始词表
  2. 迭代合并统计频率合并最高相邻字符对
  3. 字节基础用 256 字节值覆盖所有字符

合并次数决定词表大小,底层字节保证可逆。

核心回答

先记住这个答案

大语言模型先用预分词器把文本按空格等切分,然后用 BPE 等算法学习合并规则,将高频字符对逐步合并成子词。推理时,文本按这些规则切分成词表内的 token,每个 token 对应一个整数 ID,输入模型。子词切分平衡了词表大小与序列长度,并用字节级基础词表避免未知词。

  • BPE 从字符开始迭代合并高频对
  • 子词让模型能组合表示未见词
  • 字节级基础保证无未知 token

BPE 如何从字符构建子词

BPE 先用预分词器把文本按空格或标点切成临时词,并统计每个词出现频率。例如训练语料中有 “hug” 10 次、“pug” 5 次、“hugs” 5 次,初始词表只含字符 b、g、h、n、p、s、u。接着算法反复统计相邻字符对的出现次数,把最高频的对合并成一个新子词,加入词表。

以上例来说,’u’ 和 ’g’ 在 hug、pug、hugs 中频繁相邻,合并成 “ug”;之后 “u” 和 “n” 在 pun、bun 中高频,合并成 “un”。合并重复进行直到达到预定词表大小。最终词表包含部分子词,例如 “hug” 可能被切成 [“h”,”ug”] 或 [“hug”] 取决于合并规则。新词若不在词表中,会被逐层拆成存在的子词,从而避免直接丢弃。

在标准 BPE 中,基础词表只含训练语料中出现过的字符,若遇到新字符则映射为 <unk>。实际中,字节级 BPE 把 256 个字节值当作基础词表,任何 Unicode 字符都可拆成若干字节,因此训练后几乎不产生未知 token。GPT-2 使用的就是 256 字节加 50,000 次合并得到约 50k 词表。

句子 “unhug” 的 token 化过程

假设词表只包含步骤中见过的子词:b、g、h、u、n、ug、un。推理时给定文本 “unhug”,预分词器按空格切出一个词 “unhug”。由于整个词不在词表,BPE 按最长匹配或按学习到的合并顺序反向切分:先看 “un” 存在,剩 “hug”,而 “hug” 未被合并,需进一步拆为 “h” 和 “ug”。这样最终得到 token 序列 [“un”,”h”,”ug”]。

实际使用时 tokenizer 对每个子词查词表得到整数 ID,例如假设 “un”=312,“h”=75,“ug”=204,则输出 [312,75,204]。模型只消费这些 ID。如果语料中没有 “unhug” 作为整词,此切分让模型仍能用已知子词表示它,这便是子词切分处理 OOV 的典型方式。

BPE 的失效条件与应对

BPE 依赖训练语料中的统计频率,当语料分布与推理输入严重不匹配时,合并规则可能不佳。例如在代码或表情符号丰富的文本中,如果预分词器基于空格切分,会破坏代码缩进或表情序列,导致 token 碎片化。英语中常见的做法是用正则保留换行和空格前缀,但中文、日文没有空格,需依赖 SentencePiece 这类先以字符流处理。

另一个边界是词表大小与模型容量。词表过大导致嵌入层参数膨胀,影响训练速度;过小则每 token 信息量低,序列变长。BPE 难以高效处理需要连续字符组合的新造语言模式,比如测试时输入纯数字串,每个数字独立,模型效率下降。实际工程中,可针对任务微调 tokenizer 的预分词规则或使用 Unigram 等概率切分模型,但这需要重新训练适配。

回答前,多想一步

容易答错的地方

BPE 一定能拆出完整单词
并非总是如此。子词切分是按合并规则进行,同一个词在同一个词表下会得到固定的切分,不同词表可能切成不同子词。例如 “hugs” 可能为 [“hug”,”s”] 或 [“h”,”ug”,”s”],取决于词表。BPE 的具体切分是确定的,但并非语义边界。
未知词被当作 `<unk>` 丢弃
现代大模型普遍使用字节级 BPE,基础词表包含所有字节值,因此任何字符都能拆解成已知子词或字节 token,不会出现 <unk>。早期按字符表构建的 BPE 才可能产生未登录字符,但如今很少见。
试着用自己的话回答

面试官还会怎么问?

BPE 与 WordPiece 的选择依据是什么?

BPE 合并频率最高的相邻对,WordPiece 则选择使训练似然增量最大的对,后者更偏重信息量。实践中 BPE 在 GPT、Llama 中占主流,WordPiece 多见于 BERT。BPE 和 Unigram 可用 SentencePiece 实现,WordPiece 需要专门实现。

为什么字节级 BPE 能处理所有 Unicode 字符?

因为 UTF-8 编码下任何字符都是一到四个字节,字节级 BPE 以 256 个字节值为基础,训练时把常见多字节序列也合并成子词。未知字符仍由字节组合表示,所以没有未登录 token。

token 化与模型性能有什么关系?

token 化影响序列长度与信息密度。若切分太细,序列变长,注意力计算成本上升;若太粗,词表膨胀。此外,不同语言 token 效率差异大,例如英语一个词常为一个 token,中文可能一个字拆成多个字节 token,导致推理速度慢。

从一道题,走向一组知识

把知识连起来

大模型基础

为什么说大语言模型的本质是下一个 token 预测,概率是如何计算的?

同属「大模型基础」专题,接着看 next token prediction 生成概率 softmax 在具体场景中的处理方式。

大模型基础

大模型输出的 logits 是什么,如何从中解读模型对每个 token 的置信程度?

同属「大模型基础」专题,接着看 LLM logits logprobs 置信度 在具体场景中的处理方式。

参考资料

  • Transformers

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. BPE 如何从字符构建子词
  3. 句子 “unhug” 的 token 化过程
  4. BPE 的失效条件与应对
  5. 容易答错的地方
  6. 面试官还会怎么问
  7. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑