大模型分词算法全解析:BPE、WordPiece、SentencePiece 实战对比

分词(Tokenization)是大模型处理文本的第一步,相当于给模型 "拆分语言积木"------ 不同的拆分方式,直接影响模型的理解效率、显存占用和生成效果。

市面上主流大模型的分词算法主要有三类:BPE、WordPiece、SentencePiece。今天就用大白话拆解它们的核心逻辑、异同点,再结合 LLaMA、BERT、ChatGLM 等热门模型的分词实践,帮你彻底搞懂 "大模型是怎么切分文本的"。

一、Byte-Pair Encoding(BPE):按频率合并,大模型的 "基础分词法"

BPE(字节对编码)是最经典的分词算法,GPT-2、BART、LLaMA 等主流模型都在用。它的核心思路特别简单:从最小字符开始,反复合并高频相邻子词,直到达到目标词表大小。

1. BPE 构建词典的完整步骤

以英文 "low""lower""newest""widest" 为例,一步步看 BPE 怎么造词表:

  1. 准备阶段:确定训练语料(比如上述 4 个单词)和目标词表大小(假设目标:10 个词);
  2. 字符级拆分 :把每个单词拆成最小字符,末尾加 "</w>"(标记单词结束),统计频率:
    • low</w>: 1、lower</w>: 1、newest</w>: 1、widest</w>: 1
    • 拆分后:l o w </w>、l o w e r </w>、n e w e s t </w>、w i d e s t </w>
  3. 高频合并:统计所有相邻字符对的频率,合并最高频的对。比如 "e" 和 "s" 出现 2 次(newest、widest),合并为 "es";
  4. 重复合并:不断重复步骤 3------ 下次合并 "es" 和 "t"(频率 2)为 "est",再合并 "w" 和 "i"(频率 1)...... 直到词表达到 10 个词;
  5. 停止条件:词表大小达标,或下一个最高频字符对的频率为 1(再合并无意义)。

2. BPE 的核心特点

  • 优点:逻辑简单、易实现,能平衡 "词粒度" 和 "字符粒度"------ 高频词会被合并成一个子词(比如 "est"),低频词保留字符级拆分,兼顾效率和覆盖率;
  • 缺点:对低频词拆分过细(比如生僻词可能拆成单个字符),处理中文时容易出现 "单字拆分"(LLaMA 原生中文分词就是如此)。

二、WordPiece:按语言模型概率合并,BERT 的 "智能分词法"

WordPiece 是 Google 为 BERT 设计的分词算法,本质上是 BPE 的 "改进版"------ 核心思想和 BPE 一致,但合并规则不同

1. WordPiece 与 BPE 的核心异同

对比维度 BPE WordPiece
核心思想 从字符开始,逐步合并子词 同 BPE(字符→子词)
合并规则 选择出现频率最高的相邻子词合并 选择能让语言模型概率提升最大的相邻子词合并
目标 减少文本总 token 数 提升模型对文本的语义理解
代表模型 GPT-2、LLaMA、BART BERT、DistilBERT

2. 合并规则的通俗解释

BPE 像 "看 popularity 选队友"------ 谁凑在一起出现次数多,就合并谁;WordPiece 像 "看默契度选队友"------ 合并后能让整个句子的 "语义合理性"(语言模型概率)最高,才合并。

比如 "newest" 中的 "e" 和 "s",BPE 合并是因为它们一起出现 2 次;WordPiece 合并是因为 "es" 作为一个子词,能让 "newest" 的语义更连贯(模型预测 "newest" 的概率更高)。

3. WordPiece 的核心特点

  • 优点:拆分更贴合语义,能减少 "无意义子词"(比如不会把 "apple" 拆成 "app"+"le" 这种语义割裂的组合);
  • 缺点:计算复杂度比 BPE 高(需要计算语言模型概率),对低频词的处理效果仍有限。

三、SentencePiece:把空格当字符,多语种模型的 "万能分词法"

SentencePiece 是 Google 推出的 "通用分词工具",不是单一算法 ------ 它支持 BPE 和 Unigram 两种核心逻辑,核心创新是把空格当作特殊字符处理。ChatGLM、BLOOM、PaLM 等多语种模型都在用。

1. SentencePiece 的核心思路

传统分词算法(BPE/WordPiece)会先按空格拆分单词,再处理每个单词;而 SentencePiece 直接把整个句子当作 "字符序列",空格被编码成特殊符号(比如 "▁"),再用 BPE 或 Unigram 算法拆分。

举个例子,句子 "I love China":

  • 传统 BPE:先拆成 "I""love""China" 三个单词,再分别拆分;
  • SentencePiece:先转换成 "▁I▁love▁China"(空格→▁),再整体按 BPE 合并,可能拆成 "▁I""▁love""▁Chi""na"。

2. SentencePiece 的核心特点

  • 优点:
    1. 支持多语种:不用单独处理每种语言的空格、标点,适配中文(无空格)、英文(有空格)等多种语言;
    2. 灵活性高:可选择 BPE 或 Unigram 算法,按需调整;
    3. 无词表依赖:能处理生僻词、网络新词(拆成字符级);
  • 缺点:词表通常较大(比如 BLOOM 词表达 25 万),对模型显存有一定要求。

