如前所述,扩散模型通过迭代细化过程生成高质量数据。此过程从噪声开始,并分多步逐步去噪,通常由提示或条件引导。尽管功能强大,但这种迭代特性是推理过程中性能瓶颈的主要原因。与仅需一次正向传播的模型不同,扩散模型会多次执行核心计算循环。清晰了解时间与资源在此循环中的使用情况,对实现有效优化非常重要。推理过程,常被称为采样,通常包含以下阶段,重复 $N$ 次($N$ 值可从10到超过1000,具体取决于采样器):噪声预测:一个神经网络,通常采用U-Net架构,将当前噪声数据(例如,步骤 $t$ 的噪声图像)和当前步骤索引 $t$(以及可能的条件信息,如文本嵌入)作为输入。它的目的是预测为达到此状态而添加的噪声。去噪步骤:利用预测的噪声和预定义的噪声时间表,采样器算法计算步骤 $t-1$ 时噪声较少的数据的估计值。迭代:步骤2的输出成为下一次迭代(步骤 $t-1$)的输入。此循环持续进行,直到 $t=0$,生成最终输出。我们来分析此过程中的主要瓶颈。重复的神经网络评估到目前为止,最突出的瓶颈是噪声预测网络(U-Net)的重复执行。这个网络通常非常大,包含数十亿参数和计算开销大的操作,如自注意力机制,尤其是在生成高分辨率图像时。考虑一个常见情况:使用DDIM采样器和50步的Stable Diffusion模型生成一张512x512图像。这意味着核心U-Net,连同文本编码器(如果提供了提示)以及可能的VAE解码器,必须为单次图像生成执行50次正向传播。每次传播都涉及数十亿次浮点运算(FLOPs)。digraph G { rankdir=LR; node [shape=box, style=filled, fillcolor="#e9ecef", fontname="sans-serif"]; edge [color="#495057", fontname="sans-serif"]; Start [label="输入\n(t, 噪声图像_t, 条件)", shape=ellipse, fillcolor="#a5d8ff"]; UNet [label="U-Net 正向传播\n(数十亿次浮点运算)", fillcolor="#ffc9c9", height=1.5, width=2.5, fontsize=11]; SamplerLogic [label="采样器计算\n(相对轻量)", fillcolor="#b2f2bb", fontsize=11]; End [label="输出\n(图像_{t-1})", shape=ellipse, fillcolor="#a5d8ff"]; Start -> UNet; UNet -> SamplerLogic [label="预测噪声"]; Start -> SamplerLogic [style=dashed]; // 采样器也需要 t 和噪声图像_t SamplerLogic -> End; subgraph cluster_loop { label = "执行N次 (例如, N=50)"; style=dashed; color="#adb5bd"; fontsize=10; fontname="sans-serif"; UNet; SamplerLogic; } }扩散模型采样的核心循环。U-Net正向传播占据了主要的计算开销,并为每个生成请求重复执行。这种重复的繁重计算直接影响:延迟:生成单张图像所需时间大致与采样步数乘以每次U-Net评估所需时间成正比。吞吐量:在给定硬件配置下,单位时间内可生成的图像数量与每张图像的延迟成反比。成本:长期运行GPU等昂贵硬件会产生高昂的运营成本。模型大小、内存使用和带宽扩散模型,尤其是最先进的版本,通常很大。参数以16位浮点格式(FP16)存储的模型,可以轻松占用数GB存储空间,并且仅加载权重就需要大量GPU显存(VRAM)。在U-Net的正向传播过程中,称为激活的中间结果也必须存储在VRAM中。对于高分辨率图像和复杂架构(例如具有许多注意力层的架构),激活所需的内存可能超过权重本身所需的内存。这导致了几个与内存相关的瓶颈:显存容量:所需的总显存(权重 + 激活 + 可能的其他缓冲区)决定了所需GPU的最低类别。显存不足会完全阻止推理或迫使采用缓慢的变通方法。内存带宽:在GPU计算单元与其显存之间持续读取模型权重和读写激活会消耗内存带宽。现代GPU上的高带宽内存(HBM)非常重要,但它仍然可能成为限制因素,特别是在计算本身非常快的情况下。缓慢的数据移动会导致计算单元空闲,从而降低整体效率。模型加载时间:将大型模型权重从存储(例如,磁盘或网络存储)加载到GPU显存的初始时间会增加冷启动延迟,尤其是在无服务器或缩减到零的场景中。采样步数采样器算法的选择直接影响U-Net必须评估的次数($N$)。早期采样器,如DDPM,需要数百甚至数千步。较新的采样器(DDIM、PNDM、DPM-Solver++等)在少得多的步数(例如10-50步)内就能取得良好效果,大幅减少了总计算量。然而,即使是20步也代表20次完整的U-Net评估。在不牺牲输出质量的前提下进一步减少 $N$ 是采样器优化的主要目标。步骤间的串行依赖在采样循环中,计算步骤 $t-1$ 的状态通常需要步骤 $t$ 的结果。这种固有的序列依赖性使得为单张图像生成在不同时间步之间并行化计算变得困难。尽管单个U-Net正向传播内的操作可以在GPU上高度并行化,但整个过程从一步到另一步仍主要呈串行。这限制了加快每个单独步骤的延迟降低潜力。了解这些核心瓶颈,U-Net计算的主导地位,对内存大小和带宽的需求,采样步数的影响,以及过程的串行特性,是实现优化的第一步。后续章节将介绍量化、蒸馏、采样器改进以及硬件/编译器优化等技术,这些技术专门设计用于缓解这些痛点,使扩散模型推理更快、更具成本效益。