项目简介
StreamDiffusion 是一种新型实时扩散管道,用于交互式图像生成,能够改善直播流和类似场景的性能。它用更快的批处理过程替代了传统的顺序去噪,引入了并行输入输出队列以实现更平稳的操作。该管道还采用了一种新颖的残差无分类引导方法,减少了去噪步骤并提高了速度。此外,它还集成了一种随机相似性滤波器,以提高功率效率。
总体来说,StreamDiffusion 实现了高达 1.5 倍的处理速度加快,以及在采用 RCFG(残差无分类引导)情况下高达 2.05 倍的速度提升,在 RTX4090 GPU 上可达到 91.07fps。它还显著降低了能源消耗,使其成为实时图像生成的更高效解决方案。
主要特征
-
流批处理 通过高效的批处理操作简化数据处理。
-
无残差分类器指导 改进的引导机制可最大限度地减少计算冗余。
-
随机相似性过滤器 通过先进的过滤技术提高GPU利用效率。
-
IO队列 有效管理输入和输出操作,以实现更顺畅的执行。
-
KV-Cache 的预计算 优化缓存策略以加速处理。
-
模型加速工具 利用各种工具进行模型优化和性能提升。
StreamDiffusion 管道
流批处理的概念。在这个方法中,不会等待单个图像完全去噪后再处理下一个输入图像,而是在每个去噪步骤后接受下一个输入图像。这样就创建了一个去噪批次,其中每个图像的去噪步骤是交错的。通过将这些交错的去噪步骤串联成一个批次,我们可以利用 U-Net 进行批处理,有效地处理连续输入。在时间步长 t 编码的输入图像在时间步长 t + n 生成并解码,其中 n 是去噪步骤的数量。
批量处理去噪步骤
虚拟残差噪声向量:橙色向量表示从 PF ODE 轨迹出发并指向原始输入潜变量 Xo 的虚拟残差噪声。
传统扩散模型依赖于顺序去噪步骤,每增加一步,处理时间线性增加,特别是在 U-Net 框架中。然而,更高保真度的图像需要更多的去噪步骤,导致更高的延迟。
Stream Batch 通过将顺序去噪重构为批处理过程来解决这个问题。每个批次对应一定数量的去噪步骤,允许批次中的每个元素在单次 U-Net 传递中完成去噪序列中的一步。这种方法以更流畅的方式将特定时间步长的输入图像转换为未来时间步长的图像到图像结果。
这种方法显著减少了对多次 U-Net 推理的需求,并避免了处理时间随步骤数线性增加的问题。关键的权衡从处理时间与生成质量转变为 VRAM 容量与生成质量。有足够的 VRAM,可以在单个 U-Net 处理周期内生成高质量图像,有效缓解了由增加去噪步骤引起的延迟问题。
残差无分类引导(RCFG)
传统的无分类引导(CFG)通过调整条件项的影响来改善图像生成,但它需要对每次推理进行多次计算成本高昂的 U-Net 模型传递。RCFG 通过引入虚拟残差噪声的概念来解决这个问题,该噪声用于从生成过程中的给定点预测原始输入图像的潜在表示。这种方法允许有效的图像生成,根据引导比例偏离原始图像,无需额外的 U-Net 计算。这个过程被称为自负面 RCFG。
此外,RCFG 还可以用于偏离任何负面条件,只需在第一步去噪时计算一次负面条件的残差噪声,并在整个过程中使用这种噪声(一次性负面 RCFG)。这种方法显著减少了计算负担,与传统 CFG 所需的 2n 次计算相比,自负面和一次性负面 RCFG 分别只需要 n 或 n+1 次 U-Net 计算。这使 RCFG 在保持或提升生成图像的质量的同时,更加高效。
输入输出队列
输入输出队列:将输入图像转换为管道可以管理的张量数据格式的过程,反之亦然,将解码的张量转换回输出图像需要额外的处理时间,并非微不足道。为了避免将这些图像处理时间添加到瓶颈过程,即神经网络推理过程中,我们将图像预处理和后处理分离到不同的线程中,允许并行处理。此外,通过使用输入张量队列,我们可以应对由于设备故障或通信错误而导致的输入图像暂时中断,从而实现平稳流媒体。
高速图像生成系统通过将不需要神经网络处理的任务(如图像的预处理和后处理)转移到主管道之外并行处理来进行优化。输入图像经过缩放、张量转换和标准化等操作。为了协调人类输入和模型吞吐量的不同处理速度,作者实现了一个输入输出队列系统。这些队列处理扩散模型的输入张量,然后通过 VAE 编码器进行图像生成。VAE 解码器的输出张量进入输出队列进行后处理和格式转换,然后发送到渲染客户端。这种策略提高了系统效率,加快了图像生成速度。
模型加速和微型自动编码器
GPU 使用率对比(静态场景下)。(GPU:RTX3060,帧数:20)蓝线代表开启随机相似性滤波(SSF)时的 GPU 使用率,橘黄线表示未使用 SSF 时的 GPU 使用率,红线表示基于输入帧间余弦相似度计算的跳过概率。此外,图表顶部显示了与相同时间戳对应的输入图像。在这种情况下,输入图像中的角色仅在眨眼。因此,这项分析比较了静态场景下的 GPU 使用率。
U-Net 和 VAE 引擎是使用 TensorRT 构建的。为了进一步优化速度,作者使用了静态批次大小和固定输入尺寸,这优化了针对特定输入大小的计算图和内存分配,从而实现了更快的处理时间。然而,这种方法的灵活性较低,需要进行批次大小和输入大小的静态调整。
结论
通过在扩散模型的基础上引入 Stream Batch、RCFG 和 SSF 等技术,StreamDiffusion 管道实现了显著的性能提升。实验结果表明,与传统 CFG 相比,RCFG 使处理速度提高了 1.5 倍。StreamDiffusion 在处理相同图像数量时,在 RTX4090 上实现了 91.07fps 的速度,能源效率也得到了显著提升。尽管该管道需要更多的 VRAM,但它的整体性能提升和能效优化使其成为实时图像生成领域的创新解决方案。