新来的妹子不懂大模型中的token!已劝退...
相信你只要了解过大模型,就听过 token 这个词儿,大家在用 ChatGPT 的 API 时,是按 token 计费的。
例如,你提问消耗了 100 token,ChatGPT 根据你的输入,回答了 200 token,那么一共消费的 token 数就是 300。
有时候看一些偏技术的文章,一些模型后面带着 8k、32k,甚至 100k,这也是指模型能处理的最大 token 长度。
既然 token 在大模型领域这么高频出现,我们不禁要问:
- 什么是 token?
- 它是怎么计算的?
- 一个 token 是指一个字吗?
- 中文和英文的 token 是一样的吗?
这篇文章我们就来聊聊这些问题,大模型中的"token"是指文本的最小处理单位,在大模型处理中,将文本划分为 token 是对文本进行分析和处理的基本步骤之一。
通常情况下,一个 token 可以是一个单词、一个标点符号、一个数字,或者是其他更小的文本单元,如子词或字符。
以下是不同 token 切分类型的介绍:
(1)单词级 token
即 token 是按照单词进行划分的。一个句子中的每个单词通常都会成为一个独立的 token。
例如,在句子"我是丁师兄"中,"我"、"是"、"丁师兄"分别是三个单词级 token。
(2)标点符号级 token
除了单词,标点符号通常也作为独立的 token 存在。这是因为标点符号在语义和语法上都具有重要的作用。
例如,在句子"token 好理解吗?"中,除了"token 好理解吗"作为一个整体的 token 外,最后的问号"?"也是一个独立的 token。
(3)子词级 token
为了更好地处理复杂的语言情况,有时候将单词进一步划分为子词级的 token。
例如,单词"unhappiness"可以被划分为子词级token "un-"、"happiness"。
更复杂一点的,现在大模型比较流行的子词级 token 还有字节对编码(BPE),这也是 ChatGPT 官方采用的 token 编码方法,它是通过合并出现频繁的子词对来实现的。
(4)字符级 token
在某些情况下,特别是在字符级别的处理任务中,文本会被划分为字符级 token。这样做可以处理字符级别的特征和模式。
例如,在句子"Hello!"中,"H"、"e"、"l"、"l"、"o"和"!"分别是六个字符级 token。
通过对文本做成一个一个的 token,LLM 模型能够更好地理解和处理语言,从而实现任务如文本生成、机器翻译、文本分类等。
因此,现在主流的大模型都会自带一个 tokenizer,也就是自动将输入文本解析成一个一个的 token,然后做编码(就是查字典,转换成数字),作为大模型真正的“输入”。
最后,那么在 ChatGPT 中,一个 token 到底是多长?
下面是一些有用的经验法则,可以帮助理解 token 的实际长度:对于英文文本,1 个 token 大约是 4 个字符或 0.75 个单词。
通常来说,也就是 1000 个 Token 约等于 750 个英文单词。对于中文,1000 个 Token 通常等于 400~500 个汉字。
本文转载自 丁师兄大模型,作者: 丁师兄