File size: 21,590 Bytes
d1d122e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
# Self-Forcing DMD / FRRF / Predictor v4 实验记录

## 结果总览

### 数据划分与统一设置

- 训练集:从 `vidprom_filtered_extended.txt` 以随机种子 0 采样的
  1000 条提示词。
- 本文只展示验证集结果:`MovieGenVideoBench_extended.txt` 第 101–200
  条非空提示词,即 Python 切片
  `[100:200]`;保存在
  `prompts/MovieGenVideoBench_extended_101_200.txt`- 训练集与该验证集的精确字符串重合数为 0。
- 评测使用随机种子 0、每条提示词生成 1 个 81 帧、832 × 480
  视频,并在 VBench `custom_input` 模式下计算相同六个维度。
- 六维均值是六项等权算术平均,仅用于本实验横向比较,不是 VBench
  官方加权总分。

预测器与速度场复用调度的首个分块均为 FFFF,FPPF/FPPP/FRRF/FRRR
描述其后续分块;FFFF 则在所有分块都使用完整生成器。`F` 表示完整
生成器,`P` 表示预测器,`R` 表示复用同一分块第一步的速度场。

### 验证集(第 101–200 条)VBench

| 训练方案 | 推理方式 | 主体一致性 | 背景一致性 | 运动平滑度 | 动态程度 | 美学质量 | 成像质量 | 六维均值 | 相对 FFFF |
| --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| DMD 基线 | FFFF | 0.9317 | 0.9443 | 0.9762 | 0.7000 | 0.6204 | 0.7004 | **0.8122** | 0.0000 |
| 无需训练(速度场复用) | FRRF | 0.9079 | 0.9334 | 0.9729 | 0.7100 | 0.6167 | 0.6865 | 0.8046 | -0.0076 |
| 阶段 1 | FPPF | 0.9186 | 0.9409 | 0.9803 | 0.7100 | 0.6132 | 0.6908 | **0.8089** | -0.0032 |
| 阶段 2-A 在线策略 | FPPF | 0.9161 | 0.9400 | 0.9820 | 0.7000 | 0.6120 | 0.6873 | 0.8062 | -0.0060 |
| 阶段 2-B 离线 FFFF | FPPF | 0.8959 | 0.9319 | 0.9825 | 0.6900 | 0.6086 | 0.6741 | 0.7972 | -0.0150 |
|  |  |  |  |  |  |  |  |  |  |
| 无需训练(速度场复用) | FRRR | 0.5739 | 0.7704 | 0.9179 | 1.0000 | 0.4117 | 0.4464 | 0.6867 | -0.1255 |
| 阶段 1 | FPPP | 0.8239 | 0.8979 | 0.9744 | 0.5100 | 0.5619 | 0.6636 | 0.7386 | -0.0736 |
| 阶段 2-A 在线策略 | FPPP | 0.8420 | 0.9074 | 0.9815 | 0.4400 | 0.5516 | 0.6238 | 0.7244 | -0.0878 |
| 阶段 2-B 离线 FFFF | FPPP | 0.7767 | 0.8816 | 0.9820 | 0.2900 | 0.4873 | 0.5085 | 0.6544 | -0.1578 |

在验证集上,阶段 1 FPPF 的运动平滑度比 FFFF 高 0.0041,动态程度高
0.01;其均值损失主要来自主体一致性、美学质量和成像质量。阶段 2-A
FPPF 的动态程度与 FFFF 相同,但其余质量项略低。

### 与 FFFF 的逐帧相似度

每个方案均按同名视频和帧位置与验证集 FFFF 配对,统计
100 个视频、8,100 对原始分辨率 RGB 帧。PSNR/SSIM 越高、LPIPS 越低
表示越接近 FFFF,但这些指标不代表对真实视频的保真度。

| 训练方案 | 推理方式 | VBench 六维均值 | PSNR | SSIM | LPIPS |
| --- | --- | ---: | ---: | ---: | ---: |
| 无需训练(速度场复用) | FRRF | 0.8046 | 18.2527 | 0.5706 | 0.2828 |
| 阶段 1 | FPPF | 0.8089 | 18.8213 | 0.6032 | 0.2497 |
| 阶段 2-A 在线策略 | FPPF | 0.8062 | 18.9809 | **0.6105** | **0.2497** |
| 阶段 2-B 离线 FFFF | FPPF | 0.7972 | **19.1423** | 0.6066 | 0.2721 |
|  |  |  |  |  |  |
| 无需训练(速度场复用) | FRRR | 0.6867 | 14.6036 | 0.2631 | 0.6725 |
| 阶段 1 | FPPP | 0.7386 | 18.3280 | 0.5483 | 0.3371 |
| 阶段 2-A 在线策略 | FPPP | 0.7244 | 18.7079 | 0.5867 | 0.3362 |
| 阶段 2-B 离线 FFFF | FPPP | 0.6544 | 18.7494 | 0.5700 | 0.4340 |

