Akış Düzleşimi ve Düzeltme Akışları
Type: Build
Languages: Python
Prerequisites: Phase 8 · 06 (DDPM), Phase 1 · Calculus
Time: ~45 minutes
Sorun
DDPM'nin ters süreci, 1000 adımlık bir stohastik yürüyüşten N(0, I)Bu nedenle, bu işlemin bir sonraki aşamasında, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir sonraki aşamaları belirlemek için, bir aşamaları belirleme yapmak için, bir aşamaları belirlemeyi belirlemeyi gerektir.
Eğer modelin sesden veriye giden yolu düz çizgi olsaydı,t=1- ...t=0Akış eşleşimi bunu doğrudan oluşturur:x_1 ∼ N(0, I)- ...x_0 ∼ data, vektör alanı trenlev_θ(x, t)Zaman türevine eşleşmek için, sonuçta entegre.
Düzeltilmiş akış (Liu 2022) daha da ileriye gidiyor: adım adım bir reflow prosedürü ile yolları düzeltir ve bu da gittikçe daha yakın bir lineer ODE üretir.
Anlaşım
!Flow matching: straight-line interpolation between noise and data
Düz çizgi akışı
Define:
x_t = t · x_1 + (1 - t) · x_0, t ∈ [0, 1]neredex_0 ~ datave x_1 ~ N(0, I)Bu düz çizgi boyunca zaman türevini sabit:
dx_t / dt = x_1 - x_0Nöral vektör alanını tanımlayın v_θ(x_t, t)ve bu türevle eşleşmesi için eğitilmiştir:
L = E_{x_0, x_1, t} || v_θ(x_t, t) - (x_1 - x_0) ||²Bu da conditional flow matchingBu eğitim simülasyonsızdır: ODE'yi asla açmıyorsunuz.(x_0, x_1, t)ve geri çekilme.
Örnekleme
Sonuçta, öğrenilen vektör alanını geriye zaman içinde entegre edin:
x_{t-Δt} = x_t - Δt · v_θ(x_t, t)Başlayın .x_1 ~ N(0, I), Euler-adımı aşağıyat=0- Evet .
Düzeltilmiş akış (Liu 2022)
Düz çizgi akışı çalışır ama öğrenilen yollar aslında düz değil onlar eğri çünkü birçok x_0Aynı yere haritası yapabilirsiniz x_1Düzeltilmiş akışın yeniden akış aşaması:
- Rastgele eşleştirmeler ile tren akışı modeli v_1.
- Örnek N çift
(x_1, x_0)'den v_1'i entegre ederekx_1İnişine kadarx_0- Evet . - Bu çiftler artık "ODE eşleşmiş" olduğundan, aralarındaki düz çizgi interpolant gerçekten daha düz.
- Tekrar ediyorum.
Pratikte 2 reflow iterasyonları, 2-4 adım sonucu çıkarmayı mümkün kılar. SDXL-Turbo, SD3-Turbo, LCM hepsi akışla eşleşen destil modellerdir.
Neden bu 2024'te görüntüler için kazandı
Üç neden:
- Simulation-free training eğitim sırasında hiçbir ODE çıkmaz, uygulamak önemsiz.
- Better loss geometry Düz yollar tutarlı bir sinyal-gürültü ile karşılaştırılırken DDPM ε-kayıp programın kenarlarında kötü SNR'ye sahiptir.
- Faster inference SDXL-Turbo kalitesiyle 4-8 adım; tutarlılıklı destillasyonla 1 adım.
Akış eşleşimi vs DDPM tam bağlantı
Gaussian koşullu bir yolla akış eşleşmesi, belirli bir gürültü programı ile * difüsiyondır.x_t = α(t) x_0 + σ(t) x_1Zamanlama ve akış eşleşimi , Stratonovich ' in reformülasyonu ile v = α'·x_0 - σ'·x_1Bu ikisi Gaussian yolları için cebirsel olarak eşittir.
Akış eşleşimi ne ekledi: hedefin netliği (sıradan bir hız), temiz bir kayıp ve Gaussian olmayan interpolantlarla deney yapma izni.
Yapın
code/main.py1D akış eşleşmesini iki modlu Gaussian karışımı üzerinde uyguluyor.v_θ(x, t)Bu, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelik yaparak, bir incelemede, bir incelemede, bir incelemede, bir incelik yaparak, bir incelemede, bir incelemede, bir incelemede, bir incelemede, bir incelemede, bir incelemede, bir incelemede, bir incelemede, bir incelemede, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir, bir
Adım 1: Eğitim kaybı
pythondef train_step(x0, net, rng, lr):
x1 = rng.gauss(0, 1)
t = rng.random()
x_t = t * x1 + (1 - t) * x0
target = x1 - x0
pred = net_forward(x_t, t)
loss = (pred - target) ** 2
# backprop + updateAdım 2: Çok Adımlı Tahmin
pythondef sample(net, num_steps):
x = rng.gauss(0, 1)
for i in range(num_steps):
t = 1.0 - i / num_steps
dt = 1.0 / num_steps
x -= dt * net_forward(x, t)
return xAdım 3: Adım sayısını karşılaştır
4 adımlı örnekleme cihazının 20 adımlı kaliteye eşleşmesini bekleyin.
Tuzaklar
- Time parameterization.Akış eşleşimi kullanımı
t ∈ [0, 1]- Evet .t=0Verilerde,t=1DDPM kullanıyort ∈ [0, T]- Evet .t=0Verilerde,t=TAynı yönde, farklı ölçekte. - Schedule choice.Düzeltilmiş akışın düz çizgisi "akış eşleşme" programıdır, ancak daha iyi ölçek kapsamı için cosine veya logit-normal t örneğini kullanabilirsiniz (SD3 bunu yapar).
- Reflow cost.Yeniden akış için çiftleştirilmiş veri kümesini oluşturmak, örnek başına tam bir sonuç geçişidir. Sadece 1-2 adım sonuç almanız gerektiğinde tekrar akış yapın.
- Classifier-free guidance still applies.Sadece düzeltilen kombinasyonda ε ile v arasında değiş:
v_cfg = (1+w) v_cond - w v_uncond- Evet .
Kullan
| Use case | 2026 stack |
|---|---|
| Text-to-image, best quality | Flow matching: SD3, Flux.1-dev |
| Text-to-image, 1-4 steps | Distilled flow matching: Flux.1-schnell, SD3-Turbo, SDXL-Turbo |
| Real-time inference | Consistency distillation from a flow-matched base (LCM, PCM) |
| Audio generation | Flow matching: Stable Audio 2.5, AudioCraft 2 |
| Video generation | Flow matching mixed with diffusion (Sora, Veo, Stable Video) |
| Science / physics (particle trajectories, molecules) | Flow matching + equivariant vector field |
Bir makalede 2025-2026 yıllarında "difüzondan hızlı" dediğinde neredeyse her zaman akış eşleşmesi + destillasyon oluyor.
Gönder
- Kaydet .
outputs/skill-fm-tuner.md. Skill, bir difüzyon tarzında model özellikini alır ve onu akışla eşleşen bir eğitim yapılandırmasına dönüştürür: program seçimi, zaman örneklemesi dağılımı (eşit / logit-normal), optimizer, reflow planı, hedef adım sayımı, eval protokolü.
Egzersizler
- Easy.Çık .
code/main.pyve gerçek veri dağıtımına karşı 1 adım vs 20 adım MSE karşılaştırın. - Medium.Üniforma ' dan geç .
tÖrneklemeyi normal logit'e (t ortasında örneklemeyi yoğunlaştırır) yapılır. - Hard.Bir reflow iterasyonunu uygulayın: ilk modeli entegre ederek çiftleştirilmiş (x_0, x_1) oluşturun, çiftler üzerinde ikinci bir model eğitiniz ve 1 adım örnek kalitesini karşılaştırın.
Anahtar Terimler
| Term | What people say | What it actually means |
|---|---|---|
| Flow matching | "Straight-line diffusion" | Train v_θ(x, t) to match x_1 - x_0 along an interpolant. |
| Rectified flow | "Reflow" | Iterative procedure that straightens learned flows. |
| Velocity field | "v_θ" | Output of the model — the direction to move x_t. |
| Straight-line interpolant | "The path" | x_t = (1-t)·x_0 + t·x_1; trivial target derivative. |
| Euler sampler | "1st order ODE solver" | Simplest integrator; works well when paths are straight. |
| Logit-normal t | "SD3 sampling" | Concentrate t sampling toward mid-values where gradients are strongest. |
| Consistency distillation | "1-step sampler" | Train a student to map any x_t directly to x_0. |
| CFG with velocity | "v-CFG" | v_cfg = (1+w) v_cond - w v_uncond; same trick, new variable. |
Üretim notu: Flux.1-schnell en hızlı akış eşleşme
Flow matching'in üretim kazancı Flux.1-schnell bir akış eşleşen DiT Flux-dev dereceli kalitesi korurken 1-4 sonuçlandırma adımlarına doğru destillenir. Niels'in "Run Flux on an 8GB machine" not defteri referans dağıtım tarifi: T5 + CLIP kodlaması, kuantistik MMDiT tanımlaması (sharp vs. 50 için 4 adım), VAE kodlaması.
| Variant | Steps | Latency at 1024² on L4 | Total FLOPs (relative) |
|---|---|---|---|
| Flux.1-dev (raw) | 50 | ~15 s | 1.0× |
| Flux.1-schnell | 4 | ~1.2 s | 0.08× (12× faster) |
| SDXL-base | 30 | ~4 s | 0.25× |
| SDXL-Lightning 2-step | 2 | ~0.3 s | 0.03× |
Üretim kuralı: flow-matched base + distillation = the 2026 default for fast text-to-image.Her büyük satıcı bu kombinasyonu gönderir: SD3-Turbo (SD3 + akış + destillasyon), Flux-schnell (Flux-dev + düzeltilmiş akış düzeltmesi), CogView-4-Flash.
Daha Fazla Okumak
- Liu, Gong, Liu (2022). Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow Düzeltilmiş akış.
- Lipman et al. (2023). Flow Matching for Generative Modeling akış eşleşimi.
- Esser et al. (2024). Scaling Rectified Flow Transformers for High-Resolution Image Synthesis SD3, ölçekte düzeltilmiş akış.
- Albergo, Vanden-Eijnden (2023). Stochastic Interpolants FM + yayılımı kapsadığı genel çerçeve.
- Song et al. (2023). Consistency Models 1 aşamalı difüzyon/ akış destilasyonu.
- Sauer et al. (2023). Adversarial Diffusion Distillation (SDXL-Turbo)Turbo varianti.
- Black Forest Labs (2024). Flux.1 models üretimdeki akış eşleşimi.
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.