Fluxo de correção e fluxos corrigidos
Type: Build
Languages: Python
Prerequisites: Phase 8 · 06 (DDPM), Phase 1 · Calculus
Time: ~45 minutes
O problema
O processo inverso do DDPM é um passeio estocástico de 1000 passos de N(0, I)O DDIM desmoronou-o para 20-50 passos deterministas. Você quer menos passos idealmente um. O bloqueador é que o ODE resolvendo o processo inverso é rígido; o caminho é curvo.
Se pudesse treinar o modelo de tal forma que o caminho do ruído para os dados fosse uma linha reta, um único passo de Euler de t=1- Não .t=0A combinação de fluxos constrói isto diretamente: definir uma interpolação reta a partir dex_1 ∼ N(0, I)- Não .x_0 ∼ data, treinar um campo vetorial v_θ(x, t)para combinar a sua derivada do tempo, integrar na inferência.
O fluxo retificado (Liu 2022) vai mais longe: endireita iterativamente os caminhos com um procedimento de refluxo que produz um ODE progressivo mais próximo a linear. Após duas iterações de refluxo, um amostragem de 2 passos corresponde à qualidade de DDPM de 50 passos.
O conceito
!Flow matching: straight-line interpolation between noise and data
Fluxo em linha reta
Define:
x_t = t · x_1 + (1 - t) · x_0, t ∈ [0, 1]ondex_0 ~ dataE ...x_1 ~ N(0, I)A derivada temporal ao longo desta reta é constante:
dx_t / dt = x_1 - x_0Defina um campo de vetor neural v_θ(x_t, t)e treinar para combinar com esta derivada:
L = E_{x_0, x_1, t} || v_θ(x_t, t) - (x_1 - x_0) ||²É o que eu faço .conditional flow matchingO programa de formação é gratuito: nunca se desbloqueia o ODE.(x_0, x_1, t)e regressão.
Amostragem
Na inferência, integra o campo vetorial aprendido para trás no tempo:
x_{t-Δt} = x_t - Δt · v_θ(x_t, t)Começa emx_1 ~ N(0, I), Euler-passo para baixo para t=0- Não .
Fluxo rectificado (Liu 2022)
O fluxo em linha reta funciona, mas os caminhos aprendidos não são realmente retos.x_0s pode mapear para o mesmo x_1. Passo de refluxo do fluxo corrigido:
- Modelo de fluxo de trem v_1 com acoplamento aleatório.
- Amostra N pares
(x_1, x_0)integrando v_1 dex_1até ao seu pouso .x_0- Não . - Como os pares agora são "ODE-matched", o interpolante em linha reta entre eles é realmente mais plano.
- Repito. - Não.
Na prática, 2 iterações de reflow levam você a quase linear, permitindo inferência de 2-4 passos. SDXL-Turbo, SD3-Turbo, LCM são todos modelos destilados de fluxo-matching.
Por que isto ganhou por imagens em 2024
Três razões:
- Simulation-free training não haverá ODE que se desenrolem durante a formação, sendo trivial a implementar.
- Better loss geometry Os caminhos retos têm um sinal-ruído consistente, enquanto o DDPM ε-loss tem um SNR ruim nas bordas do cronograma.
- Faster inference 4-8 etapas com qualidade SDXL-Turbo; 1 etapa com destilação de consistência.
Correspondência de fluxo versus DDPM a conexão exata
A correspondência de fluxo com um caminho condicional de Gauss é difusão com um cronograma específico de ruído.x_t = α(t) x_0 + σ(t) x_1O calendário e o fluxo correspondentes recuperam a difusão reformulada por Stratonovich com v = α'·x_0 - σ'·x_1Os dois são algébricos equivalentes para os caminhos de Gaussian.
O que o fluxo de correspondência adicionou: a clarity do alvo (uma velocidade simples), uma perda mais limpa, e a licença para experimentar com interpolantes não gaussianos.
Construí-lo
code/main.pyImplementa a correspondência de fluxo 1-D em uma mistura de Gaussian de dois modos.v_θ(x, t)A conclusão é que, ao fazer uma conclusão, integrar 1, 2, 4 e 20 passos de Euler e comparar a qualidade da amostra.
Passo 1: perda de formação
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 + updatePasso 2: inferência em várias etapas
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 xPasso 3: comparação de números de passos
Esperem que o amostragem de 4 passos já corresponda à qualidade de 20 passos, um grande problema para a latência.
Encurralagens
- Time parameterization.Utilizações de correspondência de fluxo
t ∈ [0, 1]comt=0em dados,t=1- a utilização de DDPMt ∈ [0, T]comt=0em dados,t=TO mesmo rumo, em escala diferente, os papéis estão sempre errados. - Schedule choice.A linha reta do fluxo corrigido é "o" cronograma de correspondência de fluxo, mas você pode usar o cosino ou logit-normal t-sampling (SD3 faz isso) para uma melhor cobertura em escala.
- Reflow cost.Gerar o conjunto de dados emparelhados para refluxo é uma passagem completa de inferência por amostra. Só fazer refluxo quando você realmente precisa de inferência de 1-2 passos.
- Classifier-free guidance still applies.Basta trocar ε por v na combinação linear:
v_cfg = (1+w) v_cond - w v_uncond- Não .
Usá-lo
| 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 |
Sempre que um artigo diz "mais rápido do que a difusão" em 2025-2026, é quase sempre o fluxo de correspondência + destilação.
Envia-o
Salvaroutputs/skill-fm-tuner.md. A Skill toma uma especificação de modelo de estilo difusão e converte-a em uma configuração de treinamento de correspondência de fluxo: escolha de horário, distribuição de amostragem de tempo (uniforme / logit-normal), optimizador, plano de refluxo, contagem de etapas-alvo, protocolo de avaliação.
Exercícios
- Easy.Corra .
code/main.pye comparar a distribuição de dados real com a MSE de 1 passo versus 20 passos. - Medium.- Desliga-te do uniforme .
tA amostragem para logit-normal (concentra a amostragem em meados de t). - Hard.Implementar uma iteração de reflow: gerar emparelhado (x_0, x_1) integrando o primeiro modelo, treinar um segundo modelo nos pares e comparar a qualidade da amostra em 1 passo.
Termos-chave
| 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. |
Nota de produção: Flux.1-schnell está a corresponder fluxo em seu mais rápido
A vitória de produção do fluxo de correspondência é Flux.1-schnell um fluxo-correspondente DiT destilado para 1-4 passos de inferência mantendo a qualidade de grau Flux-dev. O notebook de Niels "Run Flux em uma máquina de 8GB" é a receita de implantação de referência: T5 + código CLIP, denotação quantizada de MMDiT (em 4 passos para rápido vs 50 para dev), decodificação VAE. A contabilidade de custos:
| 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× |
Regra de produção: flow-matched base + distillation = the 2026 default for fast text-to-image.Todos os principais fornecedores enviam esta combinação: SD3-Turbo (SD3 + fluxo + destilação), Flux-schnell (Flux-dev + rectified-flow straightening), CogView-4-Flash.
Mais leitura
- Liu, Gong, Liu (2022). Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow fluxo rectificado.
- Lipman et al. (2023). Flow Matching for Generative Modeling correspondência de fluxo.
- Esser et al. (2024). Scaling Rectified Flow Transformers for High-Resolution Image Synthesis SD3, fluxo rectificado em escala.
- Albergo, Vanden-Eijnden (2023). Stochastic Interpolants quadro geral que abrange a difusão FM+.
- Song et al. (2023). Consistency Models Destilação em 1 etapa de difusão/ fluxo.
- Sauer et al. (2023). Adversarial Diffusion Distillation (SDXL-Turbo)- Variante turbo.
- Black Forest Labs (2024). Flux.1 models correspondência de fluxo na produção.
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.