想象你站在山顶民宿门口,要下山去山脚的公交站。第一条路是盘山公路:弯道一个接一个,每转一个弯都要重新看路牌,走了整整 50 个弯才到——这就是传统扩散模型生成一张图的过程:从一团噪声出发,沿着弯弯曲曲的路径慢慢“还原”出图像,每一步都要让神经网络算一次方向,慢得让人着急。这时候来了一位老司机,他载你走了一趟之后,把全程轨迹记了下来:原来从山顶到山脚可以切成几段大直线!下次再走,他只需要在 3-4 个路口轻轻点一下方向,“嗖”地就到了。这位老司机就是本文主角——Rectified Flow(整流流)。它把扩散模型弯曲的生成路径“拉直”,让生成图像和视频从几十步骤降到 1-4 步,速度提升一个数量级。

岗位关联

掌握整流流,等于掌握扩散模型加速的核心钥匙。无论是面试中回答“如何让生成模型变快”,还是落地实时图像/视频生成系统,你都能直接给出“拉直路径、1-4 步采样”的清晰答案。

目录
  1. 可视化演示
  2. 1. 生成模型背景:弯弯绕绕的盘山公路
  3. 2. 整流流原理:两点之间画直线
  4. 3. 整流操作:重新配对,记录新路线
  5. 4. Reflow 重整流:多跑几趟,越拉越直
  6. 5. 蒸馏加速:把直路教给新人司机
  7. 6. 模型对比:各家下山的招数
  8. 7. 应用实践:从盘山公路到高速公路
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示弯曲ODE路径与整流直线化路径对比、迭代整流逐步拉直过程、1-4步快速生成与DDIM加速效果对比,通过模式切换理解整流流如何实现少步快速生成。

本节配有交互动效(进入视口后自动加载,约 3KB)。

路径对比:弯曲ODE vs 整流直线 传统扩散模型的ODE路径高度弯曲,需要数百步小步长逐步去噪 Rectified Flow通过整流操作将弯曲路径拉直为近似直线,大步长跳跃即可生成 z_t = (1-t)·x_0 + t·ε, 直线路径 → 少步ODE求解 直线化路径使1-4步生成成为可能,加速数十倍

1. 生成模型背景:弯弯绕绕的盘山公路

想象你第一次开车下山:山顶民宿门口是起点(纯噪声),山脚公交站是终点(一张真实图片)。师傅说这条路是盘山公路,弯道特别多,每转一个弯都得停下来看路牌——看一次路牌,就是神经网络做一次推理。传统扩散模型就是这样的司机:训练时它学会了“如何把一张图逐步加噪成纯噪声”,生成时反着走,每走一小段就问一次模型“下一步该往哪偏”。

这条下山的路线在数学上叫 ODE 路径(常微分方程路径)。生成过程就是沿这条路径做欧拉离散:状态 $x_t$ 表示“走到一半的中间样本”,速度场 $v_\theta$ 负责告诉它此刻的方向。方向越复杂、路越弯,每一步就得迈得越小——传统扩散模型通常需要 20~1000 步,每步一次完整推理。

问题根源很清楚:弯道太多。整流流的思路不是让司机开得更猛,而是把盘山公路改造成直线高速公路——这正是 "Rectify" 的本意:拉直、矫正。

xt+Δt=xt+Δt⋅vθ(xt,t)\displaystyle x_{t+\Delta t} = x_t + \Delta t \cdot v_\theta(x_t, t)
  1. 当前状态 $x_t$表示生成进行到 $t$ 时刻的中间样本,处于噪声与数据之间。
    xt∈Rdx_t \in \mathbb{R}^{d}
  2. 步长 $\Delta t$相邻两次采样点之间的间隔,间隔越小步数越多。
    Δt=1N\Delta t = \frac{1}{N}
  3. 速度场 $v_\theta(x_t, t)$神经网络预测的下一步移动方向和大小。
    vθ: Rd×[0,1]→Rdv_\theta:\ \mathbb{R}^{d}\times[0,1]\to\mathbb{R}^{d}
  4. 欧拉更新沿速度场方向走一小步,得到下一时刻状态。
    xt+Δt=xt+Δt⋅vθ(xt,t)x_{t+\Delta t} = x_t + \Delta t \cdot v_\theta(x_t, t)

2. 整流流原理:两点之间画直线

老司机的想法很简单:既然每天都从山顶民宿出发去山脚公交站,为什么不直接在起终点之间画一条直线?只要在直线上竖几根笔直的路标,开车就是一路直行,油门踩到底都不用打方向盘。

