1.9 KiB
1.9 KiB
title, created, updated, type, tags, sources
| title | created | updated | type | tags | sources | ||||
|---|---|---|---|---|---|---|---|---|---|
| One-Pass Fine-Tuning (单遍微调) | 2025-06-02 | 2025-06-02 | concept |
|
|
One-Pass Fine-Tuning
将多轮对话的 N 遍训练压缩为单遍前向传播的训练技术,通过 token 复制和自定义注意力掩码实现。
核心思想
传统的多轮推理微调需要每轮一次独立前向传播(multi-turn-reasoning),因为推理 token 在后续轮次中被丢弃。One-Pass Fine-Tuning 通过以下三步实现单遍处理:
- token-duplication:将每个助手回复复制为 ri_in(上下文)和 ri_out(生成+loss)
- block-sparse-attention:自定义掩码控制每种 token 类型的可见范围
- 位置 ID 重排:确保相对位置关系与 N-Pass 等价
理论保证
Theorem 2.1(Goru et al., 2025):在仅由注意力模式、位置编码和输入表示决定输出分布的 LM 中,
L_{\text{1-Pass}}(c) = \sum_{i=1}^N L_{\text{N-Pass}}(H_{<i}, h_i, a_i)
即两种方法的 loss 完全等价——只改变计算方式,不改变学习目标。
复杂度
| 方法 | 时间 | 空间 |
|---|---|---|
| N-Pass | O(N³ℓ²d) | O(Nℓ²) |
| 1-Pass | O(N²ℓ²d) | O(Nℓ²) |
额外内存 ~33%(token 复制),但渐进复杂度相同。
实现
基于 flex-attention(FlashAttention-2 不支持自定义掩码),掩码生成在 GPU 上向量化完成。
K-Pass 变体
见 k-pass-training:将对话分为 K 段,每段内用 1-Pass,段间顺序处理,提供速度–内存的连续权衡。