Phase 08: Generative AI

Akış Düzleşimi ve Düzeltme Akışları

Diffusion modelleri 20-50 örnekleme adımlarını alırlar çünkü gürültüden veriye eğri bir yol izlerler. Akış eşleşimi (Lipman ve diğerleri, 2023) ve düzeltilmiş akış (Liu ve diğerleri, 2022) düz yollar eğitilmiştir. Daha düz yollar daha az adım anlamına gelir daha hızlı sonuçlama anlamına gelir.

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_0

Nö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ı:

  1. Rastgele eşleştirmeler ile tren akışı modeli v_1.
  2. Örnek N çift (x_1, x_0)'den v_1'i entegre ederekx_1İnişine kadarx_0- Evet .
  3. Bu çiftler artık "ODE eşleşmiş" olduğundan, aralarındaki düz çizgi interpolant gerçekten daha düz.
  4. 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:

  1. Simulation-free training eğitim sırasında hiçbir ODE çıkmaz, uygulamak önemsiz.
  2. 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.
  3. 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 + update

Adı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 x

Adı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ıyor t ∈ [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 case2026 stack
Text-to-image, best qualityFlow matching: SD3, Flux.1-dev
Text-to-image, 1-4 stepsDistilled flow matching: Flux.1-schnell, SD3-Turbo, SDXL-Turbo
Real-time inferenceConsistency distillation from a flow-matched base (LCM, PCM)
Audio generationFlow matching: Stable Audio 2.5, AudioCraft 2
Video generationFlow 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

  1. 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.
  2. Medium.Üniforma ' dan geç .tÖrneklemeyi normal logit'e (t ortasında örneklemeyi yoğunlaştırır) yapılır.
  3. 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

TermWhat people sayWhat 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ı.

VariantStepsLatency at 1024² on L4Total FLOPs (relative)
Flux.1-dev (raw)50~15 s1.0×
Flux.1-schnell4~1.2 s0.08× (12× faster)
SDXL-base30~4 s0.25×
SDXL-Lightning 2-step2~0.3 s0.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

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.