Diffusers
Safetensors
File size: 7,463 Bytes
ba798d3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# Model

## 1. 共同目标

HY-WorldPlay 使用四步去噪。Predictor 的目标是在运行时替代一个或多个完整 54-layer DiT step:

```text
Full step:       54 个 Teacher blocks + final layer
Predictor step:  2 个 Predictor blocks + frozen Teacher final layer
```

所有版本都使用目标 step 的 65 通道 I2V 输入、timestep/action frame condition、相机参数和 RoPE;
最终均预测 final-layer 前的 hidden,并复用冻结的 Teacher final layer 得到 velocity。residual head
零初始化,使初始状态满足 `pred_hidden = anchor_hidden`,等价于 Direct Reuse。

## 2. 版本总览

| 版本 | image fusion | 文本/Context | previous chunk | Predictor blocks | 参数量 |
| --- | --- | --- | --- | --- | ---: |
| v1 | current + same-chunk anchor | dense current/cached text,双流预测 | 无 | 完整 double-stream | 339,893,248 |
| v2 | current + same-chunk anchor | Text K/V + exact history Vision K/V | 无 | AR vision-only | 176,241,152 |
| v3 | current + anchor + previous chunk | Text K/V + exact history Vision K/V | 有 | AR vision-only | 197,218,816 |
| v4 | current + anchor + previous chunk | Text K/V + BF16 pre-feature 重建 Vision K/V | 有 | AR vision-only | 197,218,816 |
| predictor-disca | current + same-chunk anchor | 仅 Text K/V | 无 | AR vision-only | 176,241,152 |

参数量为可训练参数。v4 另含 16,785,664 个冻结 Context projector 参数。

## 3. Predictor v1

实现:`models/predictor.py`。

- `img_in`、final layer 从 Teacher 加载并冻结;
- current image tokens 与 same-chunk Full-DiT anchor hidden 经过 image fusion;
- current text 与 text-only prefill 后的 cached text 经过独立 text fusion;
- 两个完整 image/text double-stream blocks 默认从 Teacher `[1,52]` 初始化;
- 不读取 Text K/V 或 history Vision K/V;
- 输出 `anchor_hidden + residual_out(predictor_hidden)`。

v1 是早期可行性验证代码路径。旧机器上的实验结果不再纳入当前项目报告;当前可核验的结果统一见
`experiment.md`。

## 4. Predictor v2

实现:`models/predictor_v2.py`。

v2 将 v1 的 dense text double-stream 改成 WorldPlay 原生 AR vision inference:

- current image tokens 与 same-chunk anchor hidden 做双输入 fusion;
- Predictor 内不执行 text stream;
- 每个 Predictor block 读取该 Teacher 层的 Text K/V 和 history Vision K/V;
- Vision K/V 包含 regular RoPE 与 ProPE 两个分支;
- 支持 `[0,53]` 或 `[1,52]` 两种 Teacher 初始化;
- `img_in`、final layer和 block text 参数冻结。

v2 数据直接保存每层 history Vision K/V,I/O 和磁盘开销较大。代码仍保留,但当前后续实验统一使用
v4 pre-feature schema。

## 5. Predictor v3

实现:`models/predictor_v3.py`。

v3 在 v2 上增加 previous-chunk same-timestep hidden:

```text
current image tokens
same-chunk anchor final hidden
previous-chunk target-step final hidden
        -> TripleFeatureFusion -> two AR vision blocks
```

TripleFeatureFusion 分别 LayerNorm 三路输入,拼接后经过 `6144→4096→2048` MLP。因为需要前一
chunk,chunk 0 不进入训练。其 Context 仍是 v2 的 direct Vision K/V。

## 6. Predictor v4

实现:`models/predictor_v4.py`。

v4 保留 v3 的三路 image fusion,但将磁盘中的 direct Vision K/V 替换为 BF16 Context
pre-feature:

```text
img_modulated
  -> frozen Teacher K/V projections + K norm
  -> Teacher-compatible RoPE/ProPE
  -> Context Vision K/V
```

训练时从 pre-feature 在线重建 K/V;推理 pipeline 已经持有精确 Teacher Context K/V,因此直接传入,
不重复运行 projector。动态 Context mask 会同时作用于 regular/ProPE 分支。

v4 的实验性 `predictor_fusion_type` 另支持:

