U5.1 能不能先把兩小步,學成一大步?
不必第一天就學完整條路
U5.0 的直接蒸餾要用完整 rollout 替每個起點標答案。若 teacher 原本需要 步,做一筆標籤就可能要呼叫很多次網路。想像我們教人走一條長路,不一定要先要求他記住整條路;也可以先教他把相鄰兩段接起來。
於是我們先要求:從同一個 noisy state 出發,學生一步的落點,要等於 teacher 兩步的落點。 學會之後,原本 步的路就能在 步內完成。再把學生升格成 teacher,繼續減半。這就是 Salimans 與 Ho 的 progressive distillation [1]。
這個方法不是省掉訓練,而是把完整跳躍拆成多輪較短的監督問題。下面先固定其中一輪,確定「學生到底在學哪個標籤」。
往更乾淨的時間走,一步會落在哪裡?
沿用 ,本單元 越小越乾淨。Teacher 的 denoiser 記成 ,由它得到速度 。固定輸入 ,從 走到 的 Euler update 是
這個分數是 teacher 在起點估計的瞬時速度。將 的係數合併後,得到
在這個 affine-in-time 的 VE schedule 下,它也正是 deterministic DDIM update。這個相等不宜直接搬到任意 schedule 的原始時間座標。
選 ,teacher 先從 到 ,再從新位置到 ,得到 。第二步要在新位置重新呼叫 teacher;不能把第一步的 prediction 重用兩次,假裝已經看過沿途的變化。
學生該預測的,其實不是原始圖片
學生仍輸出一個 denoiser 形式的 ,但我們希望它在較大的 update 中直接抵達 。先把這個要求寫下來:
左邊已由 teacher 算好,右邊未知的只有學生應預測的 。先扣掉輸入保留項,再除以它的係數:
這是讓學生大步落點正確的 pseudo-clean target,通常不等於當初拿來合成 的資料 。Teacher 第一輪的 prediction 可能近似 posterior mean;經過蒸餾後,學生輸出的同一個座標已被訓成「適合這個大步的 prediction」,不再有相同的 posterior-mean 解讀。
例子用三個數字檢查反解
令 、、,teacher 兩步抵達 。Target 就是 。把它放回學生 update:,落點吻合。這裡只是在反解 affine update,沒有假設真實 ODE 是直線。
取得 target 後,抽資料 、獨立 noise 與訓練網格上的三連點 ,合成 ,最小化
決定不同起始時間的權重, 表示目標不回傳參數梯度。給定 與本輪時間網格,teacher 的兩步結果是確定的;這是用 deterministic teacher 做逐點蒸餾的關鍵。
課堂提問Q1
若我們把 換回真實資料 ,看起來更準確,為什麼反而沒有在做兩步合一?
先想一想,再展開看整理後的答案
因為要對齊的是 teacher 的落點。給定 ,真實資料 通常有許多可能,MSE 回歸它會得到 posterior mean;剛才反解的 target 則是 teacher 兩步的確定函數。兩種標籤都能用來訓練網路,但它們要求不同的輸出。
若 teacher 含有額外隨機性,而這些 random draws 又沒有交給學生,標籤會再次變成多值。這時要額外設計 noise coupling 或改成 distributional supervision,不能照搬 deterministic 的逐點說法。
減半的是步數,並沒有消除前一輪誤差
固定偶數 ,學生使用 teacher 每隔一格的時間點;學好後,由 步變成 步。每輪完成後複製學生參數作為新 teacher,重新定義兩步標籤。第二輪以後的 teacher transition 是上一輪學生定義的 update,不再等於原始 diffusion PF-ODE 的 Euler 一步。
即使只看一輪,局部擬合很好也要問誤差會怎麼累積。令 是 teacher 的兩步合成, 是學生的大步;假設它們在比較區域滿足 ,且 為 -Lipschitz。學生與 teacher 在第 格的位置差記成 ,加減 在學生位置的輸出,再用 triangle inequality:
第一項是本步擬合誤差,第二項是舊位置誤差經 reference map 傳遞。從相同起點開始,展開可得 。這是對固定 reference 的一個條件式上界;新學生下一輪變成 reference 時,它原有的偏差也會進入監督。
互動 demo:解析 Gaussian 檢查。 調整起始時間、區間與位置,直接計算本篇的關係;偏差控制是明示的 surrogate,沒有使用預設的品質曲線。
計算成本每個標籤兩次呼叫,不等於總訓練成本只有兩次
本輪用單次網路求值的一步規則時,每個標籤需要兩次 teacher evaluation;總成本還要乘訓練樣本數與輪數,另加學生更新。若 coarse solver 本身含多個 stages,步數減半也不代表 NFE 同比減半。少步、大步通常更難擬合,但哪一輪品質下降最多仍是實驗結果,不是這條 recurrence 的結論。
原文對照U1 的 v-prediction 為什麼會在少步蒸餾再出現?
本篇用 VE 座標把兩步合一的代數寫簡單;原始 progressive distillation 使用的 VP 座標,也研究了 prediction 與時間加權的選擇。U1.2 的 v-prediction label 是 ,是 data 與 noise 的另一種線性組合;這個名稱裡的 v 不等於本篇的 ODE velocity 。
少步時,模型必須跨過更大的 noise-level 範圍,prediction 座標在兩端的尺度與數值條件就更重要。這是原文引入該座標的背景;本篇的 target 反解則是在指定 VE update 下成立,不能把兩套係數直接混用。
消化一下
參考文獻
主要理論參考:The Principles of Diffusion Models,§10.3,特別是 pseudo-clean target 的式 10.3.2 與逐輪訓練流程。正文的符號沿用本課程;方法實作細節再對照下列原始論文。
- Salimans & Ho, Progressive Distillation for Fast Sampling of Diffusion Models (ICLR 2022)。
- Luhman & Luhman, Knowledge Distillation in Iterative Generative Models for Improved Sampling Speed (2021)。
- Liu, Gong & Liu, Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow (ICLR 2023)。