整流流(Rectified Flow)做的正是这件事。它不再沿用扩散模型的曲线噪声化过程,而是直接在噪声分布 $X_0$ 与数据分布 $X_1$ 之间定义“直线插值路径”:任意中间时刻的状态,是起点乘以 $(1-t)$、终点乘以 $t$ 的加权混合。路径天生是直的。

既然路径是直线,那么沿路径的速度也应该是常数:不论走到哪里,方向永远是“终点减起点”。神经网络要学的速度场 $v_\theta$ 只有一个目标——在所有中间状态上输出 $X_1 - X_0$ 这个固定方向。

立好直线路标之后,剩下的问题只有一个:我们并不知道每个噪声点对应的“终点”是谁。于是有了整流操作。

Xt=(1−t)X0+tX1\displaystyle X_t = (1-t)X_0 + tX_1
  1. 终点减起点直线路径上每个点的速度方向都相同,都是 $X_1-X_0$。
    v=X1−X0v = X_1 - X_0
  2. 常数方向速度不随进度 $t$ 改变,这正是“直路”的数学含义。
    ∂v∂t=0\frac{\partial v}{\partial t} = 0
  3. 速度场意义站在直线中间任意位置,箭头都直指终点,司机只需一路直行。

3. 整流操作:重新配对,记录新路线

第一趟下山时,老司机也走的是盘山公路。但他留了个心眼:每到一个新起点,记录下自己实际到达的位置。走完这趟,他的小本子上写满了“从这个噪声出发,实际到了那张图”的配对。下次,他不再绕弯道,直接在每对起终点之间拉直线。

这就是整流操作(Rectification):先用旧的弯曲模型从一批噪声 $X_0$ 出发,完整跑一遍 ODE,得到一批“实际到达”的终点 $\hat{X}_1$;然后丢掉旧模型的轨迹,只用 $(X_0, \hat{X}_1)$ 这些配对,重新训练一个学直线速度场的新模型。

注意,旧模型内部跑了多少步并不重要——整流后的新模型只关心“起点到终点”这条新的直线。它把旧模型一整条弯弯曲曲的轨迹,压缩成了一段直线。

min⁡θ E(X0,X1)∼π[∥vθ((1−t)X0+tX1, t)−(X1−X0)∥2]\displaystyle \min_{\theta}\ \mathbb{E}_{(X_0, X_1)\sim\pi}\left[\left\|v_\theta\big((1-t)X_0+tX_1,\, t\big) - (X_1 - X_0)\right\|^2\right]
  1. 配对分布 $\pi$由整流采样得到的噪声-终点配对。
    π=Law(X0,X^1)\pi = \mathrm{Law}(X_0, \hat{X}_1)
  2. 中间态输入把 $(1-t)X_0+tX_1$ 喂给网络,让它预测速度。
    Xt=(1−t)X0+tX1X_t = (1-t)X_0 + tX_1
  3. 目标速度 $X_1-X_0$直线运动的真实方向。
    X1−X0X_1 - X_0
  4. 均方误差网络预测与实际方向的平方距离,越小越准。
    ∥vθ−(X1−X0)∥2\left\|v_\theta - (X_1-X_0)\right\|^2
  5. 期望与最小化对所有配对、所有时间点求平均损失,用梯度下降训练。

4. Reflow 重整流:多跑几趟,越拉越直

第一轮拉直后的路好走了不少,但老司机仔细看,发现一个问题:两辆车从不同起点出发,走到半路居然会“换道交叉”——说明起终点配对还不是最优的。于是他决定:沿着这条新直线路再跑一遍,记录新配对,再拉一次直线。就这样一轮一轮下去,路线一条比一条直。

这就是 Reflow(重整流):反复执行“用当前模型生成终点、重新配对、再训练”的循环。每一轮都让噪声-数据配对更接近最优传输(OT)耦合;配对越优,路径交叉越少,弯曲度越低。理论上,当配对达到最优传输时,所有生成路径会退化为互不交叉的完美直线。

老司机的经验总结成一句话:直路不是天上掉下来的,是照着上一版路线再抄一次近道,抄着抄着就直了。