- `concat`:默认且与旧 checkpoint 严格兼容的三路 LN + concat MLP;
- `projection_add`:三路 identity-init 独立投影、无 affine source norm、相加后 FusionNorm;
- `token_gate_prev`:在 `projection_add` 上,用 `current/previous/Teacher time+action condition`
  预测 `[B,N,1]` 的 previous-chunk gate。第一版只支持已验证最好的 `same_step` previous condition,
  不 gate same-chunk anchor。

正式分辨率下三路 fusion tensor 均为 `[B,6240,2048]`,其中 `6240=4×30×52`。

当前已完成两套正式权重:

- blocks `[0,53]`:`checkpoints/predictor_v4_prefeature_blocks0-53_bf16_8gpu_flr1e-4_blr1e-5_schedsteps2000_swarmup100_bwarmup100_swanlab`;
- blocks `[1,52]`:`checkpoints/predictor_v4_prefeature_blocks1-52_bf16_8gpu_flr1e-4_blr1e-5_schedsteps2000_swarmup100_bwarmup100_swanlab`。

v4 能训练所有相邻转换 `0→1`、`1→2`、`2→3`。推理时可任意指定一个或多个替代 step;连续替代
时,前一个 Predictor 输出成为下一个 Predictor 的 same-chunk anchor。

## 7. Predictor-DisCa

实现:`models/predictor_disca.py`。

这是当前项目中与 v1、v4 并列的 `predictor-disca` 版本,不是新 HY-WorldPlay 主模型:

- current image tokens 与 same-chunk anchor hidden 做双输入 fusion;
- 不注入 previous-chunk hidden;
- 不注入 Context Vision K/V;
- 不加载或运行 frozen Context projector;
- 保留静态 Text K/V,因为 WorldPlay AR vision block 仍需要文本条件;
- 使用两个 Teacher-initialized AR vision blocks;
- 输出仍为 `anchor_hidden + zero-init residual`。

当前正式权重为 blocks `[0,53]`:

```text
checkpoints/predictor_disca_blocks0-53_bf16_8gpu_flr1e-4_blr1e-5_schedsteps2000_swarmup100_bwarmup100_swanlab
```

它复现了 DisCa 的“两块轻量 Predictor 替代 Full DiT”思想,但没有复现原始 DisCa 的 dense text
cache/fusion、固定 full-step cache 语义或对抗训练。因此准确定位是 DisCa-inspired WorldPlay ablation,
不是严格的 WorldPlay DisCa 复现。

## 8. 当前推荐对比

当前主要实验比较:

```text
Full-DiT:          F-F-F-F
Direct Reuse:      F-R-R-F       # Full steps 0、3;steps 1、2 reuse
Predictor v4:      F-P-P-F
Predictor-DisCa:   F-P-P-F
```

v4 与 predictor-disca 使用相同 Teacher、数据、监督 pair、训练步数和评测集。两者的核心差异只在
previous-chunk hidden 与 Context Vision K/V,可用于分析 WorldPlay AR Context 的贡献。

## ATC Transport 对齐 Causal-Forcing(2026-09-06)

`models/predictor_atc.py` 的 State Transport 现在默认使用与 Causal-Forcing-a `predictor_training/atc_fusion.py`
相同的实现(`GlobalStateTransport`):当前 chunk 的 token 对上一 chunk 做**全局** cross-attention,
query/key 分别套用 Teacher 的 3-D RoPE(当前 chunk 帧位置 / 上一 chunk 帧位置),无可学习偏置,
残差加在上一 chunk 特征上;`atc_previous_scope=last_frame` 时 key 只取上一 chunk 最后一帧。
Transport 头数默认等于 Teacher 的 `heads_num`(head_dim 128 = `sum(rope_dim_list)`),其余维度
(hidden 2048、MLP 4096、gate 512)不变;`anchor_only / raw_prev / no_gate / no_distance` 消融开关保留。
原 3×3 局部窗口实现保留为 `--atc_transport_mode local`,2026-09-06 之前训练的 ATC checkpoint 都属于
该模式,续训或评估时需显式指定。诊断量新增 `transport_attention_entropy_normalized` 与
`transport_argmax_displacement`。实测 B=2、6240 token:global/chunk 25 ms、global/last_frame 15 ms、
local 40 ms(fwd+bwd,SDPA 后端,本环境无 flash_attn)。