Stable Video Infinity 部署指南:5 步生成无限长视频
【免费下载链接】Stable-Video-Infinity[ICLR 26 Oral] Stable Video Infinity: Infinite-Length Video Generation with Error Recycling项目地址: https://gitcode.com/GitHub_Trending/st/Stable-Video-Infinity
把一段几秒的图生视频拉长到几分钟,画面开始漂移、主体被"遗忘",这是用 I2V 模型做长视频最常见的翻车现场。Stable Video Infinity(SVI)用 Error Recycling 机制解决这个问题,从一张参考图出发就能持续生成不限时长的视频,而且官方实现已完全开源。
⚡ 用 5 步跑通无限长视频生成
第 1 步:克隆仓库并准备环境。官方在 A100 + CUDA 12.0 + torch 2.8.0 上验证过,conda 脚本会自动装 torch 2.5.0:
git clone https://gitcode.com/GitHub_Trending/st/Stable-Video-Infinity cd Stable-Video-Infinity conda create -n svi python=3.10 && conda activate svi pip install -e . && pip install flash_attn==2.8.0.post2 conda install -c conda-forge ffmpeg librosa libiconv第 2 步:下载底模和 LoRA。SVI 只微调 LoRA 适配器,底模是 Wan 2.1 I2V 14B:
huggingface-cli download Wan-AI/Wan2.1-I2V-14B-480P --local-dir ./weights/Wan2.1-I2V-14B-480P huggingface-cli download vita-video-gen/svi-model version-2.0/SVI_Wan2.1-I2V-14B_lora_v2.0.safetensors --local-dir ./weights/Stable-Video-Infinity第 3 步:跑官方推理脚本。以 SVI 2.0 为例,输入是data/toy_test/svi_2.0/frame.jpg和一份 100 条提示词的 prompt 流,输出落在videos/svi_2.0/:
bash scripts/test/svi_2.0.sh其他变体(SVI-Shot、Film、Talk、Dance)对应 scripts/test/ 下的同名脚本,只需替换--extra_module_root指向的 LoRA 和输入数据。
第 4 步:验证权重目录。确认weights/Wan2.1-I2V-14B-480P/下 7 个 safetensors、T5 文本编码器、CLIP 图像编码器和 VAE 齐全,结构见 README 的 Model Preparation 一节。
第 5 步(可选):启动 Web 界面。目前 Gradio demo 支持 Shot 和 Film 两种模式:
bash gradio_demo.sh --shot🔍 拆解 Error Recycling 与 clip 级因果推理
训练时:用误差缓冲区教会 DiT 自纠错
这个模块解决的是"训练见干净数据、推理见带误差自生成输出"的分布错位。train_svi.py 里维护两个按时间步网格分桶的缓冲区latent_error_buffer和y_error_buffer,训练时用一步双向积分近似预测、以残差计算误差并入库,再按概率回灌到新样本上,形成闭环。核心开关在 scripts/train/svi_film.sh:
--use_error_recycling \ --error_buffer_k 500 \ --num_grids 50 \ --clean_prob 0.5 \ --clean_buffer_update_prob 0.1--error_buffer_k控制每个时间步桶的容量,--clean_prob保留一定比例的无误差训练防止灾难性遗忘;干净输入产生的误差会以--clean_buffer_update_prob的低概率才写入缓冲区,避免污染误差库,这也是 svi-film-opt 版本画质更好的原因。
推理时:clip 级因果 + 参考帧填充
diffsynth/pipelines/svi_video.py 实现的是"clip 内双向注意力、clip 间因果":test_svi.py 每生成一个 81 帧的 clip,就取末尾--num_motion_frames帧作为下一 clip 的续写条件;--ref_pad_num -1会把参考图平铺填充整段 padding 区域,把续写变成"基于参考图的恢复"问题,单场景下不会漂移。生成逻辑简化如下:
video = pipe(prompt=prompt, input_image=ref, num_inference_steps=50, seed=seed) video_list += video[:-num_motion_frames] ref = video[-num_motion_frames:] # 末帧喂给下一个 clip注意 scripts/test/svi_shot.sh 用 1 个 motion frame,scripts/test/svi_film.sh 用 5 个,这是与训练对齐的设定,不要随手改。
🎛️ 内存、速度、质量:三条轴的调参与参数对比
压低显存占用
- 调小
--num_persistent_param_in_dit(默认 6e9):溢出的 DiT 模块会被enable_vram_managementoffload 到 CPU,用速度换显存。 - 加载模型时把
torch_dtype设为torch.float8_e4m3fn启用 FP8,test_svi.py 中已有对应注释。 - 打开
--tiled让 VAE 分块编解码,长视频帧数越多收益越明显。
加快推理速度
- 降低
--num_steps(默认 50),步数是每 clip 耗时的线性因子。 - 调用 pipeline 时传
tea_cache_l1_thresh=0.3:内置的 TeaCache 用相对 L1 距离判断相邻 step 的 DiT block 输出是否可复用,跳过冗余前向。 - 换更小的底模:DevLog 提到 Wan 2.2 5B 版本 1 分钟视频约 10 分钟(H100),小模型只需做参考图误差回收即可。
平衡质量与稳定性
- 每个 clip 用不同的 seed,
test_svi.py默认seeds = range(0, 10000)再乘--seed_times,全 clip 复用同一噪声会累积伪影。 - 出现重影、文本遵循差时把
--cfg_scale_text从 5.0 提到 7 左右。 - 输入图过大时(如 2150x1204 会被缩到 1472x832)偏离训练分辨率 480x832,动效变弱,用
--max_width 832拉回训练分布。
| 参数 | 默认值 | 调整建议 |
|---|---|---|
--num_steps | 50 | 调低提速,过低会明显掉质量 |
--cfg_scale_text | 5.0 | 重影/文本遵循差时提高到 7 |
--ref_pad_num | -1(Shot)/ 0(Film) | -1 全参考帧填充最稳;0 允许转场但可能遗忘 |
--num_motion_frames | 1(Shot)/ 5(Film) | 须与训练设定一致,勿随意修改 |
--num_persistent_param_in_dit | 6e9 | 调小省显存,推理速度下降 |
⚠️ 上线前必看的三个高频坑
- 长视频颜色漂移、主体被遗忘→ 各 clip 复用了同一噪声 seed,或把 SVI LoRA 套在原版 Wan 工作流上(未修改 padding 设定)。解法:每 clip 换 seed,按官方脚本的
--ref_pad_num和 motion frames 配置来。 - 动效明显不足、画面近乎静止→ 输入分辨率与 480p 训练分布偏差过大,缩放后丢失细节。解法:传
--max_width 832,并在终端确认 "Video dimensions" 输出接近 832x480。 - 生成途中 CUDA out of memory→ 14B DiT 加流式多 clip 的常驻开销吃满显存。解法:调小
--num_persistent_param_in_dit、开启--tiled,或改用 FP8 加载。
项目 TODO 里的 Wan 2.2 Animate SVI 和 720p 支持值得持续关注,前者把骨架驱动的舞蹈动画从 UniAnimate-DiT 换到了 Wan 2.2 底座。遇到具体报错先看 docs/FAQ.md,部署到非官方架构时的调参经验在 docs/DevLog.md。
【免费下载链接】Stable-Video-Infinity[ICLR 26 Oral] Stable Video Infinity: Infinite-Length Video Generation with Error Recycling项目地址: https://gitcode.com/GitHub_Trending/st/Stable-Video-Infinity
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考