### 结论

1. **质量上限仍是 FFFF。** 它在验证集上的六维均值为 0.8122。
2. **当前推荐部署阶段 1 FPPF。** 它是验证集上最接近 FFFF 的
   方案,均值为 0.8089,比 FFFF 低 0.0032。
3. **FRRF 是当前最好的无预测器复用方案。** 它的均值为 0.8046,
   比 FFFF 低 0.0076,比阶段 1 FPPF 低 0.0044;其动态程度为
   0.7100,但主体一致性、背景一致性、运动平滑度和成像质量仍低于 FFFF。
4. **FRRR 不适合当前部署。** 虽然其动态程度达到 1.0000,但六维均值
   只有 0.6867;相对 FFFF 的 PSNR/SSIM/LPIPS 也恶化到
   14.6036/0.2631/0.6725,说明连续三步复用导致明显漂移。
5. **阶段 2 展开训练仍未超过阶段 1。** 阶段 2-A 在线策略 FPPF
   比阶段 1 FPPF 低 0.0027;阶段 2-B 低 0.0118。
6. **阶段 2 内部仍是在线策略优于固定的离线 FFFF 标签。**
   验证集中,FPPF 高 0.0090,FPPP 高 0.0700。
7. **P3 暂时不能替代最终的完整模型步骤。** 同一检查点从 FPPF
   改为 FPPP 后,验证集均值在阶段 1、阶段 2-A、阶段 2-B 分别
   下降 0.0703、0.0818、0.1428。
8. 当前结论来自 100 条独立验证提示词、单一随机种子、每条单样本;
   正式报告统计显著性时仍建议补充多随机种子实验或置信区间。

### 训练完成状态

| 模型 | 训练标签 | 步数 | 最终损失 | 推荐推理方式 | 状态 |
| --- | --- | ---: | ---: | --- | --- |
| 阶段 1 | 离线 FFFF 相邻步骤 | 2000 | 0.0635 | FPPF(当前最佳) | 已完成并同步 |
| 阶段 2-A | 在线策略完整教师模型 | 2000 | 0.0787 | FPPF(次选) | 已完成并同步 |
| 阶段 2-B | 固定离线 FFFF | 2000 | 0.3685 | 不推荐 | 已完成并同步 |

这些损失来自不同监督目标,不能把其绝对值直接当作模型质量差异;部署
选择以上述统一 VBench 评测为准。

### 结果入口

- 完整实验记录和配置:本文后续“详细实验记录”
- 验证集(第 101–200 条)机器可读汇总:
  `evaluation_results/moviegen_101_200/summary.json`
- 验证集完整流水线日志:
  `evaluation_results/moviegen_101_200/evaluation_suite.log``evaluation_results/moviegen_101_200/reuse_schedules_evaluation.log`
- 验证集提示词清单与清单文件:
  `prompts/MovieGenVideoBench_extended_101_200.txt``prompts/MovieGenVideoBench_extended_101_200.json`
- 验证集九组视频:
  `videos/moviegenvideobench_extended_101_200_dmd_*_seed0`

## 已完成事项(原待办)

### 首个分块全为完整模型步骤的 FRRF / FRRR

状态:已完成。评测于 `2026-07-29T04:12:19Z` 开始,于
`2026-07-29T04:37:17Z` 完成。

所需调度:

```text
FRRF:分块 0 为 F-F-F-F;分块 1–6 为 F-R-R-F
FRRR:分块 0 为 F-F-F-F;分块 1–6 为 F-R-R-R
```

其中,`R` 表示复用同一分块第 0 步预测的速度场。两种调度的最终干净上下文
更新仍使用完整生成器。

- [x] 增加明确的 `frrf` / `frrr` 速度场复用调度。
- [x] 强制两种调度的首个分块均使用 FFFF。
- [x] 增加调度测试和随机种子 0 的空跑测试。
- [x] 增加可恢复的九方案评测与汇总支持。
- [x] 使用八张 GPU,在验证集第 101–200 条提示词上生成 FRRF 和
  FRRR 视频。
