【免费下载链接】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 是面向实时交互视频生成的高效扩散蒸馏方案,其官方 Web Demo 让你在浏览器中输入提示词,视频帧就能实时逐帧推送播放。本文带你完成 Causal-Forcing 实时 Web Demo 的完整部署,并深入解析低显存动态换出机制与 TensorRT、TAEHV、FP8 等加速选项,帮助你在单张显卡上跑通高质量实时视频生成。
🎬 Causal-Forcing Web Demo 是什么
Causal-Forcing 通过自回归扩散蒸馏(Causal ODE / Causal Consistency Distillation)驱动非对称 DMD,在同等训练预算和推理效率下显著优于 Self Forcing,并原生统一了 T2V 与 I2V。
官方仓库提供了一个开箱即用的 Web 前端 Demo,核心特性如下:
| 特性 | 说明 |
|---|---|
| 实时帧推送 | 每个 block 去噪 + 解码完成后,帧立即编码为 base64 经 SocketIO 推送到浏览器 |
| 低显存模式 | 空闲显存 < 40 GB 时自动启用动态换出(dynamic swap) |
| 加速开关 | 前端可一键切换 TAEHV 轻量解码器、FP8 量化、torch.compile |
| TensorRT 支持 | 通过--trt参数加载预构建的 INT8 VAE 引擎 |
整个推理与训练管线如下图所示:
📦 环境安装:5 步搞定
Demo 的推理环境与 Self Forcing 相同,在 Linux + NVIDIA GPU 上执行:
git clone https://gitcode.com/gh_mirrors/ca/Causal-Forcing cd Causal-Forcing conda create -n causal_forcing python=3.10 -y conda activate causal_forcing pip install -r requirements.txt pip install git+https://github.com/openai/CLIP.git pip install flash-attn --no-build-isolation python setup.py develop关键点:
- requirements.txt 中已包含 Demo 依赖:
flask、flask-socketio、torchao(FP8 量化用)、onnx/onnxruntime(TensorRT 构建用) - 需要系统安装
ffmpeg,Demo 结尾会用它将逐帧 JPEG 合成为 MP4
📥 模型权重下载
# Wan 底座(VAE / 文本编码器 / 因果 Transformer 基础) hf download Wan-AI/Wan2.1-T2V-1.3B --local-dir wan_models/Wan2.1-T2V-1.3B # Causal Forcing frame-wise 4-step 蒸馏模型(Demo 默认) hf download zhuhz22/Causal-Forcing framewise/causal_forcing.pt --local-dir checkpoints # Causal Forcing++ 1-step / 2-step(延迟更低) hf download zhuhz22/Causal-Forcing causal-forcing++/framewise-2step.pt --local-dir checkpoints hf download zhuhz22/Causal-Forcing causal-forcing++/framewise-1step.pt --local-dir checkpoints💡 TAEHV 轻量解码器的权重
taew2_1.pth无需手动下载——首次勾选 TAEHV 时,demo.py 会自动拉取到checkpoints/目录。
🚀 启动命令:一行跑起来
python demo.py \ --checkpoint_path checkpoints/framewise/causal_forcing.pt \ --config_path configs/causal_forcing_dmd_framewise.yaml \ --port 5001启动后访问http://localhost:5001,输入提示词即可开始生成。如果已构建好 TensorRT 引擎,追加--trt即可:
python demo.py --checkpoint_path ... --config_path ... --trt启动时 Demo 会打印当前空闲显存,并据此决定策略:
- 显存充足(≥ 40 GB):文本编码器直接常驻 GPU
- 显存紧张(< 40 GB):自动安装
DynamicSwapInstaller,进入低显存模式
生成流程参考 configs/causal_forcing_dmd_framewise.yaml:21 个 latent 帧按 framewise 模式切成 7 个 block,每个 block 走 4 步去噪(denoising_step_list: [1000, 750, 500, 250]),默认帧率 6 fps。
顺带一提,同一仓库的 inference.py 还支持 I2V,只需--i2v --data_path prompts/i2v,以下就是 I2V 条件首帧示例:
🧠 低显存动态换出机制全解析
这是 Demo 最精巧的部分,核心代码在 demo_utils/memory.py,借鉴自 FramePack。
DynamicSwapInstaller:参数级"按需搬砖"
它会对模型的每个子模块打补丁,重写__getattr__:
- 当你访问某个
weight/buffer时,自动执行.to(gpu)再返回 - 也就是说权重平时躺在 CPU 内存里,用到的那一瞬间才搬上 GPU,用完被 CUDA 缓存机制自然淘汰
在 demo.py 中这样启用:
low_memory = get_cuda_free_memory_gb(gpu) < 40 if low_memory: DynamicSwapInstaller.install_model(text_encoder, device=gpu)move_model_to_device_with_memory_preservation:带预留的搬运
每次编码文本前,Demo 会调用该函数把文本编码器搬上 GPU,但始终为后续去噪预留空闲显存 + 5 GB:逐模块搬运,一旦剩余显存低于预留线就立即停止并empty_cache()。这保证了 T5 文本编码器(bf16)与因果 Transformer(fp16)永远不会互相挤爆显存。
效果:单卡 24 GB 级别的消费级显卡即可跑通完整 Demo,代价仅是文本编码阶段稍慢。
⚡ 四大加速选项深度对比
| 加速项 | 作用对象 | 显存收益 | 速度收益 | 开启方式 |
|---|---|---|---|---|
| TAEHV | VAE 解码器 | 显著(权重小一个量级) | 快(逐帧串行解码) | 前端勾选,运行时热切换 |
| TensorRT INT8 | VAE 解码器 | 中 | 最快 | 启动参数--trt |
| FP8 量化 | Transformer | 约省一半权重显存 | 中 | 前端勾选,首次生效 |
| torch.compile | Transformer + VAE | 基本不变 | 首次编译 5-10 分钟,之后稳定提速 | 前端勾选 |
1️⃣ TAEHV:轻量解码器热切换
TAEHV(Tiny AutoEncoder for Hunyuan Video)实现于 demo_utils/taehv.py。Demo 会在运行时把 pipeline 的 VAE 直接换成 TAEHV:
decode_video(latents, parallel=False):parallel=False是低显存模式,逐时间步串行处理,只用 O(1) 级额外显存- 切换无重启成本:勾选后下一次生成即生效(进度条会提示 "Switching VAE decoder...")
2️⃣ TensorRT INT8 引擎
启用--trt时,demo_utils/vae.py 中的VAETRTWrapper会加载预构建引擎checkpoints/vae_decoder_int8.trt,逐帧调用execute_async_v3解码。
没有现成引擎?仓库提供了完整构建脚本 demo_utils/vae_torch2trt.py,流程是:
- 用 dummy 输入(1 个 latent 帧 + 32 个
ZERO_VAE_CACHE缓存张量,定义见 demo_utils/constant.py)把 PyTorch 解码器导出为 ONNX - 用 TensorRT 解析器构建 INT8 引擎
- 引擎放入
checkpoints/后即可用--trt启动
3️⃣ FP8 动态量化
勾选后,Demo 调用torchao对 Transformer 做一次动态 FP8 激活 + 权重量化(Float8DynamicActivationFloat8WeightConfig(granularity=PerTensor()))。量化只发生一次(fp8_applied标记防止重复),此后每次生成都享受更小的权重带宽。
4️⃣ torch.compile
对 Transformer 与 VAE 使用max-autotune-no-cudagraphs模式编译。注意首次生成会阻塞 5-10 分钟做编译(进度条会明确提示),之后每个 block 都更快。TAEHV / TRT 模式下会自动跳过 VAE 编译。
📡 实时帧推送是怎么做到的
Demo 的"边生成边播放"依赖一条非阻塞流水线:
- 生成线程:每完成一个 block 的去噪与 VAE 解码,把每帧像素 tensor 投入
frame_send_queue - 发送线程:
frame_sender_worker后台线程持续消费队列,调用 demo.py 中的tensor_to_base64_frame把帧编码为 JPEG base64,通过 SocketIO 的frame_ready事件推给浏览器 - 前端:收到帧立即渲染,实现"帧到达即播放",而非等整段视频生成完
前端还可随时stop_generation中止生成;全部帧发完后,ffmpeg会把保存的 JPEG 序列合成为 MP4 存入videos/目录。
🛠 常见问题与调优建议
- 首帧偏慢?勾选 torch.compile 后第一次生成包含编译时间,属正常现象,第二次起恢复
- 显存不够 OOM?优先勾选 TAEHV;仍紧张则确认
low_memory模式已生效(启动日志会显示空闲显存) - 追求最低延迟?换用 Causal Forcing++ 的 1-step / 2-step 权重(记得加
--use_ema推理配置,Demo 直接加载generator_ema) - 画质 vs 速度:TAEHV 速度最快但细节略弱于原生 VAE;TRT INT8 引擎兼顾两者
- 精度提示:若发现生成画面模糊不收敛,README 建议检查是否误用低精度,必要时切换 FP32
📁 相关文件速查
| 路径 | 说明 |
|---|---|
| demo.py | Web Demo 主入口(Flask + SocketIO) |
| demo_utils/memory.py | 低显存动态换出实现 |
| demo_utils/taehv.py | TAEHV 轻量视频解码器 |
| demo_utils/vae.py | 流式 VAE 解码器与 TensorRT 封装 |
| demo_utils/vae_torch2trt.py | ONNX → TensorRT INT8 引擎构建脚本 |
| demo_utils/constant.py | VAE 流式缓存常量定义 |
| configs/causal_forcing_dmd_framewise.yaml | framewise 4-step 推理配置 |
| pipeline/causal_inference.py | 因果推理管线(KV cache 分块生成) |
| prompts/demos.txt | 示例提示词 |
一句话总结:低显存动态换出让你"跑得起来",TAEHV / TensorRT / FP8 / torch.compile 让你"跑得快"——四件套组合,消费级显卡也能体验 ICML 2026 水准的实时交互视频生成。
【免费下载链接】Causal-Forcing
[ICML 2026] Official codebase for "Causal Forcing: Autoregressive Diffusion Distillation Done Right for High-Quality Real-Time Interactive Video Generation" & Causal Forcing++
相关推荐
PyTorch3D模型部署终极指南:ONNX导出与TensorRT加速实践
PyTorch3D模型部署终极指南:ONNX导出与TensorRT加速实践 PyTorch3D是Facebook AI Research(FAIR)推出的专业3
人工智能深度学习计算机视觉图形学DUSt3R移动端部署实战:ONNX转换与TensorRT加速指南
DUSt3R移动端部署实战:ONNX转换与TensorRT加速指南 还在为3D重建模型在移动端部署困难而烦恼?本文将手把手教你如何将DUSt3R模型转换为ONN
人工智能深度学习计算机视觉预训练点云Skyvern自动化工具终极指南:零基础快速上手完整教程
Skyvern自动化工具终极指南:零基础快速上手完整教程 还在为重复的网页操作烦恼吗?每天登录网站、填写表单、下载文件这些看似简单却耗时耗力的任务,现在有了完美
人工智能AI Agent浏览器控制GUI 自动化RPA后端前端
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考