Ref2VA 蒸馏版(4-step)— 剪枝 + FP8 量化后的画质抽检

每个 case 三栏:原视频(要保留的动作/背景/运镜)· 参考图(要换进去的人)· 输出(模型结果)。原视频已裁到和输出同样的 5.17 秒窗口,方便逐帧对照。8 个 case 全部来自 scail2 的 merged_all 配对素材,同一套参数一次跑完,没有挑选。

这次验的是什么

模型是 full-finetune + DMD 蒸馏的 MiniMax-H3 Ref2VA(4 步)。我们做的改造是剪枝(51 个 adaln 投影按官方 rank-8 中心化 SVD 配方从 2688 维折到 8 维,66GB→40GB)+ FP8 量化(W8A8 动态激活,只量化 50 个 block 的 attn/ff 线性层)。抽检要回答的问题是:这两步压缩有没有把画质压坏

配置(均含 sage attention + offload)s/步(稳态)峰值显存画质
bf16 未量化(最初基线)51.723.3 GB基准
int8 W8A16 权重量化31.729.1 GB干净
int8 W8A8 + compile14.823.1 GB干净
FP8 W8A8 + compile(本页所用)14.019.5 GB干净 ✓
NVFP4 W4A4 + compile11.518.9 GB可见伪影,已否决 ✗

相对最初 3.7× 提速。NVFP4 虽然最快,但脸部变平、毛领糊、腰带涂抹感明显——而且它的 PSNR 反而是三者里最高的(17.7 dB vs FP8 的 17.4、int8 的 17.1),说明在这个量级 PSNR 完全没有区分力(原生 bf16 对官方参考输出本身就只有 17.4 dB,那是扩散模型同 seed 下的运行间噪声地板),质量只能靠肉眼——所以有了这一页。

本页视频是不带 compile 跑的(这批 case 分辨率不一,torch.compile 每遇到新 shape 都要重编译,并行时会互相抢 CPU)。compile 只影响速度、不改变量化格式,画质与上表的 FP8 行一致。

量化档位横向对比(同一 case:9202c3df,同 seed)

这一组是压缩程度的直接对比:同样的输入、同样的种子,只换量化格式。作者参考输出是 h3-motioncontrol 仓库自带的 expected-s4.mp4,可以当"正确答案"用;bf16是我们跑的未量化版本,是我们这条链路的上限。重点看 NVFP4 那一栏:脸部变平、毛领糊成一片、腰带装饰涂抹感、手臂纹身糊成色斑——这就是我们否决它的原因,虽然它最快。

9202c3df — 原视频是西装男,参考图是牛角角色(两者完全不同,能真正检验身份替换)

原视频(动作来源)
参考图(要换进去的人)
作者参考输出(expected-s4)
bf16 未量化 · 51.7 s/步
int8 W8A8 · 14.8 s/步
FP8 W8A8 · 14.0 s/步(选用)
NVFP4 W4A4 · 11.5 s/步(有伪影,已否决)

8 个 case 抽检(FP8)