PhysAlign I2V · 项目日志

用冻结 V-JEPA2 特征对齐做物理一致性 I2V 后训练:5B(run-1 负结果→run-2 +0.85) → 换论文同款 A14B + PhyCo 重训。从目标、实现、失败、修复到 A14B 与论文一致性审计的全程记录。

1 · 项目目标(用户最初要求)

在合成物理视频上复现并改造 PhysAlign,提升 image-to-video (I2V) diffusion 模型的内在物理一致性生成能力,最终得到一个更 efficient、plug-and-play 的 adapter/LoRA 方法:训练时借助冻结的物理 teacher latent 注入运动/物理知识,推理时只加载 base model + 小 adapter,不再依赖 V-JEPA2、深度网络或 simulator。

2 · 方法

损失函数(无 3D 版):

L = L_FM  +  λ_gram · L_VJEPA_Gram  +  λ_token · L_VJEPA_Token  +  λ_temporal · L_Temporal

这套"对齐外部冻结 teacher"的设计天然支撑 plug-and-play(target 与 base 无关,换 base 只需 resize projector)。详见 proposal §13 方法论与 next plan。

2b · fm 和 physalign 各自怎么训的(精确)

共同部分(fm 和 physalign 完全一样):

fm(消融基线)physalign(方法)
损失L_FML_FM + 1.0·gram + 0.15·token + 0.2·temporal
V-JEPA2 teacher不用冻结 V-JEPA2-ViT-L
对齐怎么做hook DiT block-16 的 hidden → 小 projector → 和 teacher 对同一视频的特征比:gram(token 关系矩阵 margin-L1, margin0.05) + token cosine + temporal delta
projectorbottleneck 弱 projector(防它吸收对齐梯度,逼对齐去推 LoRA)
推理时base + LoRAbase + LoRA(teacher 和 projector 全丢弃)
作用隔离"数据/微调效应"在 fm 之上多注入 V-JEPA2 物理表征

唯一区别:physalign 比 fm 多了 V-JEPA2 对齐损失(+一个推理时丢弃的 projector)。数据、base、LoRA、lr、步数全相同——�以 physalign 减 fm = 纯粹的"对齐效应"。run-1 这个差是 0(对齐没用),run-2 是 +0.26(对齐首次有效)。

命令RUN_NAME=r2run_fm CONFIG=corrected.yaml sbatch train_physalign.sbatch(physalign 再加 OVERRIDES="--set loss.lambda_gram=1.0 ... --set model.projector_kind=bottleneck")。

3 · 工程实现

从 mock 骨架做到真实可跑的全栈:

环节实现
训练数据PhyCo 是 gated HF 数据集,最初未登录 → 先用开放的 Physion(256² TDW 物理) + PISA-Kubric(256² 落体) 兜底训练。已拿到 token,正切换到 PhyCo(768×432 原生、专门渲染、最对路)。
测试数据(各 benchmark 的 held-out 集,与训练分开)Physics-IQ = 198 个真实拍摄物理场景;Physion-cont = 64 个 held-out Physion;PisaBench = 60 个 Kubric 落体;Quality = 复用已生成视频。gallery 里 base/fm/physalign 就是在这些 held-out 集上、用其首帧条件生成的对比。
缓存离线缓存 Wan VAE latent + UMT5 prompt embedding + V-JEPA2 token 网格(fp16),训练进程只载 5B transformer。
训练栈musubi/diffusion-pipe 都不支持 5B i2v → 自研 diffusers 训练循环(wan_backend.py),hook block-16,peft LoRA,accelerate 多卡 DDP。
评测4 个 benchmark:Physics-IQ(官方)、PisaBench-sim(官方 metric+SAM2)、Physion-continuation(自建,复刻官方运动 mask)、Quality(DINOv2+光流+锐度)。
前端静态对比 gallery(GT/base/trained 同排)+ 本项目日志页。

评测合规性已严格核查:Physics-IQ 用官方脚本;PisaBench metric 与官方 utils/metrics.py 数值零误差(20 组随机 mask 验证);自建项明确标注。

3b · 训练数据集详情