X1(k+1)=X0+∫01v(k)(Xt(k), t) dt\displaystyle X_1^{(k+1)} = X_0 + \int_{0}^{1} v^{(k)}\big(X_t^{(k)},\, t\big)\,\mathrm{d}t
  1. 上一轮速度场 $v^{(k)}$第 $k$ 轮整流学到的模型。
    v(k):Rd×[0,1]→Rdv^{(k)}: \mathbb{R}^{d}\times[0,1]\to\mathbb{R}^{d}
  2. ODE 求解从起点 $X_0$ 沿速度场积分到 $t=1$,得到新终点。
    dXt=v(k)(Xt,t) dt\mathrm{d}X_t = v^{(k)}(X_t, t)\,\mathrm{d}t
  3. 新配对$(X_0, X_1^{(k+1)})$ 构成下一轮的训练数据。
    (X0,X1(k+1))∼π(k+1)(X_0, X_1^{(k+1)}) \sim \pi^{(k+1)}
  4. 迭代拉直$k$ 每加 1,路径弯曲度下降,逼近最优传输。

5. 蒸馏加速:把直路教给新人司机

路线拉直后,开车就变成了一件极其简单的事:从 A 点一脚油门到 B 点。这时候再让一个“新人司机”上岗——他不用看沿途路标,只需要记住“起点和终点之间的直线”。新人就是学生模型,教他的过程就是蒸馏。

蒸馏(Distillation)的做法是:把已经拉直的多步整流模型当作老师,用它生成海量的 $(X_0, X_1)$ 配对,再训练一个学生网络 $g_\phi$:输入噪声 $X_0$,直接输出最终图像 $X_1$。因为老师的路径接近直线,学生模型用 1 步就能逼近老师 4 步的效果。

整流负责把路修直,蒸馏负责让新人司机学会直路——两者叠加,就出现了 InstaFlow、SD-Turbo 这样 1-2 步出图的模型。

min⁡ϕ EX0[∥gϕ(X0)−X1(K)∥2]\displaystyle \min_{\phi}\ \mathbb{E}_{X_0}\left[\left\|g_\phi(X_0) - X_1^{(K)}\right\|^2\right]
  1. 学生模型 $g_\phi$单步生成网络,输入噪声直接输出结果。
    gϕ:Rd→Rdg_\phi: \mathbb{R}^{d}\to\mathbb{R}^{d}
  2. 老师终点 $X_1^{(K)}$经 $K$ 轮整流后的模型生成的目标。
    X1(K)=ODEv(K)(X0)X_1^{(K)} = \text{ODE}_{v^{(K)}}(X_0)
  3. 一步映射学生不再分多步,一步从噪声跳到数据。
    X^1=gϕ(X0)\hat{X}_1 = g_\phi(X_0)
  4. 蒸馏损失让学生输出贴近老师输出,完成知识迁移。
    E∥gϕ(X0)−X1(K)∥2\mathbb{E}\|g_\phi(X_0) - X_1^{(K)}\|^2

6. 模型对比:各家下山的招数

同样是解决下山慢的问题,各家招数不同。DDIM 像开快车的司机:不打方向盘的路段猛踩油门(确定性采样、扩大步长),但弯道还是得减速,通常仍需 10~50 步。一致性模型像只盯导航的司机:理论上一眼看到终点,但遇到复杂岔路容易慌,训练也不简单。整流流是施工队:直接把路修直,之后谁开都快。

三者的核心差别在于“路径”与“采样器”谁先改变。DDIM 只改采样器、不改变弯曲路径;一致性模型强行学习“任意时刻一步跳到终点”的自洽函数;整流流通过重新配对训练,让路径本身变直。整流流还保留了 ODE 确定性的优点:同一个噪声总是映射到同一张图,天然支持图像编辑和插值。

所以在“少步生成”的赛道上,整流流的路线最朴素也最稳:先修路,再谈速度。

X1=X0+v(X0,0)\displaystyle X_1 = X_0 + v(X_0, 0)
  1. 一步欧拉步长取整个区间 $\Delta t=1$,只走一大步。
    Δt=1\Delta t = 1
  2. 直线精确若路径是直线,这一步就是精确解,误差为零。
    截断误差=0\text{截断误差} = 0
  3. 弯曲误差路径越弯,这种大步长截断误差越大,所以必须先拉直。
    截断误差∝路径弯曲度\text{截断误差} \propto \text{路径弯曲度}

7. 应用实践:从盘山公路到高速公路

高速公路修通之后,运货、送人、拍视频都成了顺风车。整流流的意义正在于把“生成慢”这个瓶颈从根上拆掉:延迟降一个数量级,算力成本同步下降,实时生成终于能在消费级硬件上落地。

