
<a id="n33-title"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-title)


# 生成更快，先从换一种走法开始

王德泉 · Coding with AI · Lecture 04


<a id="n33-df7e010d9fd6"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-df7e010d9fd6)

现在已有完整的预测—更新循环。上排展示五张状态图，之间有四个更新箭头；第一张是起点，不是一次预测产生的结果。在本页每个箭头对应一次模型调用的约定下，五张状态只需四次调用。下排三张状态对应两次调用，才是另一种真正减少计算步骤的计划。少展示两张中间图，不会自动少做任何一次计算。


[课程图解] 第一张是起点：五个状态对应四次调用，三种状态对应两次调用。；图中标签与关系：计划 A：多次局部更新 5 个状态 · 4 次调用 状态 0 1 状态 1 2 状态 2 3 状态 3 4 状态 4 实心点 = 一次调用 同一预测器 · 同一起点 计划 B：重新选择更新时刻 3 个状态 · 2 次调用 状态 0 1 状态 1 2 状态 2
第一张是起点：五个状态对应四次调用，三种状态对应两次调用。


<a id="n33-43f7c46d5165"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-43f7c46d5165)

DDIM 所代表的思路，是在合适的训练构造与参数化下复用预测器，改变更新规则和取用的时刻，研究能否用更少步骤完成生成。它不只是播放时跳帧；实际下一状态的计算已经不同。减少调用可能带来更快推理，也可能增大离散更新误差，必须在相同任务与预算口径下测量质量和耗时。


<a id="n33-c242c951dfc5"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-c242c951dfc5)

有一个容易混淆的理论区别：每个时刻的一组样本怎样分布，和一条样本从前一时刻怎样走到后一时刻，并不是同一对象。在相应连续时间设定、正确 score 与满足所需条件时，随机过程和确定过程可以对应相同的时刻边缘分布，却有不同的样本轨迹。分布关系不能被缩成“固定同一个随机起点，二者就走同一条路、得到同一张图”。


<a id="n33-8e09169394ef"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-8e09169394ef)

**“图上两条计划画到同一个终点，已经证明少步一样好吗？”** 没有。课堂把终点对齐，是为了比较计划，不能替代误差验证。真实模型给出的方向本身可能不准确，这是模型误差；有限步数求解带来的偏差是数值误差。换一个更好的求解器可以减少后一类，却不会自动消除前一类。


<a id="n33-f467c6494c46"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-f467c6494c46)

真实系统还应记录网络调用数，而不只记更新步数：有的求解器每步会评估多次，有条件引导也可能需要额外分支。墙钟时间还包含每次调用的工作量、批量和设备条件。本页的四次与两次只是画面明确规定的简单计划，不是某一方法的测速结果。


<a id="n33-68843f3c5e83"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-68843f3c5e83)

更少调用是一种价值，但生成还要守住输入要求。下一页把“更听话”与对象完整、候选多样分开检查。


<a id="n33-states"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-states)


## 画面怎样推进


<a id="n33-b0"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-b0)

起点加四次更新形成五个状态，在本页约定下对应四次调用。

[返回这一课堂停点](https://codingai-lec04.pages.dev/classroom/N33.html?step=b0)


<a id="n33-b1"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-b1)

改变实际更新计划和时刻可以减少调用，不是少展示几张状态图。

[返回这一课堂停点](https://codingai-lec04.pages.dev/classroom/N33.html?step=b1)


<a id="n33-b2"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-b2)

示意终点对齐不证明质量相等；模型误差、数值误差和实际耗时仍需测量。

[返回这一课堂停点](https://codingai-lec04.pages.dev/classroom/N33.html?step=b2)


<a id="n33-materials"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-materials)


## 继续阅读与实验


<a id="n33-learning-unit-001"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-learning-unit-001)


## 少展示两帧，真的少算了两步吗？


<a id="n33-learning-unit-002"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-learning-unit-002)

五张状态图之间只有四个箭头：在每箭头一次预测的简单计划中，需要四次更新。若只隐藏中间帧，后台仍算这四步，速度没有改变；真正跳步必须选更稀疏的时间网格，并按相应公式计算下一状态，误差也随之改变。


<a id="n33-learning-unit-003"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-learning-unit-003)

计成本还要说明一次调用做多少工作。四个双分支CFG更新时间需要八份分支预测；实现可将两支合到一次批量前向，得到四次调用，但每次处理两份输入。网络调用数、更新时间、批量与墙钟时间不能混称一个“步数”。


<a id="n33-learning-unit-004"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-learning-unit-004)

接着读：[DDIM如何改变路线](https://codingai-lec04.pages.dev/lecture.html#ch05-u0024)与[CFG的分支代价](https://codingai-lec04.pages.dev/lecture.html#ch05-u0037)。


<a id="n33-chapter-reading"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-chapter-reading)


### [CLS 05 · 扩散：训练、采样与少步生成](https://codingai-lec04.pages.dev/lecture.html#ch05)

按连续正文理解这条方法的训练信号、使用过程与算例；数学与实践在相关问题旁展开。

先看：第5章，从对象和问题开始


<a id="n33-lab09-practice"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-lab09-practice)


### [LAB 09 · 学得去噪器与完整采样](https://codingai-lec04.pages.dev/course/notebooks/e6fcbdfe3ca2418c9ed09344b4ae2b33.html)

固定初始噪声，仅改采样步数；把网络近似误差与数值步进误差分开。

先看：先看保存结果与读图解释


<a id="n33-lab05-practice"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-lab05-practice)


### [LAB 05 · 扩散的条件均值与流积分](https://codingai-lec04.pages.dev/course/notebooks/be6db259db4f48478c7481ab51129971.html)

先读本册保存结果，再按实现顺序核对一个算例；最后只改一个变量。

先看：先看保存结果与读图解释


<a id="n33-material-1"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-material-1)


### [Denoising Diffusion Implicit Models](https://arxiv.org/pdf/2010.02502)

确认DDIM怎样复用训练目标并改变生成过程；区别真实减少调用与展示跳帧。

先看：第3–4节


<a id="n33-material-2"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-material-2)


### [LAB 05｜条件均值、噪声预测与流积分](https://deepnote.com/project/6f83a923-d155-47be-be58-680db701ff7f/notebook/be6db259db4f48478c7481ab51129971)

改变积分步数或方向，区分这个可解玩具问题的数值误差与一般模型质量。

先看：第3节与“只改一个变量”


<a id="n33-material-3"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N33.html#n33-material-3)


### [DERIV 01｜SDE 与 ODE 的分布与路径](https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/6f83a923-d155-47be-be58-680db701ff7f/notebook/eabdf207ccae4a53880de461b101ec82?utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_content=eabdf207ccae4a53880de461b101ec82&utm_term=get_notebook)

区分同一时刻的边缘分布与单条路径，核对从逆 SDE 到概率流 ODE 为什么还要改变漂移。

先看：SDE 与 ODE：可以同边缘，却不同路径

