从2神仙道19年到如今,是时分从新审阅Tokenizati

2019 年问世的 GPT-2,其 tokenizer 应用了 BPE 算法,这种算法至今仍很罕见,但这种方法是最优的吗?来自 HuggingFace 的一篇文章给出懂得释。「9.9 跟 9.11 究竟哪个年夜?」这个成绩一度难坏了各家年夜模子。对于模子为什么会答错,研讨职员给出了种种猜想,包含预练习数据的形成跟模子架构自身。在一篇新博客中,来自 HuggingFace 的研讨者探讨了可能形成这一成绩的起因之一 ——tokenization,偏重点剖析了它怎样影响模子的数学才能,尤其是算术才能。回想 Tokenization早在 2019 年,GPT-2 论文就具体先容了将 BPE(byte-pair encoding)用于言语模子的 tokenization 方式。此方式的任务道理是将频仍呈现的子词兼并为单个单位,直到词汇量到达目的巨细。但是,这种做法天生的词汇表在很年夜水平上取决于输入到 tokenizer 中的练习数据,从而招致了在数字编码方法上的纷歧致性。比方,在练习数据中罕见的数字(比方 1-100、1943 年如许的表现)很可能被表现为单个 token,而较少见到的数字则被拆分红多个 token,如下所示:四年后,Llama 系列来了!Llama 跟 Llama 2 应用 SentencePiece (一个用于基于文本天生的无监视文本 tokenizer )的 BPE 实现,并对数字停止了明显的调剂:它们将全部数字拆分为单个数字。这象征着只有 10 个独一 token(0-9)来表现任何数字,从而简化了 LLM 的数字表现。Deepseek 厥后宣布了一个模子 (DeepSeek-V2),它有一个相似的单元数(single-digit)的 tokenizer 。厥后,Llama 3 采取了差别的方式来处置数字,将它们 tokenizing 为三位数。因而,从 1 到 999 的数字每个数都有独一的 token,而从 1000 开端的数字由这些 token 构成。一个新的范式:从右到左的 Tokenization到现在为止,咱们所看到的 tokenization 方式都是从左到右处置文本的。比方,假如三位数字的分词法碰到序列 12345,它将从扫尾扫描,将其剖析为 123 跟 45 如许的片断。与从左到右(L2R)的分词方式差别,从右到左(R2L)的分词方式以三个字符为一组,从文本的末端开端向扫尾处置。应用 R2L 分词,序列 12345 将经由过程从右侧扫描停止分词,起首宰割出 345,而后再处置 12。近来,一些前沿的闭源模子也在摸索应用这种 R2L 分词方式,这曾经被证实对某些算术运算有利,由于 R2L 表现能够避免操纵数的错位。另有传言称 Claude 应用了这种 R2L 分词方式。为了更好地舆解错位是什么样子的,让咱们以 3789 + 8791 为例:如上所示,在三位数从左到右(L2R)的例子中,9 + 1 应当映射到数字 0,但现实上却与 8 组合在一同构成了 80,由于后面的三个 token(125)曾经被分在一同了。tokenization 界限的偏移在进修进程中引入了额定的庞杂性,曾经证实正确性是无害的。而在从右到左(R2L)的例子中,数字 580 跟对应的子操纵数 789 跟 791 很好地对齐了。以下是用于处置数字 tokenization 的技巧概述:差别方式的比拟该研讨旨在比拟多个 tokenizer 以及它们处置数字的差别方法,以只管增加模子架构、练习设置跟预练习数据等外部要素在评价成果中的影响。因而,每个模子之间独一的差别应当是 tokenizer。试验抉择了 3 种 tokenizer,分辨是 GPT-2 的 BPE tokenizer、Llama 3 的三位数 tokenizer(three-digit tokenizer)跟 Deepseek 的单元数 tokenizer(single-digit tokenizer)。from transformers import AutoTokenizerfrom tokenizers import pre_tokenizers, Regex# Initialize all tokenizerstokenizer = AutoTokenizer.from_pretrained ("meta-llama/Meta-Llama-3-8B")# Add an extra step to the existing pre-tokenizer stepstokenizer._tokenizer.pre_tokenizer = pre_tokenizers.Sequence ( [# Added step: split by R2L digits pre_tokenizers.Split (pattern = Regex (r"\d {1,3}(?=(\d {3})*\b)"), behavior="isolated", invert = False),# Below: Existing steps from Llama 3's tokenizer pre_tokenizers.Split (pattern=Regex (r"(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\r\n\p {L}\p {N}]?\p {L}+|\p {N}{1,3}| ?[^\s\p {L}\p {N}]+[\r\n]*|\s*[\r\n]+|\s+(?!\S)|\s+"), behavior="isolated", invert=False), pre_tokenizers.ByteLevel (add_prefix_space=False, trim_offsets=True, use_regex=False) ] )print (tokenizer.tokenize ("42069")) # [42, 069]练习模子应用了原始的 Llama 架构,别的,该研讨还调剂了暗藏层的数目,以确保每个模子大抵存在雷同数目的参数(约 14.5 亿)。成果算术成绩如下图所示,单元数 tokenization 优于其余 tokenizer 方式。成果表现,固然在较简略的成绩上差别不太显明,但跟着成绩庞杂性的增添,表示最佳的 tokenizer(单元数分词)与其余 tokenizer 之间的差距越来越年夜。这标明单元数分词对输入数据长度的变更更为鲁棒,而且可能更好地捕获庞杂的形式,从而在其余分词方式难以应答的场景中晋升机能。别的,本文还发明浮点数跟整数之间的机能差距在全部 tokenizer 中都是类似的。这标明在这两个种别当选择 tokenizer 时,并不存在固有的衡量,即对整数最优的 tokenizer 对浮点数也是最优的。如下图所示,三位数 R2L tokenization 比尺度三位数 L2R tokenization 存在更好的机能。本文发明,与应用默许 L2R token 数据停止练习比拟,应用 R2L token 数据停止练习的模子获得了明显的改良(乘法除外)。这标明,与典范的从左到右编码比拟,它是算术运算的最佳设置。当数字被从右向左每 3 位一组停止分块时,Pure-BPE(Byte Pair Encoding)tokenizer 表现出纷歧致的机能。显然,不任何额定数字预处置的纯基于 BPE 的 tokenizer 不会从应用 R2L token 化中受益。一个可能的说明是,这些 tokenizer 中数字分组的方法缺少构造。基于单词的成绩固然在基于单词的成绩上,差别 tokenizer 之间的机能差距不太显明,但本文察看到单元数 tokenizer 跟三位数 tokenizer 平日优于基于 BPE 的 tokenizer。这标明,无论是单词成绩仍是数字成绩,这种趋向都是分歧的。Llama 3 R2L 推理接上去本文停止了另一项测试,即现有的预练习 / 指令模子在接收与最初练习计划差别的 token 化计划时表示怎样,而无需从新练习或微调。因而,本文基于 Llama3 8B Instruct 模子,并应用上述雷同的代码修正其 tokenizer,以在推理时期履行 R2L tokenization,而无需从新练习新模子。在三位数 tokenization 计划中停止两个数相加须要留神的是:成果偶然会发生比输入数字更多的 token。比方将 999 跟 111 相加时,它们独自只要要一个 token,然而当它们相加发生 1110 时,须要两个 token(1 跟 110)。基于这个察看,本文想摸索在应用 L2R 跟 R2L tokenization 对差别的 token 长度履行加法时,会发生多年夜的差别。接上去,本文将把招致额定 token 的加法称为进位(carry)加法,而那些不进位的加法称为无进位(without carry)加法。本文用 Llama3 8B Instruct 履行了差别数字长度跟进位设置的算术义务。成果发明,减法、乘法或除法不任何明显的机能差别,因而成果只展现了加法。对非进位加法,数字个数为 3 的倍数会发生完整雷同的成果,由于像 528、491 如许的数字无论 token 化偏向怎样都存在雷同的 token。哪种 tokenization 方式合适数学固然 BPE 依然是一种风行的 tokenization 方式,但假如你必需应用存在最多 3 位数的 tokenizer,请确保数据 token 偏向为 R2L。假如你曾经有一个经由练习的模子,数据 token 方法为 L2R,那么你能够经由过程应用 R2L 来取得更好的数学机能。最主要的是,对算术运算,单元数 tokenization 的机能显明优于其余方式。总结而言,tokenization 对言语模子中的算术机能有明显影响。经由过程细心抉择,咱们能够依据成绩范例优化 tokenization 战略,从而进步 LLM 在数学义务上的表示。原文链接:https://huggingface.co/spaces/huggingface/number-tokenization-blog© THE END 转载请接洽本大众号取得受权投稿或追求报道:[email protected] ]article_adlist-->   申明:新浪网独家稿件,未经受权制止转载。 -->

Related Posts

Comments are closed.