四、三大分词算法核心对比表

算法 核心逻辑 合并规则 代表模型 优点 缺点
BPE 字符→高频合并→子词 按出现频率最高合并 GPT-2、LLaMA、BART 简单易实现、效率高 低频词拆分过细、中文支持弱
WordPiece 字符→语义合并→子词 按语言模型概率最大合并 BERT、DistilBERT 语义贴合度高 计算复杂、多语种支持弱
SentencePiece 空格当特殊字符 + BPE/Unigram 可选(频率 / 概率) ChatGLM、BLOOM、PaLM 多语种友好、灵活 词表大、显存占用高

五、实战对比:主流大模型的分词方式差异

不同模型选择的分词算法不同,直接导致了它们的分词效果天差地别 ------ 尤其是处理中文时。

1. 热门模型分词方式一览

模型 分词算法 词表大小 中文分词特点
LLaMA(原生) BPE 32000 分词极细,平均 1 个汉字拆成 1.45 个 token(比如 "中" 拆成 2 个 token)
Chinese LLaMA BPE(扩展中文词表) ~80000 1-2 个汉字拆成 1 个 token,编码效率大幅提升
BERT WordPiece 30522 中文按单字拆分("中国"→"中"+"国"),语义贴合度高
ChatGLM-6B SentencePiece(BPE) 65024 平衡中英文,中文 1-2 字拆 1 个 token,效率和语义兼顾
BLOOM SentencePiece(Unigram) 250880 多语种适配,中英文分词效率和 ChatGLM 接近

2. 分词效果直观对比(以 "我爱中国" 为例)

  • LLaMA(原生):+(拆成 2 个 token)++(拆成 2 个 token)++(拆成 2 个 token)+(拆成 2 个 token)→ 共 10 个 token;
  • Chinese LLaMA:▁我爱+中国→ 共 2 个 token;
  • BERT:+++→ 共 4 个 token;
  • ChatGLM-6B:▁我爱中国→ 共 1 个 token;
  • BLOOM:▁我+++→ 共 4 个 token。

3. 核心区别总结

  1. 中文支持:ChatGLM-6B > Chinese LLaMA > BLOOM > BERT > LLaMA(原生);
  2. 分词效率(token 数越少效率越高):扩展词表的模型 > 多语种模型 > 原生单语种模型;
  3. 语义贴合度:WordPiece(BERT)> SentencePiece(ChatGLM)> BPE(LLaMA);
  4. 显存占用:词表越大占用越高(BLOOM > ChatGLM > LLaMA > BERT)。

六、总结:怎么选分词算法?

  1. 若做英文单语种模型:优先 BPE(简单高效)或 WordPiece(语义更好);
  2. 若做多语种模型:必选 SentencePiece(空格处理 + 多算法支持);
  3. 若做中文模型:优先用 SentencePiece 或扩展中文词表的 BPE(避免单字拆分);
  4. 若模型参数量小(<7B):选小词表 BPE(节省显存);若模型参量大(>13B):可选大词表 SentencePiece(提升效率)。

分词算法是大模型的 "地基"------ 选对了,模型能以更少的 token 处理更多文本,显存占用更低、生成更流畅。理解了 BPE、WordPiece、SentencePiece 的核心逻辑,不仅能更好地选型,还能在模型微调时针对性优化词表(比如给 LLaMA 扩展中文词表),让模型更适配你的任务~

相关推荐
多恩Stone2 分钟前
【3D AICG 系列-6】OmniPart 训练流程梳理
人工智能·pytorch·算法·3d·aigc
江瀚视野3 分钟前
多家银行向甲骨文断贷,巨头甲骨文这是怎么了?
大数据·人工智能
ccLianLian5 分钟前
计算机基础·cs336·损失函数,优化器,调度器,数据处理和模型加载保存
人工智能·深度学习·计算机视觉·transformer
asheuojj6 分钟前
2026年GEO优化获客效果评估指南:如何精准衡量TOP5关
大数据·人工智能·python
多恩Stone7 分钟前
【RoPE】Flux 中的 Image Tokenization
开发语言·人工智能·python
callJJ9 分钟前
Spring AI ImageModel 完全指南:用 OpenAI DALL-E 生成图像
大数据·人工智能·spring·openai·springai·图像模型
铁蛋AI编程实战11 分钟前
2026 大模型推理框架测评:vLLM 0.5/TGI 2.0/TensorRT-LLM 1.8/DeepSpeed-MII 0.9 性能与成本防线对比
人工智能·机器学习·vllm
23遇见12 分钟前
CANN ops-nn 仓库高效开发指南:从入门到精通
人工智能
SAP工博科技12 分钟前
SAP 公有云 ERP 多工厂多生产线数据统一管理技术实现解析
大数据·运维·人工智能
芷栀夏14 分钟前
CANN ops-math:异构计算场景下基础数学算子的深度优化与硬件亲和设计解析
人工智能·cann