Files
myWiki/concepts/one-pass-fine-tuning.md

52 lines
1.9 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: "One-Pass Fine-Tuning (单遍微调)"
created: 2025-06-02
updated: 2025-06-02
type: concept
tags: [efficient-fine-tuning, multi-turn-reasoning, training-optimization]
sources: ["[[goru-one-pass-to-reason-2025]]"]
---
# One-Pass Fine-Tuning
> 将多轮对话的 N 遍训练压缩为单遍前向传播的训练技术,通过 token 复制和自定义注意力掩码实现。
## 核心思想
传统的多轮推理微调需要每轮一次独立前向传播([[multi-turn-reasoning|N-Pass]]),因为推理 token 在后续轮次中被丢弃。One-Pass Fine-Tuning 通过以下三步实现单遍处理:
1. **[[token-duplication|Token 复制]]**:将每个助手回复复制为 ri_in上下文和 ri_out生成+loss
2. **[[block-sparse-attention|分块稀疏注意力]]**:自定义掩码控制每种 token 类型的可见范围
3. **位置 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|PyTorch FlexAttention]]FlashAttention-2 不支持自定义掩码掩码生成在 GPU 上向量化完成
## K-Pass 变体
[[k-pass-training]]将对话分为 K 每段内用 1-Pass段间顺序处理提供速度内存的连续权衡
## 相关
- [[goru-one-pass-to-reason-2025|One-Pass to Reason 论文]]
- [[multi-turn-reasoning]]
- [[token-duplication]]
- [[block-sparse-attention]]