20260617:目前有914 页
This commit is contained in:
49
concepts/token-duplication.md
Normal file
49
concepts/token-duplication.md
Normal file
@@ -0,0 +1,49 @@
|
||||
---
|
||||
title: "Token Duplication (Token 复制)"
|
||||
created: 2025-06-02
|
||||
updated: 2025-06-02
|
||||
type: concept
|
||||
tags: [training-optimization, attention-mask, multi-turn-reasoning]
|
||||
sources: ["[[goru-one-pass-to-reason-2025]]"]
|
||||
---
|
||||
|
||||
# Token Duplication
|
||||
|
||||
> 在多轮推理训练的 [[one-pass-fine-tuning|单遍微调]] 中,将每个助手回复的 response token 复制为两份以解决可见性冲突的技术。
|
||||
|
||||
## 为什么需要复制
|
||||
|
||||
推理模型的多轮对话中存在一个根本矛盾:
|
||||
|
||||
- **生成时**:ri 必须能关注 ti(推理 token)来产生正确回复
|
||||
- **作为上下文时**:ri 不应关注 ti(推理 token 已被丢弃)
|
||||
|
||||
单一 token 序列无法同时满足这两个条件 → 需要两份副本。
|
||||
|
||||
## 两份副本的角色
|
||||
|
||||
| 副本 | 符号 | 职责 | 注意力范围 | 参与 loss |
|
||||
|------|------|------|-----------|----------|
|
||||
| 上下文副本 | ri_in | 为后续轮次提供历史 | A(H_{<i}, hi) — 不看 ti | ❌ |
|
||||
| 生成副本 | ri_out | 实际生成+L-loss 计算 | A(H_{<i}, hi, ti) — 看 ti | ✅ |
|
||||
|
||||
内容上:ri_in = ri_out = ri(完全相同),差异仅在注意力行为和 loss 参与上。
|
||||
|
||||
## 位置 ID 分配
|
||||
|
||||
```
|
||||
s_ti = s_ri_in = e_hi + 1 # 推理和 ri_in 都从当前人类消息后开始
|
||||
s_ri_out = e_ti + 1 # ri_out 从推理 token 后开始
|
||||
s_h_{i+1} = e_ri_in + 1 # 下一轮从 ri_in 后开始(模拟 N-Pass 的上下文结构)
|
||||
```
|
||||
|
||||
## 内存代价
|
||||
|
||||
复制使输入长度从 (|hi|+|ti|+|ri|) ≈ 3Nℓ 增加到 ≈ 4Nℓ,带来约 33% 的额外 GPU 内存。
|
||||
|
||||
## 相关
|
||||
|
||||
- [[one-pass-fine-tuning]]
|
||||
- [[block-sparse-attention]]
|
||||
- [[visibility-constraint]]
|
||||
- [[goru-one-pass-to-reason-2025|One-Pass to Reason 论文]]
|
||||
Reference in New Issue
Block a user