关键要点
-
研究表明,Qwen的tokenizer采用字节级别字节对编码(BBPE),从UTF-8字节开始构建词汇表,确保无未知词。
-
证据倾向于认为,BBPE创新在于其高效的多语言支持,特别是对中文的压缩率高(1.5-1.8字符/ token)。
-
争议点在于与其他模型(如Llama)的比较,扩展后的Llama可能达到类似效率,但Qwen的更大词汇表(151,643 tokens)更具优势。
直接回答
Qwen的tokenizer创新在于其使用字节级别字节对编码(BBPE),这是一种从UTF-8字节开始构建词汇表的子词分词方法。以下是其主要特点和创新:
BBPE的工作原理
BBPE首先将文本编码为UTF-8字节(每个字节是8位二进制),初始词汇表包含所有256个可能的字节。然后,通过迭代合并训练数据中最频繁出现的字节对,形成更长的子词,直到词汇表达到151,643个token。例如,一个常见的中文字符可能被合并为一个token,而不是拆分为多个字节。
创新之处
-
无未知词:BBPE确保任何输入文本都可以被完全tokenize,不会出现未知词问题,特别适合处理中文等复杂语言。
-
多语言优化:Qwen的训练数据包括多种语言,词汇表能高效表示不同语言的子词,尤其对中文压缩率高,1 token约1.5-1.8个字符。
-
大词汇表:相比其他模型(如Llama的32,000 tokens),Qwen的151,643 tokens允许更细致的子词表示,提高效率。
一个意外的细节是,BBPE不仅适用于中文,还能处理其他非拉丁字母语言,如日文,确保模型的通用性。
详细报告:Qwen的tokenizer创新——字节级别字节对编码(BBPE)
引言
近年来,大型语言模型(LLM)在自然语言处理中的应用日益广泛,其分词器(tokenizer)在处理多语言文本时的效率成为关键问题。Qwen是阿里云开发的一个多语言LLM,其tokenizer采用字节级别字节对编码(Byte-level Byte Pair Encoding,BBPE),在处理中文等复杂语言时表现出显著优势。本报告将详细解释BBPE的原理、Qwen中的具体实现,以及其创新之处。
BBPE的基本原理
字节对编码(Byte Pair Encoding,BPE)是一种常见的子词分词方法,最初用于数据压缩,之后被广泛应用于NLP任务中。其核心是通过迭代地合并最频繁出现的字符或子词对来构建词汇表,从而将文本分解为更少的token(令牌)。
-
标准BPE:通常从字符级别开始,初始词汇表包含所有可能的字符(如拉丁字母、数字等)。然后,算法扫描训练数据,找到最频繁的字符对(如“he”),合并为一个新token,并重复此过程直到达到预设的词汇表大小。
-
BBPE的创新:Qwen的BBPE将初始词汇表改为基于字节(byte-level)。具体来说:
-
首先将文本编码为UTF-8字节,每个字节是8位二进制,初始词汇表包含所有256个可能的字节。
-
然后,算法迭代地合并训练数据中最频繁的字节对,形成更长的子词。例如,一个常见的中文字符(如“中”)可能在训练数据中频繁出现,因此会被合并为一个单一的token,而不是被拆分为多个字节(如3个UTF-8字节)。
-
这个过程持续进行,直到词汇表达到预设的大小(Qwen为151,643个token)。
-
根据Key Concepts - Qwen,BBPE确保了任何字符都可以被表示,而不会出现未知词(out-of-vocabulary,OOV)问题,这对于多语言模型尤为重要。
Qwen的BBPE实现
Qwen的tokenizer使用BBPE,其具体实现细节如下:
-
词汇表大小:Qwen的词汇表包含151,643个regular tokens和208个control tokens,总计151,851个token。这是非常大的词汇表,足以支持多语言处理。
-
实现工具:根据Qwen/tokenization_note.md at main · QwenLM/Qwen,BBPE使用tiktoken包实现,基于UTF-8字节进行操作。
-
初始化方法:用户可以通过Hugging Face的接口初始化tokenizer,例如AutoTokenizer.from_pretrained('Qwen/Qwen-7B', trust_remote_code=True)。
-
词汇表扩展:Qwen提供脚本(如/QwenLM/Qwen/blob/main/examples/add_merges.py)允许动态扩展词汇表,添加新的合并规则。这需要一个纯文本文件(qwen_extra_vocab.txt)包含token和频率,格式为token和频率用\t分隔。
Qwen的官方文档中提到,BBPE的效率非常高:
-
对于英语,1个token大约对应3-4个字符。
-
对于中文,1个token大约对应1.5-1.8个字符。
这意味着Qwen的tokenizer在中文文本压缩上表现出色,能够用更少的token表示相同长度的文本。例如,一个28个字符的中文句子(如“人工智能是计算机科学、心理学、哲学等学科融合的交叉学科。”)大约需要16-19个token。
BBPE的创新之处
Qwen的BBPE在以下几个方面体现出创新:
-
字节级别设计:
-
传统的BPE通常基于字符级别,而BBPE从字节级别开始。这使得Qwen的tokenizer能够处理任何UTF-8编码的字符,而不会依赖于特定语言的字符集。例如,GPT-2和RoBERTa也使用了BBPE(根据Byte-Pair Encoding tokenization - Hugging Face NLP Course),但Qwen的实现更注重多语言支持。
-
这种设计确保了模型的通用性,特别是在处理中文、日文等非拉丁字母语言时,避免了将字符拆分为多个字节的情况。
-
-
大规模词汇表:
-
Qwen的词汇表大小为151,643个regular tokens,远大于许多其他模型(如Llama的原始词汇表只有32,000个token,扩展后为49,953)。大词汇表允许模型学习更多的子词和常见短语,提高了tokenization的效率。
-
例如,在中文中,常见的词组(如“人工智能”)可能被合并为单一的token,而不是被拆分为多个独立的字符。
-
-
多语言优化:
-
Qwen的训练数据包括多种语言,这使得其tokenizer能够有效地处理不同语言的文本。例如,对于中文,Qwen的tokenizer能够将一个字符或多个字符合并为单一token,显著提高了压缩率。
-
相比之下,其他模型(如Llama)在处理中文时可能需要额外的扩展(如增加中文token),而Qwen从设计之初就考虑了多语言支持。根据Efficient and Effective Text Encoding for Chinese LLaMA and Alpaca,扩展后的Llama可以达到约1.75个字符/ token的压缩率,但Qwen的更大词汇表可能在处理复杂中文文本时更具优势。
-
-
无未知词:
-
BBPE确保任何输入文本都可以被完全tokenize,而不会出现未知词。这对于构建一个通用且可靠的语言模型非常重要。根据Byte pair encoding - Wikipedia,BPE的修改版本用于LLM tokenizers,BBPE进一步增强了这一特性。
-
-
高效的文本压缩:
-
Qwen的tokenizer在中文文本上的压缩率高达1.5-1.8个字符/ token,这意味着token数量显著减少,降低了模型处理长文本时的计算成本。
-
例如,与Llama的原始tokenizer相比(可能将中文字符拆分为35个token表示28个字符),Qwen只需16-19个token,效率更高。
-
与其他模型的比较
为了更好地理解Qwen BBPE的创新,可以将其与其他模型的tokenizer进行比较,如下表所示:
模型 | 分词方法 | 词汇表大小 | 中文压缩率(字符/ token) | 示例句子 token 数(28 字符) |
---|---|---|---|---|
Qwen | BBPE | 151,643 | 1.5-1.8 | 16-19 |
Llama(原始) | SentencePiece | 32,000 | ~0.8 | 35 |
Llama(扩展后) | SentencePiece | 49,953 | ~1.75 | 16 |
GPT-2 | BBPE | 50,257 | 未优化中文 | - |
BERT | WordPiece | 30,000 | 可能有未知词 | - |
从表中可以看出,Qwen的BBPE在词汇表大小和中文压缩率上均表现出色,特别是在与Llama的原始版本对比时,效率显著更高。即使与扩展后的Llama相比,Qwen的更大词汇表可能在处理复杂文本时更具优势。
讨论与未来展望
Qwen的BBPE创新在于其字节级别设计和大规模词汇表,特别适合处理多语言文本,尤其是中文等复杂语言。这种方法不仅提高了文本压缩效率,还确保了模型的通用性和可靠性。未来,随着更多LLM对多语言的支持增强,类似Qwen的BBPE设计可能成为标准。
关键引文
米大
Qwen模型的Tokenizer创新主要体现在其采用的 字节级别字节对编码(Byte-level Byte Pair Encoding, BBPE) 方案上,这一设计结合了传统BPE算法的优势,并针对多语言场景和字符编码问题进行了优化。以下是详细解释:
1. BBPE的基本原理
BBPE是BPE(字节对编码)的扩展,其核心思想是将文本处理的最小单位从字符级别(Character)下移至 字节级别(Byte) 。具体流程如下:
- UTF-8编码预处理:所有输入文本首先被转换为UTF-8编码的字节序列。例如,一个中文字符“语”会被编码为3个字节(如
0xE8, 0xAF, 0xAD
)。 - 字节合并:通过统计相邻字节对的频率,逐步合并最高频的字节对,直到达到预设的词表大小(如Qwen的152K词表)。例如,若字节序列
0xE8 0xAF
频繁出现,则合并为一个新的子词单元。
2. 与传统BPE的关键区别
- 基础词表固定为256:传统BPE的基础词表可能包含数万个Unicode字符(尤其是中文等语言),而BBPE仅需256个字节(即所有可能的8位组合),显著减少词表冗余并实现跨语言共享。
- 避免字符编码问题:直接操作字节序列无需处理字符边界问题,例如多字节Unicode字符的分割错误。
- 支持所有文本:由于任何字符均可分解为字节,BBPE理论上能处理所有输入文本,完全消除未登录词(OOV)问题。
3. Qwen的BBPE创新点
Qwen在BBPE基础上进行了以下优化:
- 中文适配性增强:
- 在基础词表中显式添加高频汉字和词语(如“模型”“自然语言”),提升中文压缩效率和语义捕捉能力。
- 对罕见中文字符采用字节级回退机制:若某字符未在合并后的词表中出现,则直接拆分为UTF-8字节序列处理,而非标记为
<unk>
。
- 高效实现:
- 依赖
tiktoken
库进行快速BPE分词,支持大规模预训练。 - 通过数字拆分为单位数(如“2024”拆分为“2 0 2 4”)增强对数值数据的处理能力。
- 依赖
4. 优势与挑战
- 优势:
- 跨语言统一性:单一词表支持多语言混合文本,避免为不同语言单独设计词表。
- 鲁棒性:对拼写错误、罕见词、特殊符号等具有更强容错性。
- 模型泛化:底层字节共享可能促进跨语言知识迁移(如中文和日文共用部分字节组合)。
- 挑战:
- 序列长度增加:中文字符需3-4个字节表示,导致输入序列长度显著增长,可能影响训练和推理效率。
- 潜在分词歧义:字节级合并可能破坏语义连贯性(如“语言模型”被拆分为不相关的字节组合)。
5. 与其他模型的对比
- 与SentencePiece的区别:Qwen的BBPE直接从字节开始合并,而非基于Unicode字符,这可能导致未登录词边界错误(如中日韩混编文本)。
- 与GPT系列BBPE的对比:Qwen通过扩展中文相关词表(如成语、专有名词)和优化数字处理,在中文任务中表现更优。
总结
Qwen的BBPE通过字节级操作+多语言词表扩展,在保持传统BPE高效压缩能力的同时,解决了多语言模型中的词表膨胀和未登录词问题。尽管序列长度增加带来一定计算成本,但其在中文场景下的优化设计(如高频词增强和数字拆分)使其在同类模型中表现突出。
分享
研究追问
相关事件
事件名称 | 事件时间 | 事件概述 |
---|---|---|
BERT模型的发布 | 未明确提及具体时间 | 科技发展BERT模型通过预训练深度双向Transformer来提高语言理解能力,并在多个自然语言处理任务上取得了新的世界纪录。 |
Qwen-7B模型的tokenization方法 | 2024-06-24 | 技术报告Qwen-7B模型采用UTF-8字节级别的BPE tokenization方式,依赖tiktoken软件包进行分词,并对特殊token进行了详细说明。 |
Qwen技术报告发布 | 2023-09-25、2023-09-28 | 技术报告Qwen技术报告介绍了Qwen模型的编码压缩率、词汇表设计和架构,展示了其在多语言性能上的提升。 |
Qwen2技术报告发布 | 2024-09-21、2024-09-08 | 技术报告Qwen2采用了基于BPE的字节对编码方法,提高了多语言能力,并介绍了其Tokenizer的设计。 |
机器翻译系统基于BBPE的实现 | 未明确提及具体时间 | 科技发展一种基于Transformer架构的机器翻译系统采用BBPE算法,成功解决了低资源语言对等任务。 |
相关组织
组织名称 | 概述 |
---|---|
OpenAI | 科技/人工智能OpenAI 是一家专注于人工智能研究和开发的公司,开发了 GPT 系列模型。 |
SentencePiece | 软件/自然语言处理SentencePiece 是一个开源的分词工具,用于实现字节级别的 BPE 分词算法。 |
tiktoken | 软件/自然语言处理tiktoken 是一个快速的 BPE 标记化器,用于在自然语言处理中进行分词。 |
Fairseq2 | 软件/自然语言处理Fairseq2 是一个用于训练 Transformer 模型的库,支持多种语言和子词表示方法。 |
相关人物
人物名称 | 概述 |
---|---|
Radford | 研究人员/科学家Radford 是 BERT 模型的主要开发者之一,该模型在多个自然语言处理任务上取得了突破性成果。 |
来源
管理1.
[2025-03-10]2.
大语言模型中常用的tokenizer算法. 便宜云服务器开发者社区.
[2025-01-03]3. PDF