这个目录只针对当前最新结构,不兼容旧的 144-channel image-raymap 结构:
13 帧 RGB action map
-> Wan VAE
-> action_latent [B, 48, 4, 96, 40]
每个相机的外参/内参
-> 直接在 H/8 x W/8 网格构造 ray
-> 每 4 个视频帧沿通道拼接
-> ray_o [B, 12, 4, 96, 40]
-> ray_d [B, 12, 4, 96, 40]
cat(action_latent, ray_o, ray_d)
-> vace_context [B, 72, 4, 96, 40]
-> Conv3d(kernel=stride=(1,2,2))
-> [B, 3072, 4, 48, 20]
-> 按高度的三段加入 view_emb[0/1/2]
-> flatten 为 3840 个 token
-> 15 个 VACE block 生成 hint
-> 注入 DiT 的第 0,2,...,28 层
model.py:全部神经网络结构和完整 DiT+VACE 前向。data.py:raymap 数学、4 帧堆叠、view 拼接及 RoboTwin 数据桥。runtime.py:仅负责连接现有 T5、VAE、scheduler 和 checkpoint loader。inference.py:单条 13 帧轨迹块推理。train.py:训练入口;数据和模型定义不再混在训练脚本里。compare_parity.py:原重代码与教学版逐帧一致性验证。config.py:模型和样本尺寸常量。compat.py:只绕过当前服务器 Transformers/hub 的元数据版本冲突,不改全局包。
模型参数不会复制两份。runtime.py 先让 DiffSynth 读取官方分片,然后把已经加载的
module 绑定到 model.py 的类,后续数学前向完全走教学实现。
model.py 固定为当前 checkpoint 真正使用的结构:逐 token timestep、前两个 clean
latent slot、72-channel VACE、三视角 view embedding,并且 VACE 必定参与前向。为突出
主数据流,模型内部不保留 gradient checkpointing/offload、CLIP image token、camera
adapter 和 VACE global-context 等未使用分支;FlashAttention 3/2、SageAttention 与
PyTorch SDPA 的注意力后端选择仍然保留。
先在当前 shell 加载 PPU runtime(不会修改系统配置):
source /usr/local/PPU_SDK/envsetup.sh
export LD_LIBRARY_PATH=/usr/local/PPU_SDK/targets/x86_64-linux/lib:${LD_LIBRARY_PATH:-}
cd /mnt/workspace/zsq/DiffSynth-Studio
CUDA_VISIBLE_DEVICES=0 python \
examples/wanvideo/latent_ray_viewemb_teaching/compare_parity.py \
--device cuda:0默认只生成一个 13 帧条件块、一个去噪步。脚本先运行仓库原始 inference 文件,再运行 教学版,最后写入:
outputs/latent_ray_viewemb_teaching_parity/parity_report.json
bitwise_equal=true 表示两边解码后的所有 PNG 像素完全一致。
本目录在 2026-10-27 已用默认 checkpoint、episode49、seed=42、1 个去噪步完成验证:
loaded DiT: 825 keys, missing=0, unexpected=0
loaded VACE: 440 keys, missing=0, unexpected=0
frames compared: 9(1 个 anchor + 8 个 horizon)
max_abs_uint8: 0
mean_abs_uint8: 0.0
bitwise_equal: true
CUDA_VISIBLE_DEVICES=0 python \
examples/wanvideo/latent_ray_viewemb_teaching/inference.py \
--output_root outputs/latent_ray_viewemb_teaching_one_chunk \
--num_inference_steps 1 \
--max_chunks 1 \
--overwrite训练仍使用已经验证过的 Accelerate/保存逻辑,但模型前向来自 model.py。启动参数与
原训练入口相同;把原 shell 中的 Python 文件替换成此目录的 train.py 即可。固定要求:
--extra_inputs vace_video,ray_map_o,ray_map_d
--wan22_vace_in_dim 72
--wan22_vace_view_embedding_num_views 3
--dataset_output_raymap
--dataset_raymap_mode latent