本文转自:躺平猫猫
我们经常在各种大模型的描述中看到token这个词,比如下面的描述,是在说Claude这个大模型最新支持10万个token,所以进行长对话是没有问题的。
本文在于解释,在AI大模型这个领域中,token表示什么意思,有什么作用。
什么是token
AI大模型处理文本时,会先将文本分割成一个个最小单位,这些最小单位就是token。
常见的文本分割方式主要有以下几种:
-
基于空格分词:即以空格为分隔,将文本分割成词组。例如"I am Claude"会被分割为["I","am","Claude"]。
-
基于词典分词:根据预设的词典,在词典中可以匹配到的词组作为一个token。例如"Claude是一款AI"根据词典可分为 ["Claude","是","一款","AI"]。
-
基于字节对齐分词:按照字节个数将文本分割,常见的中文模型使用2字节或3字节对。例如"Claude是一款AI"可以分为 ["Cl","au","de","是","一","款","AI"]。
-
基于子词分词:将单词拆分为更小的子词组成token,例如"learning"可以拆分为["learn","##ing"]。
-
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,精简有效的表达是非常重要的。(所以语文和英语是要重点培养的能力)
基于上述影响的使用建议
-
需要控制prompt的总长度,避免超过模型的最大token限制。如果prompt过长会导致无法输入到模型中。
-
需要平衡prompt中的语言描述和保留结果生成的token空间。如果prompt本身占用大量token,那么生成的结果将非常短。
-
需要使用更加简洁的语言表达prompt。过于复杂和冗长的prompt可能超出token限制。
-
可能需要调整结果生成部分的最大长度,以容纳较长的prompt。
-
如果prompt中包含例子,需要控制例子的长度,避免占用过多的token限制。
-
不同模型的限制不同,需要针对具体模型进行适配。比如GPT-3可以使用更长的prompt。
-
可以考虑使用模板、变量等方式动态调整prompt长度。
-
要懂得如何拆解需求、拆解流程、拆解提示词
-
中英文切换。使用占用token少的语言描述,然后要求它用指定的语言输出
-
了解一些专有词汇,避免大段的描述。