在文生图领域,Stable Diffusion 这类模型接上整流流(如 InstaFlow、SD-Turbo)后,从 50 步降到 4 步甚至 1 步,消费级 GPU 上单张图从十几秒压缩到一秒以内;文生视频因为要逐帧生成,收益被帧数放大——比如把 50 步降到 4 步,一个 30 帧的视频总推理量直接减少 90% 以上,AI 视频工具的实时预览成为可能。

当别人还在盘山公路上数着弯道时,整流流的用户已经到山脚喝咖啡了。这条“直线高速公路”,就是少步快速生成最实在的答案。

xn+1=xn+1N v(xn,tn),N∈{1,2,4}\displaystyle x_{n+1} = x_n + \frac{1}{N}\, v(x_n, t_n),\quad N\in\{1, 2, 4\}
  1. 步数 $N$整流后可取 1、2、4 等很少的步数。
    N≪50N \ll 50
  2. 均匀步长 $\frac{1}{N}$把时间轴 $[0,1]$ 均分,每步走 $1/N$。
    Δt=1N\Delta t = \frac{1}{N}
  3. 直线红利路径直时大步长也不跑偏,延迟与算力同比例下降。
    推理量∝N\text{推理量} \propto N

AI 应用场景

场景1:文生图实时海报生成(电商设计)

阶段:推理部署与采样加速

解决的问题:传统 Stable Diffusion 生成一张 512×512 图需 20-50 步采样,消费级 GPU 上耗时数秒到十几秒,设计师反复调提示词一次要等很久。整流流把路径拉直后,4 步即可达到相当质量,单张图延迟降到 1 秒内,交互式出图成为可能。

具体案例:某电商设计平台接入整流流加速的 LoRA 模型,用户输入“夏日海滩防晒霜海报”后 0.8 秒得到初稿,再基于确定性映射微调,比原来 8 秒缩短 90%。

场景2:文生视频实时预览(短视频创作)

阶段:生成管线优化

解决的问题:视频生成是逐帧扩散,30 帧视频若每帧 50 步,推理量是单图的 30-50 倍,几十分钟才能渲染几秒视频。整流流 1-4 步让帧生成成本下降一个数量级,配合流水线并行,短视频可实时预览。

具体案例:某 AI 视频工具用整流流蒸馏后的模型生成 4 秒 720p 片段,从 40 分钟降到 3 分钟;后续版本部署到 RTX 4090 实现“边输提示词边出画面”。

场景3:端侧实时生成(手机/边缘设备)

阶段:模型压缩与端侧部署

解决的问题:手机 NPU 算力有限,50 步扩散几乎不可用;整流流 1-2 步生成把单次推理压缩到一次前向传播,再配合量化,让“手机本地文生图/图像编辑”成为可能,数据不出设备,隐私更好。

具体案例:某手机厂商在端侧部署整流流模型,用户拍摄照片后 1 步完成“夜间增强”风格的确定性编辑,全程离线,响应时间 500ms 内。

Python 演示

