简介:本文说明如何在节点式工作流中,用分阶段采样降低高分辨率长视频的显存峰值。读者将掌握低分辨率预热、潜空间放大和高分辨率精修的执行顺序,学会接入稀疏注意力节点与采样器节点,并通过参数表、显存记录、OOM排查清单和结果验收完成调试。
本教程说明如何搭建一条分阶段采样链路,让视频生成模型在较高分辨率下生成较长视频,同时压低显存峰值。完成后,你应能够:
本方案不减少采样步数,也不引入额外的噪声调度。收益来自错开显存峰值,而非减少计算量。实际节省多少显存取决于模型结构、分辨率、帧数和节点实现。本文不给出固定百分比,请以你自己的基线对比结果为准。
本文适合以下读者:
阅读前建议已了解潜空间、采样器和去噪步数等基础概念。
适用场景包括:单张显卡的显存不足以一次承载目标分辨率下的稠密注意力计算;视频较长,远处主体容易变形,参考图细节容易被机械复制;希望保持原有采样步数,不额外增加迭代次数。
去噪通常在潜空间中进行。视频潜空间的尺寸由分辨率和帧数决定,分辨率越高、帧数越多,token 数量越大。注意力计算的显存开销随 token 数增长更快,因此峰值通常出现在采样初期,此时注意力仍是稠密计算。
分阶段采样把一轮采样拆成三段:
大潜空间进场时,稠密预热和模型加载已经结束,两者不会叠加在同一时段。
切换点由节点实现决定,常见有三种方式:
操作时先打开分阶段采样节点的参数面板。若存在切换比例或 sigma 阈值,按参数表设置。没有现成默认值时,可在总步数的 20% 至 40% 之间取一个值作为试验起点,并记录显存曲线。
若面板没有任何切换参数,切换由节点固定。此时通过显存曲线判断切换是否发生:预热段结束后,峰值应回落,放大时显存再次上升。若曲线没有这个形态,说明切换没有按预期执行,应检查接线和节点版本。
放大倍数决定 token 增长幅度。若宽高各乘以倍数 s,空间 token 数量约为原来的 s² 倍。加入时间维度后,增长更明显。实际显存占用还取决于模型结构,应以实测数据为准。
| 放大倍数 s | 空间 token 倍数(s²) | 风险(经验判断) | 适用条件 |
|---|---|---|---|
| 1.2 | 约 1.44 | 低 | 首次试验 |
| 1.5 | 约 2.25 | 中 | 1.2 倍运行稳定后 |
| 2.0 | 约 4.00 | 高 | 显存余量充足,且已有实测数据 |
下面的代码可以估算放大后的尺寸,并检查尺寸是否满足模型要求:
def plan_latent_size(base_w: int, base_h: int, scale: float, multiple: int = 8):out_w = round(base_w * scale)out_h = round(base_h * scale)token_ratio = scale ** 2valid = out_w % multiple == 0 and out_h % multiple == 0return out_w, out_h, round(token_ratio, 2), validprint(plan_latent_size(80, 40, 1.2)) # (96, 48, 1.44, True)print(plan_latent_size(80, 40, 1.5)) # (120, 60, 2.25, False)print(plan_latent_size(80, 48, 1.5)) # (120, 72, 2.25, True)
示例中,初始潜空间为 80×40 时,放大 1.2 倍得到 96×48,二者都是 8 的倍数。放大 1.5 倍则得到 120×60,高度不满足要求。此时应把初始高度改为 48,得到 120×72。不同节点的取整方式可能不同,且有些模型要求 16 的倍数,请以所用节点说明为准。
把节点包放入平台