AI 中的 Token

Token 是大语言模型处理文本时使用的基本单位。它不一定等于一个字、一个词或一个字符,而是由模型的分词器决定。


Token


Token 基本原理

在 AI 中,对于 “我是 Warner Chen”,可能会被拆成:

1
我|是|Warner Chen

也可能会被拆成:

1
我|是|Warner|Chen

模型并不是直接理解完整句子,而是先把文本转换成 Token,再把每个 Token 转换成数字 ID:

1
2
3
4
5
"我是 Warner Chen"

["我", "是", " Warner", " Chen"]

[15496, 995, 4751, 721]

这些数字 ID 会进一步转换成向量,送入模型计算。


Token 在模型生成中的作用

大语言模型每次通常只预测下一个 Token。

例如输入:中国的首都是?

模型可能计算出下一个 Token 的概率:

1
2
3
4
北京    92%
上海 3%
南京 2%
其他 3%

然后根据 Temperature、Top-K、Top-P 等采样参数选择一个 Token。选择 “北京” 后,模型继续预测再下一个 Token,直到生成结束。

过程类似:

1
2
3
中国的首都是
中国的首都是北京
中国的首都是北京。

上下文长度

模型支持的上下文窗口通常以 Token 计算,例如:

1
2
3
32K Token
128K Token
1M Token

上下文中会包含:

1
系统提示词 + 用户输入 + 历史对话 + 工具结果 + 模型输出

总 Token 数不能超过模型的上下文窗口。


推理性能

输入 Token 越多:

  • Prefill 阶段计算量越大
  • 首个 Token 延迟通常越高
  • KV Cache 占用越大

输出 Token 越多:

  • Decode 时间越长
  • GPU 持续占用时间越长

API 计费

很多模型 API 按 Token 计费,通常分为:

  • Input Tokens
  • Output Tokens
  • Cached Tokens

输出 Token 往往比输入 Token 更贵。


显存占用

在 vLLM、SGLang 等推理框架中,Token 数量会影响 KV Cache 的显存占用。通常可以近似理解为:

1
并发请求越多 × 每个请求的上下文越长 = KV Cache 占用越高

因此,Token 是理解大模型上下文长度、性能、吞吐量、延迟和成本的基础概念。


Top-K 和 Top-P

Top-K 和 Top-P 都是大语言模型生成文本时的采样参数,用于限制模型下一步可以选择哪些 Token,从而控制输出的随机性和多样性。

假设模型预测下一个 Token 的概率如下:

Token 概率
A 0.40
B 0.25
C 0.15
D 0.10
E 0.06
F 0.04

Top-K 基本原理

Top-K 表示只保留概率最高的 K 个 Token,再从中采样。

例如 top_k=3,那么就只保留 A / B / C。

D、E、F 会被排除,然后模型将 A、B、C 的概率重新归一化并进行随机选择。

特点:

  • Top-K 为 1:始终选择概率最高的 Token,接近贪心解码
  • Top-K 越小:输出越稳定、保守
  • Top-K 越大:输出越随机、多样
  • 候选数量固定,但不考虑概率分布是否集中

例如,当模型非常确定时,前两个 Token 可能已经占 95%;当模型不确定时,前两个 Token 可能只占 30%。Top-K 在两种情况下仍保留固定数量的 Token。


Top-P 基本原理

Top-P 也叫 Nucleus Sampling(核采样),表示按照概率从高到低累加,保留累计概率达到 P 的最小 Token 集合。

例如 top_p=0.8,累加过程如下:

1
2
3
A: 0.40,累计 0.40
B: 0.25,累计 0.65
C: 0.15,累计 0.80

因此保留 A、B、C。

特点:

  • Top-P 越小:输出越稳定、保守
  • Top-P 越接近 1.0:允许更多低概率 Token 参与采样
  • 候选数量不是固定的
  • 会根据模型当前的置信程度动态调整候选范围

Top-K 和 Top-P 的区别

参数 限制方式 候选数量
Top-K 保留概率最高的 K 个 Token 固定
Top-P 保留累计概率达到 P 的 Token 动态

可以简单理解为:

  • Top-K:最多考虑前几个候选
  • Top-P:考虑能够覆盖多少概率质量的候选

Temperature

Temperature 是大语言模型生成文本时用于控制随机性和创造性的采样参数。

它不会直接决定哪些 Token 可以参与采样,而是调整候选 Token 之间的概率差距。


Temperature 基本原理

假设模型预测下一个 Token 的原始概率为:

Token 原始概率
A 0.70
B 0.15
C 0.10
D 0.05

Temperature=0.2 时,概率分布会变得更加集中:

1
2
A:接近 100%
其他:接近 0%

模型几乎总是选择概率最高的 Token,因此输出通常更加稳定,适合代码生成、事实问答、信息提取和格式化输出。

temperature=1.5 时,概率分布会变得更加平缓:

1
2
A:概率降低
其他:概率提高

低概率 Token 更有机会被选中,因此输出通常更加随机多样,适合创意写作、头脑风暴、角色扮演等场景。


Temperature 数学原理

Temperature 通常作用于模型输出的 logits:

其中:

  • Zi:某个 Token 的原始 logits
  • T:Temperature
  • Pi:调整后的 Token 概率

当 T < 1 时,logits 的差距被放大,概率更加集中。

当 T > 1 时,logits 的差距被缩小,概率更加平均。


Temperature 常见取值

Temperature 效果 适用场景
0 接近确定性输出 结构化提取、代码、事实问答
0.1~0.3 非常稳定、保守 技术支持、命令生成、故障分析
0.4~0.7 稳定且有一定变化 普通对话、总结、邮件
0.8~1.0 多样性较高 文案、头脑风暴
1.0~1.5 随机性很高 创意写作
> 1.5 容易不连贯或产生错误 通常不建议

严格来说,公式中不能直接除以 0。推理框架通常将 temperature=0 解释为不进行随机采样,而是每次选择概率最高的 Token,也就是 Greedy Decoding(贪心解码)。

不过即使设置为 0,也不一定保证所有环境中的输出完全相同,仍可能受到并行计算、浮点精度、模型实现和服务端配置等因素影响。

Author

Warner Chen

Posted on

2026-07-16

Updated on

2026-07-16

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

Comments

You forgot to set the shortname for Disqus. Please set it in _config.yml.