Files
myWiki/concepts/token-duplication.md

50 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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 论文]]