本文转自:躺平猫猫

我们经常在各种大模型的描述中看到token这个词,比如下面的描述,是在说Claude这个大模型最新支持10万个token,所以进行长对话是没有问题的。

图片

本文在于解释,在AI大模型这个领域中,token表示什么意思,有什么作用。

什么是token

AI大模型处理文本时,会先将文本分割成一个个最小单位,这些最小单位就是token。

常见的文本分割方式主要有以下几种:

  1. 基于空格分词:即以空格为分隔,将文本分割成词组。例如"I am Claude"会被分割为["I","am","Claude"]。

  2. 基于词典分词:根据预设的词典,在词典中可以匹配到的词组作为一个token。例如"Claude是一款AI"根据词典可分为 ["Claude","是","一款","AI"]。

  3. 基于字节对齐分词:按照字节个数将文本分割,常见的中文模型使用2字节或3字节对。例如"Claude是一款AI"可以分为               ["Cl","au","de","是","一","款","AI"]。

  4. 基于子词分词:将单词拆分为更小的子词组成token,例如"learning"可以拆分为["learn","##ing"]。

  5. BPE分词:通过统计学将高频词组合并为一个token。

不同的token分割方法适用于不同的语言及场景。主流的预训练语言模型如BERT使用WordPiece/BPE分词,GPT使用BPE分词。选择合适的分割方法对模型性能有很大影响。

token的种类

  • 词token:文本中的一个独立单词或词组,如"apple"。

  • 子词token:将单词拆分成更小单位,如 "learn" 可以拆分为 "learn" 和 "##ing"。

  • 标点token:各种标点符号,如逗号","、句号"."等。

  • 特殊token:一些特殊符号,如"[CLS]"表示分类token,"[SEP]"表示分隔符。

  • 数字token:文本中的数字会转换为数字token,如"10"。

  • 未登录词token:不在模型词表中无法识别的词会被表示为一个未登录词token,如"[UNK]"。

  • 填充token:用于文本对齐的填充token,如"[PAD]"。

  • 句子开始token:表示句子开始,如"[SOS]"。

  • 句子结束token:表示句子结束,如"[EOS]"。

不同的模型会使用不同的token,但主要token种类均如上所示。此外还有一些模型专门定义的token类型, 如BERT中的"[MASK]"表示遮蔽语言模型中的被遮蔽词。选择合适的token类型对模型性能和效果非常重要。

各种大模型对token的数量各有什么限制?

不同的大语言模型对token的数量限制各不相同,主要有以下几点:

  • BERT: BERT使用WordPiece作为tokenization方法, vocab size可达30,000。

  • GPT-2: GPT-2使用BPE(Byte Pair Encoding)方法,其vocab size约为50,000。

  • GPT-3: GPT-3字典规模达到175亿token,这极大扩大了其语言表达空间。

  • T5: T5使用基于SentencePiece的子词表示,其字典规模可达32000词。

  • RoBERTa: 基于BERT,词表扩展到50,000个token。

  • ALBERT: 采用基于句子级别的词表,限制在30000个token以内。

  • XLNet: 词表大小与BERT相同,约为30,000。

  • ELECTRA: 使用与BERT相同的WordPiece,vocab size 30,000。

综上,不同模型对token数量的限制各不相同,主要在30000-50000之间,以维持计算效率。一般来说,token表越大,模型语言表达的空间越大,效果也越好,但计算成本会增大。所以需要权衡字典大小和效率。

对于大模型的作用

token是大语言模型自然语言处理的最细粒度。其实就是输入一个个token,再输出个个的token。

大语言模型不是适用于某一门语言的大型语言模型,它需要适用所有自然语言。只要它的token能够兼容人类的所有自然语言。

目前的计算机技术是通过unicode编码来实现这一点的。同时不仅自然语言,emoji等符号要包含在内,所以大语言模型能理解和回复emoji表情。

所以,大语言模型的工作原理实际上是将我们输入的文字转换成token,然后通过模型预测token,再将token转换成文字,最后再输出给我们。

token数量的限制对大模型输入文本的影响

1、一次性输入

2、一次对话的总体长度,而且这个长度不是达到上限就停止对话,而是遗忘前面的对话,所以为什么有的大模型在持续对话中会突然忘记之前的上下文。

各种大模型对于输入token的数量各有什么限制

主流的大语言模型对输入文本的最大token数量有不同的限制:

  • BERT: 输入最大长度为512个token

  • GPT-2: 最大输入长度为1024个token

  • GPT-3: 理论上没有长度限制,但实际应用中一般最大长度为4096个token,中文减半

  • T5: 最大输入长度为512个token

  • XLNet: 最大输入长度是512个token

  • RoBERTa: 最大长度为512个token

  • ALBERT: 输入限制在512个token以内

  • ELECTRA: 最大输入长度为512个token

  • BART: 输入限制在1024个token以内

  • Transformer-XL: 输入长度的理论上限可达到约8000个token

  • Claude 10万

这些大模型限制输入长度是为了控制计算复杂度。输入长度越长,所需的计算量和内存需求就越大。

token数量限制对prompt编写带来的影响

1、理解token的限制,对于token的消耗形成体感,token的消耗也是有金钱成本的,在同大语言模型交流的时候头脑中要形成这种成本意识,类似于云计算资源成本的衡量计算(培养会计能力)

2 一次完整的对话把握在限定之内完成(培养预估能力)

3 编写prompt的时候要珍惜tokens,精简有效的表达是非常重要的。(所以语文和英语是要重点培养的能力)

基于上述影响的使用建议

  1. 需要控制prompt的总长度,避免超过模型的最大token限制。如果prompt过长会导致无法输入到模型中。

  2. 需要平衡prompt中的语言描述和保留结果生成的token空间。如果prompt本身占用大量token,那么生成的结果将非常短。

  3. 需要使用更加简洁的语言表达prompt。过于复杂和冗长的prompt可能超出token限制。

  4. 可能需要调整结果生成部分的最大长度,以容纳较长的prompt。

  5. 如果prompt中包含例子,需要控制例子的长度,避免占用过多的token限制。

  6. 不同模型的限制不同,需要针对具体模型进行适配。比如GPT-3可以使用更长的prompt。

  7. 可以考虑使用模板、变量等方式动态调整prompt长度。

  8. 要懂得如何拆解需求、拆解流程、拆解提示词

  9. 中英文切换。使用占用token少的语言描述,然后要求它用指定的语言输出

  10. 了解一些专有词汇,避免大段的描述。

总体来说,编写高效的prompt需要在语言表达和token限制之间找平衡。明确模型的限制很重要,并对prompt进行精心设计和优化, 最大化prompt的功效

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