Skip to content
youmo445Public

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Wan2.2 5B latent-ray + view-embedding 教学版

这个目录只针对当前最新结构,不兼容旧的 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

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages