AI 中的 Token
Token 是大语言模型处理文本时使用的基本单位。它不一定等于一个字、一个词或一个字符,而是由模型的分词器决定。
Token
Token 基本原理
在 AI 中,对于 “我是 Warner Chen”,可能会被拆成:
1 | 我|是|Warner Chen |
也可能会被拆成:
1 | 我|是|Warner|Chen |
模型并不是直接理解完整句子,而是先把文本转换成 Token,再把每个 Token 转换成数字 ID:
1 | "我是 Warner Chen" |
这些数字 ID 会进一步转换成向量,送入模型计算。
Token 在模型生成中的作用
大语言模型每次通常只预测下一个 Token。
例如输入:中国的首都是?
模型可能计算出下一个 Token 的概率:
1 | 北京 92% |
然后根据 Temperature、Top-K、Top-P 等采样参数选择一个 Token。选择 “北京” 后,模型继续预测再下一个 Token,直到生成结束。
过程类似:
1 | 中国的首都是 |
上下文长度
模型支持的上下文窗口通常以 Token 计算,例如:
1 | 32K 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 | A: 0.40,累计 0.40 |
因此保留 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 | A:接近 100% |
模型几乎总是选择概率最高的 Token,因此输出通常更加稳定,适合代码生成、事实问答、信息提取和格式化输出。
当 temperature=1.5 时,概率分布会变得更加平缓:
1 | 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,也不一定保证所有环境中的输出完全相同,仍可能受到并行计算、浮点精度、模型实现和服务端配置等因素影响。
install_url to use ShareThis. Please set it in _config.yml.