【免费下载链接】Causal-Forcing
[ICML 2026] Official codebase for "Causal Forcing: Autoregressive Diffusion Distillation Done Right for High-Quality Real-Time Interactive Video Generation" & Causal Forcing++
Causal-Forcing是 ICML 2026 的开源项目,实现了高质量、实时交互式视频生成。它的核心思想是通过自回归扩散蒸馏(Autoregressive Diffusion Distillation),把一个强大的双向教师模型压缩成一个只需 1/2/4 步就能出片的少步自回归模型。整条链路被拆成清晰的三阶段训练流水线:先训 AR 扩散,再做因果蒸馏,最后用 DMD 蒸馏。本文带你逐步读懂这条流水线,并给出从零复现的完整步骤。
📌 上图正是本项目的灵魂:Self Forcing(用双向 teacher,理论有缺陷)→Causal Forcing(换成 AR teacher,理论正确但需生成 ODE 数据,耗时)→Causal Forcing++(用因果一致性蒸馏替代 ODE,正确、高效且可扩展)。
一、为什么要分三阶段?
一句话理解每个阶段在"做什么":
| 阶段 | 目标 | 用到的教师 | 产物 |
|---|---|---|---|
| Stage 1 · AR 扩散 | 学会"按帧自回归地多步去噪" | 真实数据 | 多步因果扩散模型 |
| Stage 2 · 因果蒸馏 | 把多步压缩成少数步 | AR 教师 | 少步初始化模型 |
| Stage 3 · DMD | 对齐真实分布,出最终模型 | 双向 14B 强教师 | 1/2/4 步实时模型 |
这种设计的精妙之处在于**"非对称"**:中间的因果蒸馏必须用自回归(AR)教师,因为学生和老师要走同一条轨迹;而最后的 DMD 只要求匹配最终分布、不要求轨迹一致,所以可以直接请出更强的双向 14B 模型当老师。
二、Stage 1:AR 扩散(打好自回归地基)
第一阶段训练一个能"逐块自回归去噪"的多步扩散模型。它使用真实视频 latent 数据,以 teacher forcing 方式训练,是整个流水线里最重、步数最多的一步。
- 训练入口:train.py,配置分
framewise(逐帧,原生支持 I2V)和chunkwise(每 3 帧一块)两套 - 模型主体:model/diffusion.py 中的
CausalDiffusion - 对应 Trainer:trainer/diffusion.py 的
DiffusionTrainer
关键配置(以逐帧版 configs/ar_diffusion_tf_framewise.yaml 为例):
torchrun --nnodes=8 --nproc_per_node=8 --rdzv_id=5235 \ --rdzv_backend=c10d --rdzv_endpoint $MASTER_ADDR \ train.py \ --config_path configs/ar_diffusion_tf_framewise.yaml \ --logdir logs/ar_diffusion_framewise💡 官方建议不少于 2K 步,跑到 5~10K 步效果更好。区分逐帧/整块的核心参数是
num_frame_per_block:逐帧=1,整块=3。
三、Stage 2:因果蒸馏(两种路线二选一)
这是 Causal Forcing 系列最有特色的阶段,用来把 Stage 1 的多步模型"压缩"成少步。你有两条路:
路线 A · Causal ODE(正统做法,需生成数据)
先用 Stage 1 的权重生成 ODE 配对轨迹数据,再回归拟合。
- 生成数据(get_causal_ode_data_framewise.py)并打包成 LMDB(utils/create_lmdb_iterative.py)
- 用 configs/causal_ode_framewise.yaml 训练,Trainer 为 trainer/ode.py 的
ODETrainer,模型是 model/ode_regression.py 的ODERegression
torchrun --nproc_per_node=8 get_causal_ode_data_framewise.py \ --generator_ckpt checkpoints/framewise/ar_diffusion.pt \ --rawdata_path dataset/clean_data \ --output_folder dataset/ODE6KCausal_framewise_latents路线 B · Causal CD(Causal Forcing++,推荐 🔥)
用因果一致性蒸馏替代 ODE,完全省掉生成 ODE 数据这一步,只需用真实数据就能达到同等甚至更好的效果。
- 配置:configs/causal_cd_framewise.yaml
- 模型:model/naive_consistency.py 的
NaiveConsistency - Trainer:trainer/naive_cd.py 的
ConsistencyDistillationTrainer
torchrun --nnodes=8 --nproc_per_node=8 --rdzv_id=5235 \ --rdzv_backend=c10d --rdzv_endpoint $MASTER_ADDR \ train.py \ --config_path configs/causal_cd_framewise.yaml \ --logdir logs/causal_cd_framewise🎯两条路怎么选?追求省事、可扩展 → 选Causal CD(路线 B);想严格对齐原版论文 → 选 Causal ODE(路线 A)。CD 路线是 Causal Forcing++ 的招牌,直接产出 1-step / 2-step 模型。
四、Stage 3:DMD 蒸馏(炼出实时模型)
最后一步用分布匹配蒸馏(Distribution Matching Distillation,DMD),让少步学生的输出分布逼近双向 14B 强教师。它靠 backward simulation,不需要视频数据,只要 prompt 文本即可训练。
- 模型核心:model/dmd.py 的
_compute_kl_grad(计算 DMD 梯度) - Trainer:trainer/distillation.py 的
ScoreDistillationTrainer - 配置按目标步数区分:
| 目标模型 | 配置文件 | denoising_step_list |
|---|---|---|
| 4-step | configs/causal_forcing_dmd_framewise.yaml | 1000, 750, 500, 250 |
| 2-step | configs/causal_forcing_dmd_framewise_2step.yaml | 1000, 500 |
| 1-step | configs/causal_forcing_dmd_framewise_1step.yaml | 1000 |
torchrun --nnodes=8 --nproc_per_node=8 --rdzv_id=5235 \ --rdzv_backend=c10d --rdzv_endpoint $MASTER_ADDR \ train.py \ --config_path configs/causal_forcing_dmd_framewise.yaml \ --logdir logs/causal_forcing_dmd_framewise📍两个关键细节: ①
generator_ckpt指向 Stage 2 产出的causal_ode.pt或causal_cd.pt,即上一阶段的成果作为本阶段起点。 ②dfake_gen_update_ratio: 5表示每 5 步里 1 步更新生成器、4 步更新 critic(假分数网络),类似 GAN 的交替训练节奏。 ③ bs64 时建议不超过 1K 步,否则运动动态性可能下降。
五、一键推理:1/2/4 步实时出片
三阶段训练完,用 inference.py + pipeline/causal_inference.py 的CausalInferencePipeline做带 KV cache 的自回归推理。逐帧模型原生支持 I2V——只需把首帧设为条件图即可。
# 4-step 逐帧模型(注意用 EMA 权重) python inference.py \ --config_path configs/causal_forcing_dmd_framewise.yaml \ --output_folder output/framewise \ --checkpoint_path checkpoints/framewise/causal_forcing.pt \ --data_path prompts/demos.txt \ --use_ema # 1-step Causal Forcing++(极低延迟) python inference.py \ --config_path configs/causal_forcing_dmd_framewise_1step.yaml \ --output_folder output/framewise_1step \ --checkpoint_path checkpoints/causal-forcing++/framewise-1step.pt \ --data_path prompts/demos.txt \ --use_ema💡 想要分钟级长视频?项目基于 Rolling Forcing 提供了 long_video/ 扩展,见其 README.md。注意:原生 Causal-Forcing 不直接支持超过 81 帧的视频,长视频需配合该扩展。
六、从零复现避坑指南 🛠️
| 环节 | 建议 |
|---|---|
| 精度 | CD/DMD 阶段若用 BF16 训练崩了、画面一直糊,请换 FP32(官方明确提示) |
| Stage 1 步数 | 至少 2K 步,5~10K 步更稳 |
| Stage 2 步数 | ODE ≥1K 步;CD ≥3K 步 |
| Stage 3 步数 | bs64 时 ≤1K 步,防止运动退化 |
| EMA | 推理务必加--use_ema,画质更稳 |
| 跳阶段 | 每阶段都有官方预训练权重,可从任意阶段接续,不必全部重训 |
七、核心文件导航 📂
想深入源码,从这几个入口切入即可:
- 训练总入口:train.py —— 按
config.trainer字段分发到四个 Trainer - 阶段一模型:model/diffusion.py · 阶段二 ODE:model/ode_regression.py · 阶段二 CD:model/naive_consistency.py
- 阶段三 DMD:model/dmd.py
- 推理管线:pipeline/causal_inference.py
- 配置总目录:configs/(含逐帧/整块、1/2/4 步全套配置)
- 长视频扩展:long_video/
🚀复现路径小结:
Stage 1 AR 扩散→Stage 2 因果蒸馏(ODE 或 CD)→Stage 3 DMD,三步走完,一个能实时交互的少步视频模型就诞生了。逐帧(framewise)路线是当前推荐方向,它同时统一了 T2V 和 I2V,也是 Causal Forcing++ 1/2-step 模型的诞生地。
【免费下载链接】Causal-Forcing
[ICML 2026] Official codebase for "Causal Forcing: Autoregressive Diffusion Distillation Done Right for High-Quality Real-Time Interactive Video Generation" & Causal Forcing++
相关推荐
如何让视频扩散模型飞起来?FastGen中CausVid与Self-Forcing因果蒸馏深度剖析
如何让视频扩散模型飞起来?FastGen中CausVid与Self Forcing因果蒸馏深度剖析 FastGen 是 NVIDIA 推出的开源快速生成框架,专
Notepad-- 跨平台文本编辑器:10 分钟装好,实操吃透 3 个高频功能
Notepad 跨平台文本编辑器:10 分钟装好,实操吃透 3 个高频功能 Notepad 是一款开源跨平台文本编辑器,支持 Windows、Linux、mac
桌面应用Self Forcing训练技巧:如何高效训练自回归视频扩散模型
Self Forcing训练技巧:如何高效训练自回归视频扩散模型 自回归视频扩散模型Self Forcing是一种革命性的训练方法,通过 在训练过程中模拟推理过
人工智能深度学习媒体生成视频预训练
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考