当前位置: 首页 > news >正文

【大模型理论篇】主流大模型的分词器选择及讨论(BPE/BBPE/WordPiece/Unigram)

1. 背景分析

        分词是将输入和输出文本拆分成更小单位的过程,使得大模型能够处理。token可以是单词、字符、子词或符号,取决于模型的类型和大小。分词可以帮助模型处理不同的语言、词汇和格式,并降低计算和内存成本。分词还可以通过影响token的含义和上下文,影响生成文本的质量和多样性。

        我们在前述文章《BPE原理及代码示例》、《WordPiece原理及代码示例》、《Unigram原理及代码示例》三篇文章讨论了在预训练模型中最常用的三种tokenizer算法:BPE、WordPiece、Unigram。

        对这几类技术再做下简述,详细的可以点击链接看我们的文章:

BPE(字节对编码)

        BPE的核心概念是从字母开始,反复合并频率最高且相邻的两个token,直到达到目标词数。

BBPE

        BBPE的基本思想是将BPE从字符级别扩展到字节(Byte)级别。BPE在处理unicode编码时可能会导致基础字符集过大,而BBPE将每个字节视为一个“字符”,不论实际字符集用多少字节表示。这样,基础字符集的大小就固定为256(2^8),从而实现跨语言共享词表,并显著缩减词表大小。然而,对于像中文这样的语言,文本序列长度会显著增加,这可能使得BBPE模型的性能优于BPE模型,但其序列长度较长也会导致训练和推理时间增加。BBPE的实现与BPE类似,主要差别在于基础词表使用256的字节集。

WordPiece

        WordPiece算法可视为BPE的变种。不同之处在于,WordPiece通过概率生成新的subword,而不是简单地选择频率最高的字节对。WordPiece每次从词表中选出两个子词合并成一个新子词,但选择的是能最大化语言模型概率的相邻子词。

Unigram

        Unigram与BPE和WordPiece在本质上有明显区别。前两者从小词表开始,逐步增加到设定的词汇量,而Unigram则先初始化一个大词表,通过语言模型评估逐步减少词表,直到达到目标词汇量。

2. 分词粒度的讨论

        技术有这么多,那该如何选择?首先我们来看下不同粒度的token有哪些影响?

2.1 针对小的token的分析

优势:

1.较小的token使得模型能够生成和理解更广泛的单词,包括通过组合较小的部分来处理从未见过的单词。

2.由于token较小,词汇大小通常较小,从而在某些方面节省内存和计算资源。

3.较小的token一般也更适合处理多种语言或代码,尤其是当这些语言具有不同的句法或语法结构时。

4.较小的token可能更好地处理拼写错误。

缺点:

1.较小的token意味着给定文本会被拆分成更多的词元,从而增加处理文本的计算成本。

2.另外由于固定的最大token限制,使用较小的token可能导致模型能够考虑的实际内容的“上下文”减少。

3.较小的token可能导致表达存在一定的模糊度,使模型在没有足够上下文的情况下更难理解token序列的含义。

2.2 针对大的token的分析

优点:

1.较大的token减少表示文本所需的token数量,从而在计算上提高了处理效率。

2.在固定的最大token数限制下,较大的token允许模型考虑更长的文本,从而可能提高理解和生成能力。

3.较大的token可能直接捕捉到更多细致的含义,减少因将单词拆分成更小部分而产生的模糊性。

缺点:

1.较大的token通常需要更大的词汇来捕捉相同范围的文本,这可能会带来占用大量内存的现象。

2.较大的token可能限制模型对未见或稀有单词的泛化能力,因为整个token必须与模型的词汇中的某个内容匹配。

3.较大的token可能在处理复杂形态或句法的语言时效果不佳,或在需要理解多种语言的任务中。

4.较大的token对拼写错误、拼写变体及其他文本中的小变化敏感。

3. 主流大模型的分词器选择

模型分词器
GPT-4oBPE(BBPE)【2】
GPT3BPE(BBPE)【3】
GPT2BPE(BBPE)【4】
GPTBPE【5】
Llama3BPE(BBPE)【6,8】
Llama2BPE(BBPE)【7,8】
Qwen2BPE(BBPE)【9,10】
QwenBPE(BBPE)【11】
ChatGLMBBPE【12】
BaichuanBPE【13】
RoBERTaBPE【5】
BARTBPE【5】
DeBERTaBPE【5】
MPNETWordPiece【14】
Funnel TransformersWordPiece【14】
MobileBERTWordPiece【14】
DistilBERTWordPiece【14】
BERTWordPiece【14】
T5Unigram【15】
AlBERTUnigram【15】
mBARTUnigram【15】
XLNetUnigram【15】

        当然虽然说GPT系列或者其他大模型用的都是BPE(BBPE),但在处理上还会有一些细微的差异。可以试用下openai提供的在线tokenizer工具:https://platform.openai.com/tokenizer

        此外, OpenAI、Google、huggingface分别都提供了开源的tokenizer工具:tiktoken、sentencepiece、tokenizers,支持主流的分词算法。

扩展阅读:

《全方位解读大模型:多样知识点的深度探讨与技术分享小结》

4. 参考材料

【1】Understanding “tokens” and tokenization in large language models

【2】openai/tiktoken

【3】gpt-tokenizer

【4】Language Models are Unsupervised Multitask Learners

【5】Byte-Pair Encoding tokenization

【6】Llama3

【7】Llama2

【8】Llama (LLM)

【9】qwen2-concepts

【10】tokenization_qwen2

【11】qwen/tokenization_note

【12】tokenization_chatglm

【13】Baichuan-7B

【14】WordPiece tokenization

【15】Unigram tokenization

http://www.lryc.cn/news/469326.html

相关文章:

  • 入侵检测算法平台部署LiteAIServer视频智能分析平台行人入侵检测算法
  • 000010 - Mapreduce框架原理
  • OpenCV未定义标识符CV_XXX
  • flask服务通过gunicorn启动
  • 用更多的钱买电脑而不是手机
  • 10.25学习
  • 用xshell给服务器上传jar包
  • 从零搭建开源陪诊系统:关键技术栈与架构设计
  • java List<Map<String, Object>> 转 List<JSONObject> 的几种方式
  • 使用Python来下一场深夜雪
  • uniapp使用easyinput文本框显示输入的字数和限制的字数
  • 蓝牙技术的多种模式详解
  • 攻防世界-流量分析WP
  • 打印爱心型
  • WASM 使用说明23事(RUST实现)
  • Visual studio 下载安装
  • jEasyUI 创建自定义视图
  • SpringMVC6-SpringMVC的视图
  • echarts给Y轴的不同轴线设置不同的颜色的样式
  • 从0到1构建 UniApp + Vue3 + TypeScript 移动端跨平台开源脚手架
  • 论文笔记:LaDe: The First Comprehensive Last-mile Delivery Dataset from Industry
  • 无用的知识又增加了-静态二值贝叶斯滤波
  • cesium相机(camera)控制
  • Java 反射
  • 【目标检测01】真实框、预测框、锚框和交并比IoU
  • 青少年编程能力等级测评CPA C++五级试卷(2)
  • SATA数据线
  • 《云原生安全攻防》-- K8s攻击案例:权限维持的攻击手法
  • 回溯算法-Java【力扣】【算法学习day.14】
  • 从本地到云端:跨用户请求问题的完美解决方案