详细解释Qwen的tokenizer创新:字节级别字节对编码(BBPE)

关键要点

  • 研究表明,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在以下几个方面体现出创新:

  1. 字节级别设计:

    • 传统的BPE通常基于字符级别,而BBPE从字节级别开始。这使得Qwen的tokenizer能够处理任何UTF-8编码的字符,而不会依赖于特定语言的字符集。例如,GPT-2和RoBERTa也使用了BBPE(根据Byte-Pair Encoding tokenization - Hugging Face NLP Course),但Qwen的实现更注重多语言支持。

    • 这种设计确保了模型的通用性,特别是在处理中文、日文等非拉丁字母语言时,避免了将字符拆分为多个字节的情况。

  2. 大规模词汇表:

    • Qwen的词汇表大小为151,643个regular tokens,远大于许多其他模型(如Llama的原始词汇表只有32,000个token,扩展后为49,953)。大词汇表允许模型学习更多的子词和常见短语,提高了tokenization的效率。

    • 例如,在中文中,常见的词组(如“人工智能”)可能被合并为单一的token,而不是被拆分为多个独立的字符。

  3. 多语言优化:

    • Qwen的训练数据包括多种语言,这使得其tokenizer能够有效地处理不同语言的文本。例如,对于中文,Qwen的tokenizer能够将一个字符或多个字符合并为单一token,显著提高了压缩率。

    • 相比之下,其他模型(如Llama)在处理中文时可能需要额外的扩展(如增加中文token),而Qwen从设计之初就考虑了多语言支持。根据Efficient and Effective Text Encoding for Chinese LLaMA and Alpaca,扩展后的Llama可以达到约1.75个字符/ token的压缩率,但Qwen的更大词汇表可能在处理复杂中文文本时更具优势。

  4. 无未知词:

    • BBPE确保任何输入文本都可以被完全tokenize,而不会出现未知词。这对于构建一个通用且可靠的语言模型非常重要。根据Byte pair encoding - Wikipedia,BPE的修改版本用于LLM tokenizers,BBPE进一步增强了这一特性。

  5. 高效的文本压缩:

    • 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. 

大模型基础知识学习笔记之Tokenizer

[2025-03-10]2. 

大语言模型中常用的tokenizer算法. 便宜云服务器开发者社区.

[2025-01-03]3. PDF

Jacob Devlin, Ming-Wei Chang et al. “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding.” North American Chapter of the Association for 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值