20260514:增加新内容
This commit is contained in:
54
concepts/sink-token.md
Normal file
54
concepts/sink-token.md
Normal file
@@ -0,0 +1,54 @@
|
||||
---
|
||||
title: "汇 Token (Sink Token)"
|
||||
created: 2026-05-14
|
||||
updated: 2026-05-14
|
||||
type: concept
|
||||
tags: [llm, pre-training, attention, streaming]
|
||||
sources: ["https://arxiv.org/abs/2309.17453"]
|
||||
---
|
||||
|
||||
# 汇 Token (Sink Token)
|
||||
|
||||
## 定义
|
||||
|
||||
汇 Token(Sink Token)是 Xiao et al. (2024) 在 [[streaming-llm|StreamingLLM]] 论文中提出的预训练改进:**在所有训练样本开头添加一个可学习的专用 Token,使其成为唯一的注意力汇。**
|
||||
|
||||
## 动机
|
||||
|
||||
Vanilla LLM(如 Llama-2)在预训练时没有统一的起始 Token(`<s>` 位置因文本分块而随机),因此模型被迫使用**多个**初始 Token 作为 [[attention-sinks|注意力汇]]。StreamingLLM 推理时需要保留 4 个初始 Token 的 KV 才能恢复性能。
|
||||
|
||||
→ 如果有一个专用 Token 从一开始就被训练为"注意力垃圾桶",推理时只需保留这一个 Token。
|
||||
|
||||
## 预训练实验
|
||||
|
||||
Xiao et al. 从头预训练了三个 1.6 亿参数模型,使用相同设置对比:
|
||||
|
||||
| 模型 | 方法 | 仅 Sink Token 时 PPL | 结论 |
|
||||
|------|------|---------------------|------|
|
||||
| Vanilla | 标准 SoftMax | 27.87 | 需多个初始 Token |
|
||||
| Zero Sink | SoftMax₁ (off-by-one) | 29,214 | 部分改善,仍需其他 Token |
|
||||
| **Learnable Sink** | 前置可学习 Token | **18.01** | 仅需 1 个 Sink Token |
|
||||
|
||||
- Zero Sink = SoftMax₁(x)_i = e^{x_i} / (1 + Σ_j e^{x_j}),等价于前置一个全零 Key/Value 的虚拟 Token
|
||||
- Learnable Sink Token 在所有训练样本前添加,成为稳定且唯一的注意力汇
|
||||
|
||||
### 效果
|
||||
|
||||
- 推理时仅需 **Sink Token + 最近 Token** 即可稳定
|
||||
- 性能甚至**略优于** Vanilla 模型配合 4 个初始 Token
|
||||
- 注意力可视化显示,预训练后的 Sink Token 模型不再依赖初始 Token
|
||||
|
||||
## 实践建议
|
||||
|
||||
论文建议未来的 LLM 预训练应统一在所有训练样本前添加一个可学习的 Sink Token,以优化流式部署。
|
||||
|
||||
## 与 SoftMax-off-by-One 的关系
|
||||
|
||||
[[softmax-off-by-one|SoftMax-off-by-One]] 是另一种消除注意力汇依赖的方案——修改 SoftMax 函数使其不强制求和为 1。但实验表明它不够充分,Learnable Sink Token 更有效。
|
||||
|
||||
## 相关概念
|
||||
|
||||
- [[attention-sinks|注意力汇]] — Sink Token 替代的对象
|
||||
- [[streaming-llm|StreamingLLM]] — 应用场景
|
||||
- [[softmax-off-by-one|SoftMax-off-by-One]] — 替代方案
|
||||
- [[rolling-kv-cache|滚动 KV 缓存]] — 推理时的配合机制
|
||||
Reference in New Issue
Block a user