Rectified Flow
يدرّب التدفق المصحح نموذجًا على تحويل الضوضاء إلى بيانات عبر خطوط مستقيمة، ما يتيح توليد الصور بعدد قليل من خطوات أخذ العينات. ويغطي التدريب وإعادة التدفق وSD3 وFLUX.
التدفق المصحح طريقة للنمذجة التوليدية تتعلم مجال سرعة ينقل العينات من توزيع بسيط، عادةً ضوضاء غاوسية، إلى توزيع البيانات عبر مسارات مستقيمة قدر الإمكان. التدريب عبارة عن انحدار مباشر: إقران عينة ضوضاء بعينة بيانات، واختيار نقطة على الخط المستقيم بينهما، وتعليم شبكة عصبية التنبؤ باتجاه الخط. يدمج التوليد السرعة المتعلَّمة باستخدام محلّل معادلة تفاضلية عادية (ODE)، وهي الآلية نفسها وراء معادلات ODE العصبية، ويمكن اتباع المسارات المستقيمة في بضع خطوات كبيرة. قدّم Xingchao Liu وChengyue Gong وQiang Liu من جامعة تكساس في أوستن الطريقة في سبتمبر 2022 ضمن ورقة Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow، إلى جانب مطابقة التدفق وثيقة الصلة التي قدمها Yaron Lipman وزملاؤه في Meta.
كيفية تدريب التدفق المصحح#
بالنسبة إلى الضوضاء x0 والبيانات x1، تتحرك النقطة x_t = (1 - t) * x0 + t * x1 من الضوضاء عند t = 0 إلى البيانات عند t = 1 بسرعة ثابتة x1 - x0. يُدرّب النموذج v(x_t, t) على التنبؤ بهذه السرعة باستخدام دالة خسارة مربع الخطأ على أزواج وأزمنة عشوائية. تمر خطوط كثيرة عبر أي نقطة معطاة، لذا يتعلم النموذج اتجاهها المتوسط، ولا تتقاطع مسارات ODE التي يحددها، لكنها تنحني حيث تلتقي الخطوط المتجهة إلى نقاط بيانات مختلفة. يتعلم تدفق مصحح أحادي البعد في PyTorch تحويل الضوضاء الغاوسية إلى عنقودين عند -2 و+2:
import torch
from torch import nn
torch.manual_seed(0)
velocity = nn.Sequential(nn.Linear(2, 64), nn.SiLU(), nn.Linear(64, 64), nn.SiLU(), nn.Linear(64, 1))
optimizer = torch.optim.Adam(velocity.parameters(), lr=1e-3)
for step in range(3000):
x0 = torch.randn(256, 1) # noise
x1 = 2.0 * torch.sign(torch.randn(256, 1)) + 0.1 * torch.randn(256, 1) # data: two modes at -2 and +2
t = torch.rand(256, 1)
xt = (1 - t) * x0 + t * x1 # a point on the straight line from noise to data
loss = ((velocity(torch.cat([xt, t], dim=1)) - (x1 - x0)) ** 2).mean() # regress the line's direction
optimizer.zero_grad()
loss.backward()
optimizer.step()
# Generate by Euler integration of dx/dt = v(x, t), with different step counts
for steps in [1, 2, 4, 32]:
x = torch.randn(10000, 1)
with torch.no_grad():
for i in range(steps):
x = x + velocity(torch.cat([x, torch.full_like(x, i / steps)], dim=1)) / steps
near_mode = ((x.abs() - 2).abs() < 0.3).float().mean()
print(f"{steps:>2} Euler steps: {near_mode:.0%} of samples within 0.3 of a mode")باستخدام خطوة أويلر واحدة، لا تصل أي عينة (0%) إلى جوار نمط: عند t = 0، يقود الاتجاه المتوسط من كل نقطة ضوضاء إلى متوسط البيانات 0، الواقع في منتصف العنقودين. تصل خطوتان بـ39% من العينات إلى مسافة 0.3 من نمط، وأربع خطوات بـ81%، و32 خطوة بـ96%، لأن المسارات المتعلَّمة تنحني نحو العنقودين، ولا تتبع الانحناء إلا الخطوات الصغيرة.
إعادة التدفق: تقويم المسارات#
تزيل إعادة التدفق، التي تسميها الورقة التصحيح التكراري، تلك الانحناءات. يولّد التدفق المدرّب مجموعة من أزواج (الضوضاء، العينة)، ويتدرب تدفق جديد على هذه الأزواج بدلًا من الأزواج العشوائية. يصل مسار التدفق الأول كل زوج بالفعل، لذا نادرًا ما تتعارض الخطوط المستقيمة بين الأزواج، وتثبت الورقة أن الاقتران الجديد لا يزيد تكلفة النقل أبدًا. وتنتج عمليات إعادة التدفق المتكررة مسارات مستقيمة تقريبًا، وقد أبلغ المؤلفون عن صور عالية الجودة وترجمات للصور باستخدام خطوة أويلر واحدة:
طبّق الفريق نفسه إعادة التدفق وتقطير المعرفة على Stable Diffusion 1.5 في مشروع InstaFlow (2023). حقق نموذجه ذو الخطوة الواحدة FID بلغ 23.3 على MS COCO 2017-5k، مقابل 37.2 للتقطير التدريجي، وأنشأ صورة في 0.09 ثانية، وبلغت تكلفة تدريبه 199 يومًا من GPU A100.
التدفق المصحح في نماذج تحويل النص إلى صورة#
قارنت ورقة Stable Diffusion 3 من Stability AI، بعنوان Scaling Rectified Flow Transformers for High-Resolution Image Synthesis (مارس 2024)، صيغ التدريب واختارت التدفق المصحح مع أزمنة تدريب مسحوبة من توزيع لوغيت-طبيعي، يركّز التدريب على منتصف المسار حيث يصعب التنبؤ بالسرعة. يجمع النموذج هذا الهدف مع محوّل انتشار متعدد الوسائط (DiT) يعمل في فضاء كامن. تصف Black Forest Labs، التي أسسها باحثون سابقون في Stability AI، نموذجها FLUX.1 dev بأنه محوّل تدفق مصحح يضم 12 مليار معلمة، وينشئ إصدار FLUX.1 [schnell] المقطّر الصور في خطوة إلى أربع خطوات. تُعد هذه النماذج لتحويل النص إلى صورة مصدرًا شائعًا لـالبيانات الاصطناعية لتدريب الرؤية. تدمج Ultralytics Platform توليد الصور من النص في تنسيق مجموعات البيانات عبر ميزة إنشاء صور مشابهة: انطلاقًا من صورة واحدة في مجموعة البيانات، تكتب أوصافًا لمشاهد جديدة، وتنشئ حتى 16 صيغة، وتضيف الصور التي تحتفظ بها إلى مجموعة البيانات بلا تسميات، لتكون جاهزة لـالتوسيم.
التدفق المصحح مقابل المصطلحات ذات الصلة#
- مطابقة التدفق: إطار عام لتدريب مولدات ODE عبر انحدار السرعات على مسارات احتمالية مختارة. والخط المستقيم في التدفق المصحح بين ضوضاء وبيانات مستقلتين هو المسار الأكثر استخدامًا، وغالبًا ما يُستخدم الاسمان بالتبادل.
- نماذج الانتشار: تضيف الضوضاء وفق جدول تنحني فيه مسارات تدفق الاحتمال، وتستغرق أدوات أخذ العينات الحتمية فيها عادةً من 20 إلى 50 خطوة.
- التدفقات المُطبِّعة: تحوّل الضوضاء إلى بيانات عبر رصّة ثابتة من الطبقات القابلة للعكس، وتُدرّب بأقصى احتمال دقيق.
- نماذج الاتساق: تتعلم القفز من أي نقطة على مسار منحنٍ مباشرةً إلى نهايته، بحيث يمكن لاستدعاء واحد للنموذج إنتاج عينة.