- [x] 验证每个样本(包括 FFFF 和两种复用调度)都在生成初始噪声前,
  将所有随机数生成器重置为随机种子 0。
- [x] 验证每种调度均有 100 个视频,每个视频为 81 帧、832 × 480。
- [x] 运行 VBench 的六个维度。
- [x] 以已有的随机种子 0 验证集 FFFF 为参照,计算
  PSNR/SSIM/LPIPS;每种调度统计 100 个视频和 8,100 对配对帧。
- [x] 更新 `evaluation_results/moviegen_101_200/summary.json`- [x] 替换“结果总览”中的 FRRF 行,增加 FRRR,并更新结论。

“结果总览”已替换为新协议结果。旧 FRRF 调度的产物仍保留,但不再纳入
九方案汇总。

输出目录:

```text
videos/moviegenvideobench_extended_101_200_dmd_frrf_chunk0_ffff_seed0
videos/moviegenvideobench_extended_101_200_dmd_frrr_chunk0_ffff_seed0
```

配对结果文件:

```text
evaluation_results/moviegen_101_200/ffff_vs_frrf_chunk0_ffff_psnr_ssim_lpips.json
evaluation_results/moviegen_101_200/ffff_vs_frrr_chunk0_ffff_psnr_ssim_lpips.json
```

运行入口:

- `scripts/run_moviegen_first100_dmd_frrf.sh`
- `scripts/run_moviegen_first100_dmd_frrr.sh`
- `scripts/run_moviegen_101_200_evaluation.sh`
- `scripts/wait_and_run_moviegen_101_200_reuse_schedules.sh`

## 详细实验记录

### Predictor v4:1000 条提示词的离线训练

- 提示词来源:`prompts/vidprom_filtered_extended.txt`
- 选取方式:使用 `random.Random(0).sample` 选取 1000 条非空记录
- 留出集排除规则:排除与
  `prompts/MovieGenVideoBench_extended.txt` 前 100 条非空提示词完全
  相同的记录
- 构建后重合检查:训练提示词与基准集第 1–100 条、第 101–200 条的精确
  重合数均为 0/100;与整个 1003 条提示词基准文件的精确重合数也为 0
- 生成随机种子:每个样本均重置为 0
- 选中提示词数 / 唯一提示词数:1000 / 1000
- `cases.jsonl` SHA-256:
  `e1d9cd6b5261b513f8d2983dde2fbc7e05e19e3c966ad041f9cd8040d2a01cbe`
- 数据集根目录:
  `/mnt/local_nvme/zoubin/cz/self_forcing_predictor_v4_1000_seed0`
- 预测器源模块:`[1, 28]`
- 捕获干净预特征的候选模块:`[0, 1, 28, 29]`
- 教师轨迹:7 个各含 3 个潜空间帧的分块,每个分块执行 4 个完整模型步骤
- 训练清单:使用分块 1–6,每个分块包含 3 个相邻状态转换;预计得到
  6000 条分块记录 / 18000 对训练数据
- NVMe 训练输出:
  `/mnt/local_nvme/zoubin/cz/self_forcing_predictor_v4_training_1000_seed0`
- 最终同步的数据集:
  `data/self_forcing_predictor_v4_1000_seed0`
- 最终同步的训练输出:
  `checkpoints/predictor_v4_1000_seed0`
- 端到端监督进程 PID:`1251561`
- 监督进程日志:
  `checkpoints/predictor_v4_1000_seed0/end_to_end.log`
- 启动时间:`2026-07-24T10:19:58Z`
- 初始状态:由于 8 张 H100 GPU 均被已有的 HY-WorldPlay 预测器训练
  任务占用,因此进入排队状态。监督进程在等待期间不占用 GPU 显存。
- GPU 冒烟测试和 1000 个样本的八卡离线构建均已成功完成。验证后的数据集
  包含 7000 条分块记录,以及 6000 个训练分块 / 18000 对相邻步骤数据。
- 历史状态:数据集构建完成后按要求暂停训练;后续正式训练取代了这一暂停
  状态。
- 暂停前的一次短训练运行到第 90 步,尚未到达第 100 步的首个检查点。
  其日志保存在
  `/mnt/local_nvme/zoubin/cz/self_forcing_predictor_v4_training_1000_seed0/aborted_step90_20260724T142101Z`;
  后续从头训练不会恢复该运行的任何权重。

#### 正式八卡训练

