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/` 目录。
|