teacache加速,teacache_rel_l1_thresh值越大,速度越快,但质量会有所降低
teacache_rel_l1_thresh是一个相对 L1 距离的阈值:
- 在每一步采样时,模型会判断当前输入和上一步缓存的差异(L1 loss)
- 如果差异 小于这个阈值,说明变化不大 ⇒ 可以直接用缓存跳过当前计算
- 阈值越大,就越容易满足“差异小”这个条件 ⇒ 跳得越多,速度越快
teacache_rel_l1_thresh=0.1
teacache_rel_l1_thresh=0.15
teacache_rel_l1_thresh=0.25
teacache_rel_l1_thresh值越大,速度更快了,左边teacache_rel_l1_thresh=0.1,中间0.15,右边0.25,0.1时还有眨眼的动作
teacache_rel_l1_thresh=0.1的细节更多,比如衣服的褶皱细节
左边guidance_scale=1,中间guidance_scale=5,右边guidance_scale=10。
- 高值:强制生成内容贴近 image_embeds 的视觉特征(如参考图风格),但可能降低动态多样性。
- 低值:允许更多随机性,适合创意性变化,但可能减弱帧间连贯性。
shift 控制的是“AI 要多自由地重新开始想象这个视频”。
- shift = 0:像导演严格照剧本拍,女孩从头自然跑,动作连贯。
- shift = 50:导演说“中段自由发挥一下”,结果视频像是从中间插入的一段。
- shift = 100:导演放飞了,AI 随便开场,结果女孩可能一开始发呆、闪现、乱动,全靠 AI 自编自导。
在这个场景中,左边(shift=0)和中间(shift=10)的画面中,女孩的奔跑依然保持从左到右的自然连贯感,动作顺畅,具备明显的时间推进逻辑。
但到了右边(shift=20),女孩的动作更像是在原地踏步,缺乏方向性的移动,整体时间感变得模糊。而背景中的海水细节也明显减少,原本有层次的波浪被简化成一条模糊的线条,视觉复杂度下降。
latent_window_size决定了在生成视频 latent(潜变量)时,每个时间帧可以“看到”前后多少帧的上下文信息。值越大,则可以提供更多时序上下文信息,提升视频的连贯性。左边latent_window_size=5,中间latent_window_size=9,右边latent_window_size=12,latent_window_size=5时可以明显的看出人物动作不连贯。
gpu_memory_preservation 用于预留一定的 GPU 内存,以确保有足够的内存来解码生成的视频。如果预留的内存越少,可以将更多的 GPU 内存分配给视频采样,从而减少采样时间。然而,预留内存过少可能导致解码时显存不足,从而引发错误。
gpu_memory_preservation =4
gpu_memory_preservation=6
unipc_bh1:使用简单的线性时间步长调整。 B_h = hh
unipc_bh2:使用指数增长的时间步长调整。 B_h = torch.expm1(hh)
如果目标是平稳、自然的过渡,unipc_bh1是更好的选择;如果需要更为复杂和动态的表现,unipc_bh2可能会带来更好的效果。