53 lines
1.7 KiB
Markdown
53 lines
1.7 KiB
Markdown
---
|
||
title: "K-Pass Training (K 遍训练)"
|
||
created: 2025-06-02
|
||
updated: 2025-06-02
|
||
type: concept
|
||
tags: [training-optimization, multi-turn-reasoning, efficiency]
|
||
sources: ["[[goru-one-pass-to-reason-2025]]"]
|
||
---
|
||
|
||
# K-Pass Training
|
||
|
||
> [[goru-one-pass-to-reason-2025|One-Pass to Reason]] 中提出的训练方案连续统,在完全节省内存(N-Pass)和完全节省时间(1-Pass)之间提供灵活的速度–内存权衡。
|
||
|
||
## 动机
|
||
|
||
[[one-pass-fine-tuning|1-Pass]] 和 N-Pass 是两个极端:
|
||
|
||
- N-Pass:每轮一次前向传播,最小内存,最慢速度
|
||
- 1-Pass:整个对话一次前向传播,+33% 内存,最快速度
|
||
|
||
K-Pass 允许用户在这两个极端之间插值,按需选择内存/速度平衡点。
|
||
|
||
## 实现
|
||
|
||
1. **分块**:将 N 轮对话均分为 K 段,每段 ⌈N/K⌉ 轮
|
||
2. **段内 1-Pass**:当前段内应用 token 复制 + 自定义掩码
|
||
3. **段间顺序处理**:前段作为后段的固定上下文(不复制 token)
|
||
4. **Loss 隔离**:只计算当前段内 ti 和 ri_out 的 loss
|
||
|
||
## 速度–内存权衡
|
||
|
||
| K | 语义 | 加速比 (8B) | 额外内存 |
|
||
|---|------|-----------|---------|
|
||
| 1 | 1-Pass(最快) | 1.54× | +34% |
|
||
| 2 | 平衡点 | 1.37× | +21% |
|
||
| 4 | — | 1.09× | +17% |
|
||
| 6 | — | 0.88× | +14% |
|
||
| N | N-Pass(最少内存) | 1.00× | 0% |
|
||
|
||
**关键发现**:K > 4 后收益递减——长序列的 token 复制开销开始超过少量合并带来的节省。
|
||
|
||
## 推荐策略
|
||
|
||
- **内存充裕**:K=1(1-Pass),最大化速度
|
||
- **内存适中**:K=2,用 21% 内存换取 37% 加速
|
||
- **内存紧张**:K=4 或直接用 N-Pass
|
||
|
||
## 相关
|
||
|
||
- [[one-pass-fine-tuning]]
|
||
- [[token-duplication]]
|
||
- [[goru-one-pass-to-reason-2025|One-Pass to Reason 论文]]
|