数据集简介 / 规格在本项目的角色
PhyCo
CMU, CVPR'26
arXiv 2604.28169
专门为"可控物理运动生成"渲染的 Kubric 数据集:~90–100k 视频、768×432 原生 @24fps、~4s/98 帧。每样本含 RGB+depth+segmentation+metadata+轨迹。物理属性可控:摩擦 µ(0–1)、恢复系数 e(0–1)、形变(Neo-Hookean FEM)、外力(大小+方向)。场景:ball_drop、ball_wall_collision、friction_slide(±force)、jenga_force、pool_table_force、soft-body 形变等。HF nnsriram97/phyco_kubric(gated, CC-BY-ND-4.0)。 最对路、最终主力。原生高分辨率(无上采样模糊)、运动强、物理标注全。最初被 gate 阻塞,现已拿到 token,正下载 4 个动态场景重训
Physion
NeurIPS'21, MIT
TDW 渲染物理理解数据:~16k 训练视频、256×256 @30fps、~5s。8 场景:Drop/Collide/Roll/Dominoes/Support/Contain/Link/Drape。运动偏弱(很多是堆叠/支撑/容纳,物体落下后静止)。0.8GB。 run-1/run-2 兜底主力。开放免登录。run-2 只取 5 个高运动场景(Drop/Collide/Drape/Link/Roll)+按帧差过滤。低分辨率需上采到 512(致模糊)是其短板。
PISA-Kubric
NYU, ICML'25
Apache-2.0
PISA 论文的 post-training 数据(psft):~5000 个 Kubric+GSO 落体视频、256×256、明确的重力/碰撞/反弹运动。 run-2 混入(占 67%)。运动比 Physion 强得多(帧差 1.05–7.45),用来把模型从低运动塌缩里拉回来——这是 run-2 转正的关键。

run-1 只用 Physion(4000 clip、8 个 caption);run-2 改成 mixed2 = 1500 高运动 Physion + 3000 PISA(648 caption);下一步换 PhyCo。

3c · 最终决定用哪些 benchmark

调研了 2025–26 物理视频生成 benchmark 全景后,最终确定的评测套件(每个都跑 base/fm/physalign 三列):

Benchmark类型指标定位
Physics-IQ
(google-deepmind)
外部·官方运动 mask Spatial/Spatiotemporal/Weighted IoU + MSE → 归一化总分P0 头条。原生面向生成模型、纯自动指标、有发表对照(PhysAlign 38.1)。
PisaBench-sim
(NYU)
外部·官方 metricSAM2 追踪掉落物 → IoU + Chamfer + L2P0 伴随。与落体训练分布最匹配;metric 与官方零误差。
Physion-continuation自建·域内复刻 Physics-IQ 官方运动 mask 的 IoU + MSE自建诊断。训练分布上最灵敏的信号(也最易被静止塌缩骗)。
Quality regression自建·质量DINOv2 一致性 + 光流 dynamic-degree + Laplacian 锐度自建。看物理增益是否以画质/运动为代价(运动塌缩就是它抓出来的)。

明确不用(及原因):VBench-I2V(需数千次 720p 生成、数百 H100·h,不现实);VLM-judge 类(PhyGenBench 依赖 GPT-4o API、VideoPhy-2 重 7B judge 且偏 T2V、WorldModelBench)——judge 重、且计算节点无外网;IntPhys2(判别式 VoE,不是生成评测);Morpheus / PhyWorld 列为 P1 暂缓。

两档区分:官方协议(Physics-IQ 完全官方;PisaBench 官方 metric + 必要 SAM2 适配) vs 自建诊断(Physion-cont、Quality,复刻官方配方但非官方 benchmark,已显式标注,不冒充官方分)。

4 · Run-1 结果(诚实的负结果)

base / fm_only(纯微调) / physalign(+V-JEPA对齐) 三列:

Benchmark(方向)basefm_onlyphysalign
Physics-IQ ↑(外部标准)26.9924.3224.31
Physion-cont ST-IoU ↑(域内)0.00680.2490.241
PisaBench IoU ↑ / Chamfer ↓0.018 / 0.2750.039 / 0.4280.039 / 0.441
Quality dynamic-degree(运动量)0.2670.0690.053

