核心要点

  • 讲清粒度权衡:词级词表大、OOV 多;字符级序列太长;子词(subword)折中,既控词表又能拼出未登录词。

  • 说清 BPE 合并:从字符级起,反复统计相邻符号对频率、合并最高频对为新符号,直到词表达目标大小。

  • 点出 tokenizer 与模型强绑定:词表和切分变了 token id 就变,预训练权重失配,换模型必须换 tokenizer。

  • 会提中文影响:中文常被切成更多 token,直接影响计费、上下文占用与有效信息密度。

简要回答

Tokenizer 负责文本↔token ID 转换。BPE 从字符级开始,反复合并语料中最频繁的相邻符号对,最终得到子词词表,能处理未登录词且词表可控。

标准回答

为什么需要子词

纯词级词表大、未登录词(OOV)多;纯字符级又会让序列过长、建模困难。子词(subword)在两者间折中:常见词整体成 token,罕见词拆成片段拼出,既控制词表规模又避免 OOV。

BPE 合并流程

  1. 初始化为字符级词表;
  2. 统计语料中相邻符号对的出现频率;
  3. 把最高频的相邻对合并成一个新符号,加入词表;
  4. 重复合并,直到词表达到目标大小。

实践要点

GPT 系列用 BPE(byte-level BPE 直接在字节上操作,天然无 OOV);SentencePiece 在原始字符流上学习、把空格也编码,便于多语言统一词表。Tokenizer 与模型权重绑定,换模型必须换对应 tokenizer。中文常被切成较多 token,影响计费与上下文占用。

常见误区

⚠️ 常见踩坑

别把 token 等同于「词」或「字」——英文里一个词可能是多个 token,中文一个汉字也常占 1~2 个 token,算 token 数不能按字数估。也别以为 BPE 是按语言学词根切分的,它纯按语料统计频率合并,切出的片段未必有语义。

追问

追问 1SentencePiece 和 BPE 区别?

BPE 多在预分词后的子词上合并;SentencePiece 直接在原始字符流上学习,无需语言特定预分词,中日韩更友好,且把空格也编进词表。LLaMA、T5 常用 SentencePiece。

追问 2为什么 tokenizer 不能随意更换?

词表与切分规则变了,同一字符串 token id 不同,预训练权重与词嵌入不对齐,等于破坏输入层。换 tokenizer 需重新训练或做 embedding 映射与继续预训练。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。

🛠️ AI 工具

  • vLLM

    高吞吐 LLM 推理引擎,77,418+ stars。采用 PagedAttention 显存优化技术,吞吐量比 HuggingFace Transformers 高 24 倍,是生产环境部署大模型推理的首选方案,支持 OpenAI 兼容 API

  • LangChain

    最流行的 LLM 应用开发框架,137K+ stars。提供链式编排、RAG 检索增强生成、Agent 构建等核心能力,覆盖 Python 和 JavaScript 双语言生态,是构建 LLM 应用的基础设施

  • Ollama

    本地运行开源大语言模型的最简方案,支持 Llama、Qwen、DeepSeek 等主流模型,一键安装、自动下载模型、提供 OpenAI 兼容 API,是 AI 开发者本地部署的首选工具