- 启动时间:`2026-07-25T13:16:41Z`
- GPU:8 × NVIDIA H100 80GB
- 单卡批大小:16
- 全局批大小:128
- 梯度累积步数:1
- 最大训练步数:2000
- 训练从全新初始化开始,不恢复已归档的第 90 步运行。
- 批大小验证:单卡运行 36 步,覆盖全部 6 个上下文长度桶,并且没有发生
  显存不足。PyTorch 峰值显存约为 35.18 GiB。
- 正式运行第 10 步状态:损失 1.7726008478、流匹配均方误差
  1.7364688764、隐藏状态均方误差 0.3613196773、平均微步耗时
  0.9235374251 秒、PyTorch 峰值显存 35.18 GiB。采样检查时 8 张 GPU
  的利用率均为 100%。
- SwanLab 项目:
  `https://swanlab.cn/@ZhuoChen/Self-Forcing-Predictor-v4`
- SwanLab 运行记录:
  `https://swanlab.cn/@ZhuoChen/Self-Forcing-Predictor-v4/runs/4h9zkrjp`
- 监督进程 PID:`3351068`
- 监督进程日志:
  `checkpoints/predictor_v4_1000_seed0/training_and_sync.log`
- 训练日志:
  `/mnt/local_nvme/zoubin/cz/self_forcing_predictor_v4_training_1000_seed0/train_log.jsonl`
- 每 100 步将检查点写入 NVMe。第 2000 步完成后,监督进程会自动将数据集
  和训练产物同步到上文列出的项目路径。

#### 批大小 32 续训

- 批大小为 16 的运行在记录第 320 步后被主动停止。最近的完整检查点为
  第 300 步,因此从第 300 步的完整状态继续训练,包括模型、优化器、
  学习率调度器、训练轮次位置和各进程随机数生成器状态。
- 恢复时间:`2026-07-25T13:35:17Z`
- 单卡批大小:32
- 全局批大小:256
- 梯度累积步数:1
- 第 330 步验证:损失 0.1543566273、平均微步耗时 1.9139812439 秒、
  PyTorch 峰值显存 68.46 GiB。
- 驱动报告的显存稳定在每张 GPU 约 76.5 GiB。训练跨越多个上下文长度桶
  时没有发生显存不足,8 个工作进程均保持活跃。
- SwanLab 运行记录:
  `https://swanlab.cn/@ZhuoChen/Self-Forcing-Predictor-v4/runs/zd7a5ge6`
- 监督进程 PID:`3358910`

#### 批大小 32 从头重训

- 上述续训在记录第 870 步后按要求停止,其完整文件和检查点保存在:
  `/mnt/local_nvme/zoubin/cz/self_forcing_predictor_v4_training_archives/bs16_then_bs32_resume_stopped_step870_20260725`
- 重新启动时间:`2026-07-25T14:41:01Z`
- 恢复设置:`null`
- 启动前输出目录为空,新日志从全局第 1 步开始。
- 单卡批大小:32
- 全局批大小:256
- 第 10 步状态:损失 1.7685708122、流匹配均方误差 1.7325291700、
  隐藏状态均方误差 0.3604163701、平均微步耗时 1.8527149781 秒、
  PyTorch 峰值显存 68.46 GiB。
- SwanLab 运行记录:
  `https://swanlab.cn/@ZhuoChen/Self-Forcing-Predictor-v4/runs/4kxa9v7b`
- 监督进程 PID:`3380489`
- 最终状态:从头训练至第 2000 步,并于
  `2026-07-25T19:52:55Z` 完成同步。
- 最终损失:`0.0635068361`- 最终检查点:
  `checkpoints/predictor_v4_1000_seed0/predictor_step_02000.safetensors`

### Predictor v4 阶段 2:分离梯度的 FPPP 展开训练

- 实现日期:`2026-07-25`
- 阶段 2 的两个训练版本分别从阶段 1 第 2000 步的 FP32 模型状态独立
  初始化,均不继承阶段 1 的优化器、学习率调度器、训练轮次或全局步数。
- 训练展开调度固定为:
  - 分块 0:`F-F-F-F`
  - 分块 1–6:`F-P-P-P`
- P1、P2 和 P3 均接受隐藏状态与流匹配监督。
- 在每个时间步和分块边界,预测器隐藏状态、预测的干净潜变量和上一分块的
  隐藏状态都会分离梯度。
- 每条轨迹包含 18 个受监督状态:
  `6 个训练分块 × 3 个预测器时间步`- 持久历史只包含以下 K/V:将最终干净分块潜变量在上下文时间步 0 输入冻结
  的完整生成器后写入的 K/V。中间时间步的 K/V 只存在于临时工作区。