两个一句话结论:(1) 在标准 benchmark Physics-IQ 上训练后退步(26.99→24.3)且运动量塌缩 ~5×;(2) V-JEPA 对齐零效果(physalign≈fm_only 处处相等)。4-benchmark + fm_only 消融成功阻止了一个被单一域内指标误导的假"成功"。

5 · 失败根因(实证诊断,含对自动调研的反驳)

没有照搬自动调研(它判 frame-0 masking 是"退化零速度 bug")——用数学反驳了:若真退化 FM loss 应≈2.0,实测仅 0.10,说明模型准确学到了(低运动的)GT 速度;masking 与 diffusers 推理一致,不是 bug

主因 · 数据域窄化
同 512² 设定下 base 在 Physion 首帧上"狂动"(帧间差 9.98),GT 只有 0.315;训练把模型拉向 Physion 的低运动合成分布 → 对真实世界 Physics-IQ 欠动退步。Physion 八场景全低运动(0.26–1.03)。
证据 · checkpoint sweep
运动量 base 0.587 → 步500 就掉到 0.289 → 4000 步 0.233。运动前 500 步就塌、之后持平 → "早停"救不了、过训练非主因 → 更坐实数据为主因。
对齐为何零效果
gram 是 margin-hinge(margin 0.1)落入即梯度 0,加 λ=0.25 → 对齐项仅占 loss ~0.5%、梯度 ~5%,被 FM 主导。这只解释 physalign≈fm,不解释退步。
用户复核又抓到一个真 bug
LR scheduler 被错误交给 accelerator.prepare → warmup 被 world_size 压缩(2 卡 50 步、8 卡更糟)。污染所有多卡 run,run-2 必须修后重跑。

6 · 修改内容

问题修复
LR scheduler 进了 accelerator.prepare(真 bug)scheduler 不进 prepare,只在 sync_gradients 时 step 一次 → warmup 真正 100 全局步(已验证 step10 lr=2.2e-6 而非 buggy 的 4.2e-6)
caption 退化(只 8 个)每 clip 多样化 caption(稳定 blake2s hash)→ 648 个
数据低运动窄域Physion 只留 5 高运动场景(Drop/Collide/Drape/Link/Roll) + 按 frame-diff 运动过滤;混入 3000 个 PISA-Kubric 落体,PISA 占 67%
256→512 上采样模糊增加原生 256 训练档(治模糊)
对齐太弱 + projector 吸收λ_gram→1.0、margin→0.05;physalign arm 用 bottleneck 弱 projector;新增 lora_gnorm/proj_gnorm 日志看谁吸收梯度
过训练 / 恒定 LRlr 1e-4→2e-5、cosine 衰减、4000→2000 步、LoRA rank 16
(我引入的) 混合数据时间维不一致read_video_frames 恒定 49 帧、短 clip even-stretch 不冻结尾帧 → latent 统一 13 帧

7 · Run-2 结果(修复明显生效)

checkpoint 扫描对比 run-1:

指标(base 值)run-1run-2 最优 ckpt
运动量 dynamic-degree (0.587)0.23(塌)fm 0.534(base 91%)/ physalign 0.463
清晰度 sharpness (0.109)0.074(糊)fm512 0.105 / fm256 0.115(全恢复)
对齐占总 loss 梯度~5%~55%;LoRA grad 0.05–0.065(fm 才 0.01–0.02)
Physics-IQ ↑(base 26.99,run-1 退步到 24.3)24.3fm 27.58 / physalign 27.84

结论:run-1 的退步与塌缩都修好了。Physics-IQ 从 base 26.99 → fm 27.58 → physalign 27.84(+0.85);对齐首次跑出正向增益(physalign−fm = +0.26,run-1 时为 0)。运动量恢复到 base 的 91%、清晰度恢复。

8 · 和 SOTA 比 + 下一步(诚实)

方法 / 模型Physics-IQ (i2v)
我们 base (Wan2.2-TI2V-5B 5B)26.99
我们 run-2 physalign27.84
PhysAlign 论文 base (Wan2.2-A14B 14B)29.6
PhysAlign 论文 +vanilla LoRA / +PhysAlign34.5 / 38.1
榜单 Wan2.2 i2v / +WMReward(BoN)38.3 / 44.4
VideoPoet i2v / Lumiere / SVD / Sora20.3 / 19.0 / 14.8 / 10.0

