系列文章见: 《回忆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 | 什么 |
以及。
1 | 什么 |
通过以上模型中的算法的计算,机器来理解”机器学习是什么?”这个问题。
3. 开始生成答案
模型不会一次生成整个回答,而是一次预测一个Token,输入的问题是:
1 | 什么是机器学习? |
模型会拆分为:
1 | [什么][是][机器学习][?] |
模型预测:
1 | 机器学习 |
现在输出变成:
1 | [什么][是][机器学习][?][机器学习] |
再预测:
1 | 是 |
输出:
1 | [什么][是][机器学习][?][机器学习][是] |
再预测:
1 | 一种 |
输出:
1 | [什么][是][机器学习][?][机器学习][是][一种] |
整个流程:
1 | 输入 |
所以模型每生成一个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 | System: |
还有聊天时的历史上下文:
1 | System: |
这些都会被一起Tokenize并计入输入Token。因此最终Token = System Prompt + 历史对话 + 用户当前信息。