تطابق جریان و اصلاح جریان
Type: Build
Languages: Python
Prerequisites: Phase 8 · 06 (DDPM), Phase 1 · Calculus
Time: ~45 minutes
مشکل
فرآیند برگشت DDPM یک قدم استوکاستیک از N(0, I)به توزیع داده ها برگردیم. DDIM آن را به 20-50 مرحله تعیین کننده فرو می برد. شما می خواهید مراحل کمتری داشته باشید ایده آل یک. مانع این است که ODE حل فرآیند معکوس سخت است؛ مسیر منحنی است.
اگر می توانستید مدل را طوری آموزش دهید که مسیر از صدا به داده ها یک خط مستقیم باشد، یک گام یولر ازt=1بهt=0این کار را می کند. تطابق جریان این را مستقیماً ایجاد می کند: یک قطب قطبی مستقیم را ازx_1 ∼ N(0, I)بهx_0 ∼ data، یک میدان متری را تمرین کنیدv_θ(x, t)برای مطابقت با مشتق زمان، در نتیجه گیری ادغام شود.
جریان اصلاح شده (Liu 2022) فراتر می رود: مسیرها را با یک روش بازخورد که یک ODE به طور فزاینده ای نزدیک به خط تولید می کند، به طور تکراری راست می کند. پس از دو تکرار بازخورد، یک نمونه برداری دو مرحله ای با کیفیت DDPM 50 مرحله مطابقت دارد.
مفهوم
!Flow matching: straight-line interpolation between noise and data
جریان خط مستقیم
تعریف:
x_t = t · x_1 + (1 - t) · x_0, t ∈ [0, 1]کجاx_0 ~ dataوx_1 ~ N(0, I)مشتق زمان در طول این خط مستقيم ثابت است:
dx_t / dt = x_1 - x_0یک میدان متری عصبی را تعریف کنیدv_θ(x_t, t)و آن را به این مشتق آموزش دهید:
L = E_{x_0, x_1, t} || v_θ(x_t, t) - (x_1 - x_0) ||²اينمconditional flow matchingآموزش بدون شبیه سازی است: شما هرگز ODE را باز نمی کنید. فقط نمونه(x_0, x_1, t)و عقب نشینی
نمونه گیری
در نتیجه گیری، میدان ویکتور یاد گرفته شده را به عقب در زمان ادغام کنید:
x_{t-Δt} = x_t - Δt · v_θ(x_t, t)از شروعx_1 ~ N(0, I)، مرحله ایولر به پایینt=0. .
جریان اصلاح شده (Liu 2022)
جریان خط مستقیم کار می کند اما مسیرهای آموخته شده در واقع راست نیستندx_0می تونم نقشه رو به همان جا بکشمx_1. مرحله بازخورد جریان اصلاح شده:
- مدل جریان قطار v_1 با جفت گیری تصادفی
- نمونه N جفت
(x_1, x_0)با ادغام v_1 ازx_1تا فرودشx_0. . - به عنوان مثال، این دو جفت در حال حاضر "ODE-مطابق" هستند، بنابراین قطب مستقیم بین آنها واقعا مسطح تر است.
- تکرار کنم
در عمل 2 تکرار تکرار شما را به خطی نزدیک می کند، که 2-4 مرحله نتیجه گیری را امکان پذیر می کند. SDXL-Turbo، SD3-Turbo، LCM همه مدل های تزریق شده از جریان هستند.
چرا این فیلم در سال 2024 برنده شد؟
سه دلیل:
- Simulation-free training هیچ ODE در طول آموزش و پرورش منتشر نمی شود، برای اجرای آن ساده است.
- Better loss geometry مسیرهای مستقیم دارای سیگنال به صدا ثابت هستند، در حالی که DDPM ε-loss دارای SNR بد در حاشیه های برنامه است.
- Faster inference 4 تا 8 مرحله در کیفیت SDXL-Turbo؛ 1 مرحله با تزریق سازگار.
تطابق جریان در مقابل DDPM ارتباط دقیق
جریان مطابق با یک مسیر Gaussian-شرطی انتشار است *با یک برنامه نویسی خاص.x_t = α(t) x_0 + σ(t) x_1زمان بندی و جریان مطابقت بازیابی استراتونوویچ-reformed انتشار با v = α'·x_0 - σ'·x_1اين دو تا به صورت الجبري معادل راه هاي گوسي هستند
آنچه که تطابق جریان اضافه کرد: شفافیت هدف (سرعت ساده) ، یک از دست دادن تمیز تر و مجوز آزمایش با مداخله های غیر گاسسی.
آن را بسازید
code/main.pyیک جریان 1-D را روی یک ترکیب دو حالت گوسسی پیاده سازی می کند. میدان ویکتور v_θ(x, t)یک MLP کوچک با هدف خط مستقیم آموزش دیده است. در نتیجه، مراحل 1، 2، 4 و 20 یولر را ادغام کنید و کیفیت نمونه را مقایسه کنید.
مرحله ی اول: از دست دادن تمرین
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مرحله دوم: نتیجه گیری چند مرحله ای
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مرحله سوم: مقایسه تعداد مراحل
انتظار داشته باشید که نمونه برداری 4 مرحله ای با کیفیت 20 مرحله مطابقت داشته باشد.
دام ها
- Time parameterization.استفاده از تطابق جریان
t ∈ [0, 1]باt=0در داده هاt=1در هنگام صدا.t ∈ [0, T]باt=0در داده هاt=Tدر هر حال، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در هر زمان، در، در هر زمان، در، در هر زمان، در، در هر زمان، در، در هر زمان، در هر زمان، در، در هر زمان، در، در هر زمان، در، در هر زمان، در، در هر زمان، در، در هر چیزی، در، در هر زمان، در، در هر چیزی، در، در، در هر چیزی، در، در، در، در، در هر چیزی، در، در، در هر چیزی، در، در، در، در، در، در هر چیزی، در، در، در، در، در، در، در، در، در، در، در، در، در، در، در، - Schedule choice.خط مستقیم جریان اصلاح شده برنامه تطابق جریان "تعداد" است، اما می توانید از نمونه گیری t-معمولی (SD3 این کار را انجام می دهد) برای پوشش بهتر مقیاس استفاده کنید.
- Reflow cost.تولید مجموعه داده های جفت برای بازخورد یک نتیجه گیری کامل در هر نمونه است. فقط زمانی که واقعا به یک یا دو مرحله از بازخورد نیاز دارید بازخورد را انجام دهید.
- Classifier-free guidance still applies.فقط ε رو به v در ترکیب خطي عوض کن:
v_cfg = (1+w) v_cond - w v_uncond. .
ازش استفاده کن
| 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 |
هر وقت در یک مقاله گفته شود "سرعت تر از انتشار" در سال های 2025-2026، تقریبا همیشه جریان مطابقت + تزریق است.
-باده
نگه دارoutputs/skill-fm-tuner.md. مهارت یک مدل سبک انتشار را می گیرد و آن را به یک پیکربندی آموزش تطابق جریان تبدیل می کند: انتخاب برنامه، توزیع نمونه گیری زمان (وحد / منطقی-معمول) ، بهینه سازی، برنامه جریان مجدد، شمار مراحل هدف، پروتکل ارزیابی.
تمرینات
- Easy.فرار کن
code/main.pyو مقایسه یک مرحله با 20 مرحله MSE با توزیع واقعی داده ها. - Medium.از لباس عوضش کن
tنمونه گیری به حالت عادی (مجموعه نمونه گیری در وسط t را متمرکز می کند). آیا کیفیت مدل بهبود می یابد؟ - Hard.یک تکرار تکرار تکرار را پیاده سازی کنید: با ادغام مدل اول (x_0, x_1) به طور جفت تولید کنید، مدل دوم را بر روی جفت ها آموزش دهید و کیفیت نمونه را در یک مرحله مقایسه کنید.
اصطلاحات کلیدی
| 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. |
يادداشت توليد: فلکس.1-شنل در سرعت ترين خود مطابقت جریان است
فلو مچینگ برنده تولید Flux.1-schnell یک DiT مچ جریان مستقیم به 1-4 مرحله نتیجه گیری در حالی که کیفیت درجه Flux-dev را حفظ می کند. نوت بوک "Run Flux در یک ماشین 8GB" نیلز نسخه استفاده مرجعیه: T5 + کد CLIP، کد MMDiT کوانتایی (در 4 مرحله برای سریع در مقابل 50 برای dev) ، کد VAE. حسابداری هزینه:
| 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× |
قانون توليد: flow-matched base + distillation = the 2026 default for fast text-to-image.هر فروشنده بزرگ این ترکیب را ارسال می کند: SD3-Turbo (SD3 + جریان + تزریق) ، Flux-schnell (Flux-dev + راست کردن جریان اصلاح شده) ، CogView-4-Flash. پایگاه های انتشار خالص فقط برای نقاط بازرسی قدیمی وجود دارد.
خواندن بیشتر
- Liu, Gong, Liu (2022). Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow جریان اصلاح شده
- Lipman et al. (2023). Flow Matching for Generative Modeling تطابق جریان
- Esser et al. (2024). Scaling Rectified Flow Transformers for High-Resolution Image Synthesis SD3، جریان اصلاح شده در مقیاس.
- Albergo, Vanden-Eijnden (2023). Stochastic Interpolants چارچوب عمومی که شامل انتشار FM + می شود.
- Song et al. (2023). Consistency Models یک مرحله از تزریق انتشار / جریان.
- Sauer et al. (2023). Adversarial Diffusion Distillation (SDXL-Turbo) توریبو
- Black Forest Labs (2024). Flux.1 models تطابق جریان در تولید
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.