为什么大模型最小单位Token?它是怎么计算的?

系列文章见: 《回忆AI时代-从图灵机到人工智能》

什么是Token

在人工智能领域Token被翻译为词元,它是AI模型理解和处理文本的最小基础单位。 模型不能直接阅读人类的文字,它只能理解数字,因此输入给模型的提示词和模型输出的文字,都会先被拆解成一个个 Token,然后再转换成数字进行运算。

大模型如何计算Token

我们通过一个案例来介绍大模型Token的统计方式,一共分为三步:

  • 用户输入问题
  • 模型理解整个问题
  • 开始生成答案

1.用户输入问题

譬如,你问大模型:

1
“什么是机器学习?”

对于模型来说,第一步不是理解文字而是通过Tokenizer(分词器)先把它转换成Token ID,譬如:

文本 Token Token ID
什么 什么 1523
87
机器学习 机器学习 9361
34

按照以上表格对应关系,模型会收到 “[1523, 87, 9361, 34]”,模型会再把Token ID转成向量,如下:

Token ID 向量
1523 [0.12, -0.55, 1.03, …]
87 [-0.31, 0.98, …]
9361 [0.42, -0.67, …]

这也就是说模型不能直接阅读人类的文字,它只能理解数字。到目前已经完整了文字与计算机理解的数字转换。

2.模型理解整个问题

Transformer会计算。

1
2
3
4
5
6
7
什么
\
\
---> 机器学习
/
/

以及。

1
2
3
4
什么
\
\
---> 是

通过以上模型中的算法的计算,机器来理解”机器学习是什么?”这个问题。

3. 开始生成答案

模型不会一次生成整个回答,而是一次预测一个Token,输入的问题是:

1
什么是机器学习?

模型会拆分为:

1
[什么][是][机器学习][?]

模型预测:

1
机器学习

现在输出变成:

1
[什么][是][机器学习][?][机器学习]

再预测:

1

输出:

1
[什么][是][机器学习][?][机器学习][是]

再预测:

1
一种

输出:

1
[什么][是][机器学习][?][机器学习][是][一种]

整个流程:

1
2
3
4
5
6
7
8
9
10
11
12
13
输入

预测第1个Token

把这个Token放回输入

预测第2个Token

放回输入

预测第3个Token

……

所以模型每生成一个Token,都会把它加入上下文,再重新计算下一步,直到最终答案的生成。

最后Token的计算方式:

  • 开始的问题:“什么是机器学习?“,分词器(Tokenizer)会将它拆分为[“什么”, “是”, “机器学习”, “?”] 并最终统计是4个Token。
  • 模型生成的答案:“是机器学习是一种让计算机从数据中学习规律的方法……”。共120个Token。

最终的Token消耗量就是124个。

Token的计算公式:

  • 输入Token(Prompt Tokens):发送给模型的所有内容,被Tokenizer切分后的Token总数。
  • 输出Token(Completion Tokens):模型生成的回答,被Tokenizer切分后的Token总数。
  • 总Token(Total Tokens)= 输入Token+输出Token。

实际在使用模型中消耗Token为什么会比预期多

我们在使用大模型时,如输入”什么是机器学习?“,在模型输入Token前,不只是你输入的那一句话Agent还会帮用户输入一些其他信息,让模型预测更匹配用户的期望,譬如:

1
2
3
4
5
System:
你是一个有帮助的 AI 助手。

User:
什么是机器学习?

还有聊天时的历史上下文:

1
2
3
4
5
6
7
8
9
10
11
System:
...

User:
你好

Assistant:
你好!

User:
什么是机器学习?

这些都会被一起Tokenize并计入输入Token。因此最终Token = System Prompt + 历史对话 + 用户当前信息。