- 在线时间步使用以下精确 FP32 值:
  `[1000.0, 937.5, 833.3333129882812, 625.0]`- 每条提示词的初始噪声和转换噪声都精确复现推理时随机种子 0 的随机数序列。

两个相互独立的八卡训练版本均已成功完成:

| 版本 | 训练展开调度 | 监督方式 | 最终步数 | 最终损失 |
| --- | --- | --- | ---: | ---: |
| 阶段 2-A | FPPP | 在当前学生状态上查询完整教师模型 | 2000 | 0.0786837618 |
| 阶段 2-B | FPPP | 使用已保存的离线 FFFF 轨迹中的固定隐藏状态与流匹配目标 | 2000 | 0.3684817659 |

通用训练配置:

```text
8 张 GPU
每张 GPU 1 条轨迹
每个全局优化步骤 8 条轨迹
2000 个优化步骤
融合模块学习率 5e-5
预测器模块学习率 5e-6
100 步线性预热 + 余弦衰减
BF16 激活值
FP32 可训练参数和 AdamW 状态
随机种子 0
每 100 步保存一次
```

阶段 2 输出根目录:

```text
/mnt/local_nvme/zoubin/cz/self_forcing_predictor_v4_stage2_onpolicy_fppp_1000_seed0
/mnt/local_nvme/zoubin/cz/self_forcing_predictor_v4_stage2_offline_ffff_fppp_1000_seed0
checkpoints/predictor_v4_stage2_onpolicy_fppp_1000_seed0
checkpoints/predictor_v4_stage2_offline_ffff_fppp_1000_seed0
```

分离梯度训练监督进程在占用 8 张 GPU 前会等待以下条件全部满足:

1. NVMe 中阶段 1 的 `training_latest.pt` 明确记录第 2000 步;
2. NVMe 中存在 `predictor_step_02000.safetensors`3. 阶段 1 产物已完成向项目目录的同步;
4. 阶段 1 训练与同步监督进程已经退出;
5. 阶段 2 实现的就绪标记已经存在。

随后,监督进程先为每种监督模式各运行一次完整的八卡轨迹冒烟测试,再依次
训练并同步阶段 2-A 和阶段 2-B。

- 阶段 2 监督进程 PID:`3442042`(已成功退出)
- 监督进程日志:
  `checkpoints/predictor_v4_stage2_suite/wait_and_train.log`
- 等待脚本:
  `scripts/wait_stage1_then_run_stage2.sh`
- 套件脚本:
  `scripts/run_predictor_v4_stage2_suite.sh`
- 就绪标记:
  `checkpoints/predictor_v4_stage2_code.ready`
- 就绪状态:通过 Python 编译、Shell 语法、离线目标形状与数据类型、
  缓存分离梯度以及随机种子 0 精确噪声序列检查后释放。两个强制自动八卡
  轨迹冒烟测试也均已通过。
- 阶段 2-A 于 `2026-07-26T10:02:29Z` 完成同步。
- 阶段 2-B 及完整套件于
  `2026-07-26T11:34:47Z` 完成同步。
- 阶段 2-A SwanLab:
  `https://swanlab.cn/@ZhuoChen/Self-Forcing-Predictor-v4/runs/vx0szxt9`
- 阶段 2-B SwanLab:
  `https://swanlab.cn/@ZhuoChen/Self-Forcing-Predictor-v4/runs/lhs9t5au`
- SwanLab 拒绝了每一步中字符串类型的 `supervision_mode` 指标。这只影响
  日志记录;数值指标、最终检查点、上传、验证和同步均已成功完成。

每个训练完成的检查点都支持以下两种部署调度:

```text
FPPF:F0 -> P1 -> P2 -> F3
FPPP:F0 -> P1 -> P2 -> P3
```

### MovieGen 验证集评测

- 初始评测日期:`2026-07-26`
- 初始评测时间段:`2026-07-26T16:23:11Z``2026-07-26T17:35:53Z`
- FRRF/FRRR 新协议补充评测时间段:`2026-07-29T04:12:19Z``2026-07-29T04:37:17Z`
- 提示词来源:`prompts/MovieGenVideoBench_extended.txt`
- 提示词范围:按从 1 开始计数的第 101–200 条非空记录,共 100 条唯一
  提示词
- 提示词文件:`prompts/MovieGenVideoBench_extended_101_200.txt`
- 提示词 SHA-256:
  `a3fef56aa8c4a33a8245391888f6f998e2a6a1c278e6492988501d7ad0352621`
