docs: 第三章勘误——off-policy 切片是数据轨迹上的 KL 蒸馏而非混 SFT;补 prompt-only 下静默空转的说明
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -57,7 +57,7 @@ server 路径更粗:teacher 只回传 top-k logprobs 三张表(DT:2676-2679
|
||||
### 2.5 buffer 与 on-policy 生成(DT:846-932, 1071-1263)
|
||||
|
||||
- `_RepeatBatchDataLoader` 把同一 collated batch 重复 `gradient_accumulation_steps` 次(DT:346-371),`_fill_buffer` 按**切片级**伯努利抽签 on/off-policy(`random() <= lmbda`,DT:879,主进程抽签后广播)。
|
||||
- **off-policy 切片用数据集自带 completion**(DT:893-894),不是 teacher 采样——SFT 数据混训,非蒸馏。
|
||||
- **off-policy 切片 = 在数据集自带 completion 的轨迹上做 KL 蒸馏**(DT:893-894 原样保留数据轨迹;损失仍是 KL,不是交叉熵)——GKD 的 λ 插值本义:λ=0 离线蒸馏、λ=1 纯 on-policy。两个易误解处:轨迹不是 teacher 现场采样的;DAPO prompt-only 下这些切片 labels 全 -100,KL 被掩码归零 = **静默空转的算力浪费**(唯一例外:`lmbda=0`+server 触发 teacher 生成,DT:901-906,即层 1 SFT 的数据来源)。
|
||||
- on-policy 切片:vLLM colocate 生成(按 `vllm_sync_frequency` 同步权重,DT:1094-1106)或 `model.generate`(DT:1113-1168);生成结果重建 input_ids/labels 写回 buffer(DT:1170-1263,labels 只在 completion 段有效)。
|
||||
- loss 前向是对已生成序列的 teacher-forcing(DT:2883)——"采样一次、前向算分布",GKD 标准做法。
|
||||
|
||||
@@ -70,7 +70,7 @@ server 路径更粗:teacher 只回传 top-k logprobs 三张表(DT:2676-2679
|
||||
| 坑 | 位置 | 说明 |
|
||||
|----|------|------|
|
||||
| `lmbda=1 + no_teacher` 穿过守卫后在深处崩 | DT:2872 vs DT:2593 | 报错文案宣称合法,实际必崩——守卫条件写错 |
|
||||
| off-policy ≠ teacher 蒸馏 | DT:893-894 | 语义上是"混 SFT",文档易误读 |
|
||||
| off-policy ≠ "teacher 采样的离线数据" | DT:893-894 | 轨迹来自数据集固有 completion(损失仍是 KL);prompt-only 数据下整个切片被掩码归零,静默空转 |
|
||||
| `num_generations>1 且 lmbda<1` 会造重复样本 | CFG:593-596 | 官方注释自己承认 |
|
||||
|
||||
## 3. 与式(2) 的偏差清单(默认配置下)
|
||||
|
||||
Reference in New Issue
Block a user