python58 行
import numpy as np def sample_data(n, seed):    rng = np.random.default_rng(seed)    z = rng.normal(size=(n, 2))                    # 噪声分布 X0    x = np.array([1.5, 0.0]) + rng.normal(size=(n, 2)) @ np.array([[1.0, 0.8], [0.8, 1.0]])    return z, x def features(xt, t):    return np.hstack([np.ones((len(xt), 1)), xt, t, t * xt]) def train_field(z, x, seed=7):    rng = np.random.default_rng(seed)    n = z.shape[0]    t = rng.uniform(0, 1, (n, 1))                  # 随机采样时间点    xt = (1 - t) * z + t * x                       # 线性插值中间态    phi = features(xt, t)                          # 特征矩阵    target = x - z                                 # 直线速度场目标    theta = np.linalg.solve(phi.T @ phi + 1e-3 * np.eye(phi.shape[1]), phi.T @ target)    return theta def transport(z, theta, steps):    xt = z.copy()    dt = 1.0 / steps    for i in range(steps):        tt = np.full((z.shape[0], 1), i * dt)        xt = xt + dt * (features(xt, tt) @ theta)  # 欧拉法沿速度场前进    return xt def dist_err(samples, ref):    m = np.abs(samples.mean(axis=0) - ref.mean(axis=0)).mean()    c = np.abs(np.cov(samples.T) - np.cov(ref.T)).mean()    return m + c def min_steps(z, theta, x):    base = dist_err(transport(z, theta, 40), x)    for s in [20, 10, 5, 2, 1]:        if dist_err(transport(z, theta, s), x) < base * 1.1:            return s    return 40 def main():    z, x = sample_data(2000, 42)    theta0 = train_field(z, x)                     # 独立配对: 弯曲路径    s0 = min_steps(z, theta0, x)    x1 = transport(z, theta0, s0)    theta1 = train_field(z, x1)                    # 第1轮整流: 重新配对    s1 = min_steps(z, theta1, x)    x2 = transport(z, theta1, s1)    theta2 = train_field(z, x2)                    # 第2轮整流: 再拉直    s2 = min_steps(z, theta2, x)    print("0轮整流(独立配对): 需要", s0, "步达到目标分布")    print("1轮整流后:         需要", s1, "步")    print("2轮整流后:         需要", s2, "步")    print("结论: 整流把所需步数从", s0, "降到", s2, "路径被逐步拉直") if __name__ == "__main__":    main()
目的:用二维高斯分布做最小示例,演示整流流“重新配对 → 再训练 → 路径变直 → 所需步数下降”的核心循环(真实场景中速度场用神经网络拟合)。
  1. xt = (1 - t) * z + t * x构造噪声到数据的直线中间态
  2. target = x - z直线路径的恒定速度方向
  3. theta = np.linalg.solve(...)最小二乘拟合速度场参数
  4. xt = xt + dt * (features(xt, tt) @ theta)欧拉法沿速度场走一步
  5. theta1 = train_field(z, x1)用新终点重新配对训练,完成一次整流
  6. min_steps(z, theta, x)统计要多少步才能逼近目标分布
  7. if __name__ == "__main__": main()可执行入口

常见误区

误区整流流是不是就是把扩散模型的采样步数从 50 改成 4?反正都是少跑几步,改个参数就行。

正解不是。直接在弯曲路径上减少步数,相当于在盘山公路上加速转弯——每一步都沿切线冲出去,误差会急剧放大。整流流是重新训练模型,把路径本身拉直,让大步长在数学上误差很小。不修路只踩油门,弯道必然翻车。

为何常见:因为两者最终都表现为“用更少步数生成”,表面相似,实际一个是改采样器,一个是改模型。

误区Reflow 多整流几轮肯定更好,反正就是再训练一次,多来几轮直接一步生成。

正解每轮整流都要用当前模型跑完整条 ODE 生成新配对样本,计算成本并不低;且路径弯曲度的下降很快衰减,第 4 轮以后提升微乎其微,还可能过拟合到旧模型。实践中 2-3 轮加上蒸馏最划算。

为何常见:看到“迭代拉直”就以为白得收益,忽略了每轮都要生成大量样本的训练成本。

误区整流流和一致性模型不都是少步生成吗?应该是一回事。

正解原理不同。一致性模型学习的是“任意中间时刻一步跳到终点”的自洽函数约束;整流流靠“重新采样配对”逐步让路径变直,并没有强制一步映射。整流流可以配合蒸馏到 1 步,但核心卖点是路径直线化与确定性的可编辑性。

为何常见:两个方法常出现在同一篇“扩散加速”综述里,读者容易把它们混为一谈。

误区1-4 步生成的图肯定比 50 步模糊很多,少步只是理论好看。

正解对弯曲路径确实如此,但整流流拉直后,大步长欧拉法的离散误差大幅下降;在相同生成质量下,整流流 1-4 步可与传统 50 步相当,甚至在 FID 上反超,因为路径更直。质量瓶颈从步数转移到了模型容量和配对最优性。

为何常见:直觉上觉得“步数 = 精度”,忽略了误差真正的来源是路径弯曲导致的截断误差。

面试题

Q1. 整流流解决的核心问题是?

单选题 · easy

  • A.训练数据过少难以收敛
  • B.路径弯曲导致采样过慢← 正确答案
  • C.模型参数量过大难部署
  • D.生成图片分辨率不够高

答案:B。整流流的核心是把弯曲的 ODE 生成路径拉直,路径直了之后大步长采样也不会偏离,所以采样步数能从几十步降到 1-4 步。选项 A 是数据问题,C 是模型容量问题,D 是分辨率问题,都与“生成慢”不直接相关。

Q2. 整流流中,噪声到数据的直线插值用哪个公式?