- 数据划分清单:`prompts/MovieGenVideoBench_extended_101_200.json`
- 与选中的 1000 条预测器训练提示词的精确重合数:0
- 随机种子:每条提示词均为 0
- 推理设置:8 张 GPU,每条提示词生成 1 个样本,启用 EMA
- 已评测版本:FFFF、FRRF、FRRR、阶段 1 FPPF/FPPP、阶段 2-A
  FPPF/FPPP 和阶段 2-B FPPF/FPPP
- NVMe 暂存根目录:
  `/mnt/local_nvme/zoubin/cz/self_forcing_moviegen_101_200_evaluation`
- 项目视频目录:
  `videos/moviegenvideobench_extended_101_200_dmd_*_seed0`
- 完整性验证:9 组结果均包含 100 个视频;全部 900 个视频都能解码为
  81 帧、832 × 480
- VBench 验证:每个版本在六个维度中都恰好包含 100 条逐视频记录
- 配对验证:8 个非基线版本均包含 100 个视频,每个版本都与验证集 FFFF
  输出形成 8,100 对配对帧
- 数据划分准备脚本:
  `scripts/prepare_moviegen_validation_split.py`
- 可恢复的评测启动脚本:
  `scripts/run_moviegen_101_200_evaluation.sh`
- 汇总与完整性检查脚本:
  `scripts/summarize_moviegen_101_200_evaluation.py`
- 机器可读汇总:
  `evaluation_results/moviegen_101_200/summary.json`
- 初始评测日志:
  `evaluation_results/moviegen_101_200/evaluation_suite.log`
- FRRF/FRRR 新协议评测日志:
  `evaluation_results/moviegen_101_200/reuse_schedules_evaluation.log`
- 完成标记:
  `evaluation_results/moviegen_101_200_evaluation.complete`

完整的 VBench 与配对指标数值维护在“结果总览”中;未经四舍五入的精确值和
全部源结果路径记录在机器可读汇总文件中。

## Wan14B DMD 预测器训练

- 启动日期:`2026-07-29`
- 状态:进行中
- 训练顺序:先训练 Predictor-only,再训练 Full + Predictor Joint。
- 两个版本均训练 2000 个 student DMD step。
- 每个 student step 前更新 Fake Score 5 次。
- Predictor-only 随机退出:P1、P2、P3 等概率采样。
- Joint 随机退出:F0、P1、P2、P3 等概率采样;预计约 1500 次
  Predictor optimizer 更新。
- Predictor 融合/残差学习率:`1e-5`- Predictor block 学习率:`1e-6`- Joint Full Generator 学习率:`2e-7`- Fake Score 学习率:`4e-7`- 学生 optimizer:AdamW,`betas=(0.0, 0.999)`,100 步线性预热后
  余弦衰减。
- EMA:第 200 步开始,衰减率 `0.99`- 实模冒烟:Predictor-only 和 Joint 的 DMD 反向均通过;Joint 的
  Full/Predictor 梯度、FSDP 后冻结副本同步、Full/Predictor EMA
  检查点保存和重新读取均通过。
- 训练托管会话:`tmux predictor_v4_dmd_suite`- 总日志:
  `/mnt/local_nvme/zoubin/cz/predictor_v4_dmd_suite.log`- Predictor-only NVMe 输出:
  `/mnt/local_nvme/zoubin/cz/self_forcing_predictor_v4_dmd_predictor_only`- Predictor-only SwanLab:
  `https://swanlab.cn/@ZhuoChen/Self-Forcing-Predictor-v4/runs/yzdlp32v`- Joint NVMe 输出:
  `/mnt/local_nvme/zoubin/cz/self_forcing_predictor_v4_dmd_joint`- Predictor-only 配置:
  `configs/predictor_v4_dmd_predictor_only.yaml`- Joint 配置:`configs/predictor_v4_dmd_joint.yaml`- 串行训练与评测脚本:`scripts/run_predictor_v4_dmd_suite.sh`。

训练完成后自动执行:

1. Predictor-only 在 MovieGen 第 101–200 条验证集上评测 FPPF、FPPP;
2. Joint 在相同验证集上评测新 Full 的 FFFF、FPPF、FPPP;
3. 所有推理 case 使用随机种子 0;
4. 计算 VBench 六指标和相对各自 FFFF 的 PSNR、SSIM、LPIPS;
5. 将 NVMe 训练产物同步到项目 `checkpoints/` 目录。