诚实评估:我们 +0.85 是"修通了、方向对了",离 SOTA(38+) 还很远,对齐增益(+0.26)也温和。原因:(1) base 更小更弱(5B vs 14B);(2) 训练数据是低分辨率、上采样模糊、域差大的 Physion+PISA(不是 PhysAlign 那种专门渲染的高质量数据);(3) 几乎没调参——每个 arm 只跑一次保守配置(为防塌缩压着 lr/步数),没扫 λ/block/步数/rank/多 seed。

提分路线(进行中/计划):① 换 PhyCo(原生 768×432、无模糊、运动强、物理标注全——最对路数据,正在下载重训);② 真正调参(λ_gram 1/2/3、步数 3000、扫 block、多 seed);③ LoRA scale sweep;④ 上 A14B(14B) 对齐 PhysAlign 同款 base;⑤ §13 的 depth/3D teacher、轨迹 teacher、reward 阶段。详见 proposal §13 方法论与 next plan。

10 · A14B 重训(换论文同款 base + PhyCo + 论文配置)

用户决定换成论文真正的 base:Wan2.2-I2V-A14B(14B MoE 双 expert) + PhyCo 数据 + 论文匹配超参,因为 5B 天花板太低。这是一套全新架构,已从零搭好并跑通:

A14B 与 5B 的本质差异说明
VAEWan2.1 16 通道(非 5B 的 48 通道)→ latent 完全不同,重新缓存
I2V 条件36 通道拼接 cat[噪声16, mask4, 图像latent16](非 5B 的 frame-0 替换);不用 CLIP
专家双 MoE expert(高噪 / 低噪,boundary 切换),40 层
训练栈新增 i2v_concat 后端分支;碎片多节点训练(8 卡跨 4 节点×2,NCCL 跨节点,8.7s/步)

训练配置(论文忠实部分):LoRA rank 32 / hook block 16 / λ_gram 0.25 / margin 0.1 / projector(lightweight)/ V-JEPA2-ViT-L teacher / 数据 PhyCo 4800 @768×432 原生 / 有效 batch 8 / 3000 步。physalign 已训完 3000 步,fm 基线即将完成。

⚠ 与论文的设置差异审计(诚实)

用户追问"是否完全按论文"——逐条核对后发现几处真实偏差,这可能正是"physalign≈fm"的部分原因:

设置论文我们一致?
base / rank / hook / λ_gram / margin / projectorA14B / 32 / 16 / 0.25 / 0.1 / 有
loss 组成纯 GramGram + token + temporal❌ 多 2 项
学习率constant 1e-4cosine 衰减到 1e-5
MoE expert两个都训只训低噪 transformer_2❌ 最可疑
3D depth loss有(Full)❌(故意 phase-1)
数据3000 Blender 512²4800 PhyCo 768×432不同

论文证据:Full 的 +3.6 含 3D;分项 ablation 显示仅 Gram(=我们的方法)已占加速度增益 ~80%,所以纯 Gram 本该有效。最可疑偏差:只训了低噪 expert(高噪 expert 决定粗运动/结构,物理一致性主要在此形成)。计划补"纯 Gram + constant LR + 两 expert"的完全忠实臂。

A14B 评测结果(含忠实复现 a14b_2x 列,自动更新)