单选题 · easy

  • A.X_t=(1-t)X_0+tX_1← 正确答案
  • B.X_t=tX_0+(1-t)X_1
  • C.X_t=2tX_0+(1-t)X_1
  • D.X_t=(X_0-X_1)乘以t

答案:A。整流流定义噪声到数据的直线插值:中间状态是 (1-t) 比例的噪声加 t 比例的数据,t=0 时是纯噪声,t=1 时是纯数据。B 把系数交换了,C 和 D 都不是直线插值,无法保证路径平直。

Q3. 整流流学到的速度场目标是逼近?

单选题 · easy

  • A.学速度场逼近 X_1 减 X_0← 正确答案
  • B.学速度场逼近 X_1 加 X_0
  • C.学速度场逼近 X_0 减 X_1
  • D.学速度场逼近负 X_1 减 X_0

答案:A。直线路径上速度恒定,方向就是“终点减起点”即 X_1-X_0。神经网络学到的速度场只要沿着这个方向,欧拉大步长也能精确到达。其余选项方向反了或加错了,都会让路径倒退或绕路。

Q4. “整流操作”中的重新配对是指?

单选题 · mid

  • A.用随机噪声作为新的终点
  • B.旧模型生成终点与新起点配对← 正确答案
  • C.把数据按类别标签重新排序
  • D.直接丢弃所有带噪声的样本

答案:B。整流操作的关键是“用旧模型跑一遍,把实际到达的位置作为新终点”,即用 (X_0, X̂_1) 重新配对训练。A 用随机噪声当终点无法学到真实数据分布,C 和 D 与拉直路径无关。

Q5. Reflow 多轮整流的主要效果是?

单选题 · mid

  • A.让噪声与数据路径交叉更多
  • B.让路径逐步趋近于完美直线← 正确答案
  • C.让生成模型的参数量翻倍
  • D.让训练数据分布更加多样

答案:B。Reflow 每轮都改变噪声-数据配对,让配对逐步逼近最优传输,路径交叉减少,弯曲度趋近于零。选项 A 说反了,C 和 D 与重整流无关。

Q6. 弯曲路径在少步数下误差大的原因是?

单选题 · mid

  • A.大步长沿着切线走偏离轨道← 正确答案
  • B.超出显卡显存导致程序崩溃
  • C.浮点数运算精度产生下溢出
  • D.缺少数据标签导致训练失败

答案:A。欧拉法沿当前切线方向走,路径越弯,走大步时切线偏离原本路径越远,截断误差越大。这是离散化误差,不是数值溢出、显存或标签问题。

Q7. 与 DDIM 相比,整流流的主要不同是?

单选题 · hard

  • A.DDIM 只改采样,整流流重新训练← 正确答案
  • B.DDIM 重新训练,整流流只改采样
  • C.DDIM 与整流流本质完全相同
  • D.DDIM 拉直路径且整流流保留弯曲

答案:A。DDIM 是在已有的扩散 ODE 上设计确定性采样器,路径仍是原来弯曲的;整流流通过重新配对和再训练把路径本身拉直。C、D 显然错误。

Q8. 整流流能够实现少步生成依赖哪些条件?

多选题 · mid

  • A.路径逐步拉直降低弯曲程度← 正确答案
  • B.重整流优化噪声与数据配对← 正确答案
  • C.蒸馏把多步模型压缩成少步← 正确答案
  • D.增大输出分辨率减少迭代数

答案:ABC。少步生成依赖路径直(整流拉直)、配对好(Reflow 重整流)、模型紧凑(蒸馏)三个条件。分辨率与步数没有因果关系,D 是干扰项。

Q9. 整流流把路径拉直后带来哪些收益?

多选题 · mid

  • A.大步长欧拉法误差显著减小← 正确答案
  • B.采样步数从几十降到四步内← 正确答案
  • C.生成延迟和计算成本双下降← 正确答案
  • D.训练数据需求量成倍增加

答案:ABC。拉直后大步长截断误差小、步数少、延迟和算力都下降。训练数据需求并不因此成倍增加,选项 D 是常见误解。

Q10. 关于整流流与扩散模型的对比,正确的说法是?

多选题 · hard

  • A.整流流属于扩散模型的加速方案← 正确答案
  • B.多轮整流让路径持续变直← 正确答案
  • C.整流流支持确定性生成← 正确答案
  • D.整流流完全不需要训练

答案:ABC。整流流是扩散模型的加速方案之一,多轮整流可持续变直,且速度场确定、支持确定性生成与编辑。但整流流需要训练,选项 D 错误。