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_steps50调低提速,过低会明显掉质量--cfg_scale_text5.0重影/文本遵循差时提高到 7--ref_pad_num-1(Shot)/ 0(Film)-1 全参考帧填充最稳;0 允许转场但可能遗忘--num_motion_frames1(Shot)/ 5(Film)须与训练设定一致,勿随意修改--num_persistent_param_in_dit6e9调小省显存,推理速度下降⚠️ 上线前必看的三个高频坑长视频颜色漂移、主体被遗忘→ 各 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),仅供参考
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_steps50调低提速,过低会明显掉质量--cfg_scale_text5.0重影/文本遵循差时提高到 7--ref_pad_num-1(Shot)/ 0(Film)-1 全参考帧填充最稳;0 允许转场但可能遗忘--num_motion_frames1(Shot)/ 5(Film)须与训练设定一致,勿随意修改--num_persistent_param_in_dit6e9调小省显存,推理速度下降⚠️ 上线前必看的三个高频坑长视频颜色漂移、主体被遗忘→ 各 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),仅供参考