【大模型理论篇】主流大模型的分词器选择及讨论(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.rhkb.cn/news/457073.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10-1.idea中的项目结构,辅助快捷键,模块的操作

idea中的项目结构和辅助快捷键 IDEA中项目结构 首先是创建项目,新建的项目中有子项目,我们可以创建模块 然后在模块中我们可以创建包,在包中的SRC中写我们的源代码,也就是类。 VScode写Java项目 如何你电脑比较卡的话&#…

Java中自增自减,赋值,逻辑,三元运算符

自增自减运算符 在某个变量前面或者后面加一--在某个变量前面或者后面减一 可以看见,当a输出时,a是没有变化的,说明如果是在变量后就是先使用再增加,而b输出时,b增加了1,说明如果是在变量前面就是先增加再…

【elkb】linux麒麟v10安装ELKB 8.8.X版本(ARM架构)

下载软件 相关版本信息 elasticsearch:8.8.1kibana:8.8.1logstash:8.8.1filebeat:8.8.1 下载地址 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.8.1-linux-aarch64.tar.gzhttps://artifacts.elastic…

配置nginx服务通过ip访问多网站

文章目录 第一种方法第二种方法 先关闭防火墙 # systemctl stop firewalld # setenforce 0第一种方法 #mntui 第二种方法 # vim /etc/nginx/conf.d/test_ip.conf # cat /etc/nginx/conf.d/test_ip.conf server {listen 192.168.234.100:80;#server_nameroot /test/100;loca…

PostgreSQL使用clickhouse_fdw访问ClickHouse

Postgres postgres版本:16(测试可用)docker 安装 插件安装 clickhouse_fdw: https://github.com/ildus/clickhouse_fdw 安装命令 git clone gitgithub.com:ildus/clickhouse_fdw.git cd clickhouse_fdw mkdir build && cd build…

文件下载漏洞

文件安全 文件下载 常见敏感信息路径 Windows C:\boot.ini //查看系统版本 C:\Windows\System32\inetsrv\MetaBase.xml //IIS配置文件 C:\Windows\repair\sam //存储系统初次安装的密码 C:\Program Files\mysql\my.ini //Mysql配置 C:\Program Files\mysql\data\mysql\user.…

【目标检测01】真实框、预测框、锚框和交并比IoU

文章目录 1. 任务定义2. 基本概念2.1 边界框(bounding box)2.2 真实框、预测框和锚框2.3 交并比 (IoU)2.4 代码实现 1. 任务定义 目标检测的主要目的是让计算机可以自动识别图片或者视频帧中所有目标的类别,并在该目标周围绘制边界框&#x…

Midjourney上线图像编辑,他们终于知道什么叫开放了。

Midjourney作为文生图领域毋庸置疑的头号选手,之前几乎每次推新都非常惊艳。 前段时间也看到很多消息说Midjourney v7已经训练完毕了,但我左等右等,没等到v7的发布。 却提前等来了可能会更加好玩的一个功能——图像编辑模式。 Midjourney的…

2024-网鼎杯第二次模拟练习-web02

进入做题页面,经过信息搜集和目录扫描,发现只有一个公告是可以利用的 http://0192c74e0f9871c2956795c804c3dde3.8nfp.dg01.wangdingcup.com:43014/OA_announcement.php?id1 这个后面有一个明显的注入点,经过多次刷新和快速刷新后发现&…

Linux中DNS搭建

文章目录 一、DNS介绍1.1、DNS是什么1.2、DNS的工作原理1.3、DNS的域名结构 二、Bind介绍2.1、bind概述2.2、bind主要配置文件 三、DNS安装四、主要配置文件解析(除/etc/named.conf)4.1、/etc/named.rfc1912.zones4.2、/etc/rc.d/init.d/named4.3、/etc/…

批处理操作的优化

原来的代码 Override Transactional(rollbackFor Exception.class) public void batchAddQuestionsToBank(List<Long> questionIdList, Long questionBankId, User loginUser) {// 参数校验ThrowUtils.throwIf(CollUtil.isEmpty(questionIdList), ErrorCode.PARAMS_ERR…

基于neo4j的新冠治疗和新冠患者轨迹的知识图谱问答系统

毕业设计还在苦恼选题&#xff1f;想做一个兼具前沿性和实用性的技术项目&#xff1f;了解下这款基于Neo4j的新冠治疗和患者轨迹的知识图谱问答系统吧&#xff01; 系统可以实现两大功能模块&#xff1a;新冠医疗信息和患者活动轨迹的展示与问答。通过图谱技术&#xff0c;你可…

CLion远程开发Ubuntu,并显示helloworld文字框

1.CLion的介绍以及其在远程开发上的优点 1&#xff09;CLion 是一个由 JetBrains 开发的跨平台 C/C 集成开发环境&#xff08;IDE&#xff09;&#xff0c;功能强大。 2&#xff09;CLion的优点&#xff1a; 远程工具链支持&#xff1a;CLion 支持通过 SSH 连接到远程 Ubuntu…

【AIGC】优化长提示词Prompt:提升ChatGPT输出内容的准确性与实用性

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;长提示词的挑战&#x1f4af;谷歌的优化长提示词技术关键因素分析 &#x1f4af;长提示词的设计原则&#x1f4af;优化长提示词的新框架方法&#x1f4af;实验结果分析不…

解决Github下载速度慢的问题

1. 方式一 先把hosts文件先复制一份到其他文件夹下&#xff0c;以免造成不小心改动出现的后果在C盘的C:\Windows\System32\drivers\etc 下的hosts文件 用编辑器打开后&#xff0c;在末尾处添加访问如下的两个网站所返回的两个IP https://github.com.ipaddress.com/ http://gi…

尝鲜electron --将已有vue/react项目转换为桌面应用

Electron 是一个强大的框架&#xff0c;它允许开发者使用 Web 技术&#xff08;如 HTML、CSS 和 JavaScript&#xff09;构建跨平台的桌面应用程序。它结合了 Node.js 和 Chromium&#xff0c;就相当于在桌面程序web和游览器,所以只需要简单的配置就可以转换为桌面应用 注意:无…

IDEA关联Tomcat——最新版本IDEA 2024

1.链接Tomcat到IDEA上 添加Tomcat到IDEA上有两种方式&#xff1a; 第一种&#xff1a; &#xff08;1&#xff09;首先&#xff0c;来到欢迎界面&#xff0c;找到左侧的Customize选项 &#xff08;2&#xff09;然后找到Build、Execution、Deployment选项 &#xff08;3&am…

Prism 四事件聚合器

#1024程序员节&#xff5c;征文# 不废话&#xff0c;直接上代码一个简单的示例。 1、事件聚合 创建一个文件夹EventBLL&#xff0c;添加EventDemo.cs&#xff0c;代码如下。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using …

.NET使用QuestPDF高效地生成PDF文档

前言 在.NET平台中操作生成PDF的类库有很多如常见的有iTextSharp、PDFsharp、Aspose.PDF等&#xff0c;今天我们分享一个用于生成PDF文档的现代开源.NET库&#xff1a;QuestPDF&#xff0c;本文将介绍QuestPDF并使用它快速实现发票PDF文档生成功能。 QuestPDF介绍 QuestPDF 是…

什么样的JSON编辑器才好用

简介 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;易于人阅读和编写&#xff0c;同时也便于机器解析和生成。随着互联网和应用程序的快速发展&#xff0c;JSON已经成为数据传输和存储的主要格式之一。在处理和编辑JSON数据…