指标(方向)basefm-1500physalign-1500a14b_2x(忠实)
Physics-IQ ↑(头条·全198官方,step-3000)31.7531.6232.3337.04
+5.29
完全忠实复现(双expert+多block12/16/20/24+teacher@160,纯Gram无3D)a14b_2x = 37.04 —— +5.29 over base! 单expert单block仅+0.58 → 修正4处偏差后暴涨。3D不是瓶颈,纯Gram就复现出论文级增益(论文base29.6→Full38.1)。下方第 11 节详解这 4 处修改。
projlr(projector LR=1/10,对齐~69%进LoRA)/ freeze(冻结projector,100%进LoRA)Physics-IQ projlr 32.27 / freeze 31.97 —— 逼对齐进 LoRA 越多分越低(32.33→32.27→31.97):"projector 吸走梯度"假设被证伪,它不是瓶颈
↳ 外部基线 LTX-2.3(22B distilled,未训练,i2v)Physics-IQ 17.28(bf16) / 17.53(fp8) —— fp8≈bf16,低分真实非量化;官方榜无LTX
PhyCo 域内 continuation ST-IoU ↑0.09680.09960.10010.3112
≈3.2×
PisaBench-sim IoU ↑ / Chamfer ↓0.018 / 0.275(5B 旧数,无 A14B 配对)0.070 / 0.263
IoU≈3.9×
dynamic-degree(运动量,不是越高越好0.6460.6420.6340.174 ⚠

这三行怎么读(诚实):PhyCo ST-IoU 0.097→0.311(域内也 3.2× 涨)PisaBench IoU 0.018→0.070(3.9×)+ Chamfer/L2 全降 ——和头条 Physics-IQ +5.29 方向一致,三个 benchmark 互相印证对齐确实有效。② dynamic-degree 反而从 0.646 掉到 0.174 ⚠, 但这不是运动塌缩:a14b_2x 视频实测帧间差 0.89(base 1.74),确实在动、没冻结。原因是 base 靠"乱动/全局漂移"刷高这个粗糙阈值指标,但动得不对(平均 ST-IoU 仅 0.096); a14b_2x 动得更克制、更准(ST-IoU 0.179、逼近真实物理)。对物理一致性而言 ST-IoU/IoU(动得对不对)才是关键指标,dynamic-degree(动得多不多)会被错误运动刷高,故不标绿。

已有结论:(1) 无运动塌缩(dynamic ~0.61–0.65,对比 5B run-1 塌到 0.05)——lr=1e-4 风险清除。(2) 指标灵敏度分裂:域内 PhyCo ST-IoU 上 physalign≈fm(+0.0005 噪声、不灵敏),但官方 Physics-IQ 全 198 头条上 physalign 32.33 > base 31.75 > fm 31.62——对齐比 fm +0.71、比 base +0.58,纯微调 fm 反而比 base 低。这是首个头条指标上"对齐有用"的正向证据。(3) projlr / freeze 已完成:把对齐逼进 LoRA 不但没放大、反而单调降分(32.33→projlr 32.27→freeze 31.97)——"projector 吸走梯度"假设被证伪,projector 反而有益。单expert增益(+0.58)温和。(4) ✅✅ 完全忠实复现翻盘:拉论文核出4处偏差(单expert/单block/teacher256方裁/插值反向),全改后a14b_2x = 37.04(+5.29 over base)3D 不是瓶颈(本版无3D);之前+0.58纯是不完整复现的artifact。最致命偏差=只训单expert(高噪expert决定粗运动/物理,只训低噪没碰到)。PhysAlign的V-JEPA2特征对齐确实有效,逼近论文Full 38.1。

11 · 翻盘复盘:成功复现改了哪 4 处 + 真实视频效果

physalign 32.33(+0.58 over base,几乎无效)a14b_2x 37.04(+5.29,论文级),只动了下面 4 处——全部是"把不完整复现拉回论文设定",没有加任何新模块、没有 3D loss。4 处一起改的(按你指示 这次不做逐项消融),所以 +5.29 是这 4 处的联合效果;按论文机理推断,排第一的是"两个 expert 都训"。

#修改改前(physalign 32.33)改后(a14b_2x 37.04)为什么有用
1 ⭐两个 MoE expert 都训 只训低噪 transformer_2 高噪 transformer + 低噪 transformer_2 各按自己的 timestep 区间分别训(boundary σ=0.9) A14B 是双专家 MoE:高噪 expert 决定粗运动 / 物理结构 / 时序一致性(去噪早期),低噪 expert 只管细节。 只训低噪 = 物理信号根本没注入到决定运动的那半边网络。推断这是最致命的一处。
2多 block 对齐 单 block 16 block 12 / 16 / 20 / 24 各挂一个 projector 不同深度的 DiT 特征对应不同抽象层级的运动结构;只对齐一层 = 监督面太窄。多层对齐让 V-JEPA2 的时空关系 同时约束浅层(局部运动)到深层(全局物理)。
3teacher 输入保宽高比 256² 方形拉伸(768×432 硬塞成正方形) resize 到 height 160 保持宽高比(V-JEPA2 位置编码插值处理非方形) 方形拉伸把物体几何/运动方向畸变了,teacher 学到的是错的物理关系。保宽高比后 teacher 特征才对应真实运动。
4对齐重采样方向 teacher→student 网格,Gram 在 student 分辨率算 student→teacher 三线性重采样,Gram 在 teacher 分辨率算 teacher 网格更密、信息更全;把 student 上采样到 teacher 分辨率再算关系矩阵,保住 teacher 的全部空间关系 不被下采样抹掉,对齐目标更精确。

共同保持论文设定不变:纯 Gram loss(λ=0.25、margin=0.1,无 token/temporal/3D)、constant LR 1e-4、LoRA rank 32、 V-JEPA2-ViT-L teacher、PhyCo 4800@768×432、有效 batch 8、3000 步。每个 expert 各训 3000 步(各 ~14.5h)。

真实视频效果(涨分最大的场景,首帧输入 → base 未训练 → a14b_2x → GT 真实)

+5.29 是 198 个视频的平均,单看任意一个场景未必明显。下面挑的是 a14b_2x 比 base 涨分最大的 4 个场景 (按本场景 Physics-IQ spatiotemporal-IoU 的 base→2x 跳变排序)——这些场景 base 几乎追不上真实运动(ST-IoU≈0.02–0.08), 而 a14b_2x 强烈跟上(≈0.42–0.60)。看 a14b_2x 列里小球的滚动方向、轨迹、碰后去向是否比 base 更贴近 GT。

场景
(本场景ST-IoU涨幅)
首帧(输入)base(未训练)a14b_2x(忠实复现)GT(真实)
两球交错滚过
two-balls-pass
ST-IoU
0.080.60
+0.52
弹珠轨道
marble-run-x
ST-IoU
0.020.50
+0.48
球滚到盒子后
roll-behind-box
ST-IoU
0.040.42
+0.38
球在玻璃上滚
ball-rolls-on-glass
ST-IoU
0.080.42
+0.34

诚实说明:整体 66 场景里 37 个涨、29 个跌(典型 benchmark 行为),平均 ST-IoU base 0.096→2x 0.179(近翻倍), 官方总分 31.75→37.04。上面只展示涨分最大的几个;退步最多的如 roll-in-box(0.20→0.06)我没放,但数据在 CSV 里。 更多 4 列定性对比见 视频对比 Gallery;A14B 多 benchmark 数值见上方第 10 节表格(PhyCo/PisaBench 评测完成后自动填入)。

12 · 时间线

调研 + 资产

6 路并行深度调研定 benchmark/数据/配方;下载 Wan2.2-TI2V-5B(32G)+V-JEPA2(6G)+Physics-IQ+Physion+PISA。

实现 + 修 bug

自研 diffusers 训练循环;对抗式 review 修掉 10 处 bug(LoRA 加载静默失败、V-JEPA 中心裁剪错位等)。

Run-1 训练+评测

Physion 4000 clips 训 fm/physalign;base Physics-IQ=26.99;trained 退步到 24.3。

根因分析

实证诊断:主因数据域窄化;反驳自动调研的 frame-0 bug 说;用户复核再抓 scheduler bug。

Run-2 修复重跑

数据/scheduler/projector/分辨率全修;mixed2(1500 Physion+3000 PISA);fm/physalign/fm256 三 run 训完。

Run-2 评测

运动量恢复到 0.534(base 91%)、清晰度恢复;Physics-IQ 26.99→27.58→27.84(+0.85)。

换 A14B + PhyCo

换论文同款 Wan2.2-I2V-A14B(双 expert、36 通道 I2V)+ PhyCo 4800@768×432;新增 i2v_concat 后端、碎片多节点训练。physalign/fm 论文忠实配置训完/将完。

A14B 评测 + 一致性审计

推理验证通过;dynamic 无塌缩;PhyCo ST-IoU physalign≈fm;核对论文发现 3 处偏差(loss/LR/单expert);Physics-IQ 头条评测进行中。

忠实复现翻盘

改 4 处(双expert都训 + 多block12/16/20/24 + teacher@160保宽高比 + student→teacher重采样),纯Gram无3D;Physics-IQ base31.75→a14b_2x 37.04(+5.29),逼近论文 Full 38.1。其余 benchmark(PhyCo/PisaBench)用 a14b_2x 复测中。