فاز 8 · درس 19

مدل‌سازی خودبازگشتی تصویری (VAR): تولید تصویر با پیش‌بینی مقیاس بعدی

نوع
ساختنی
زمان
حدود 90 دقیقه
زبان‌ها
Python (with PyTorch)
یک هرم شیشه‌ای چندلایه با شبکه‌های مشبک متوالی از درشت تا بسیار ریز روی یک پس‌زمینه‌ی گرادیان فنی تیره
فهرست مطالب
  1. صورت مسئله
  2. مفاهیم پایه
  3. توکن‌ساز چندمقیاسی VQ-VAE
  4. پیش‌بینی مقیاس بعدی
  5. فرایند تولید
  6. چرا پیش‌بینی مقیاس بعدی از پیش‌بینی توکن بعدی بهتر عمل می‌کند؟
  7. قوانین مقیاس‌پذیری
  8. ارتباط با مدل‌های دیفیوژن
  9. پیاده‌سازی عملی
  10. تحویل نهایی
  11. تمرین‌ها
  12. اصطلاحات کلیدی
  13. برای مطالعه‌ی بیشتر

مدل‌های خودبازگشتی سال‌هاست که حاکم بی‌چون‌وچرای پردازش زبان طبیعی هستند، اما در حوزه‌ی تولید تصویر همواره زیر سایه‌ی مدل‌های دیفیوژن (Diffusion Models) و معماری‌هایی مثل DiT مانده بودند. علت اصلی، خطای ناشی از پیمایش ترتیبی پیکسل‌ها یا توکن‌های دوبعدی بود؛ جایی که اولین توکن تولیدشده در گوشه‌ی تصویر، دیدی نسبت به کل ساختار تصویر نهایی نداشت.

معماری VAR (کوتاه‌شده‌ی Visual Autoregressive) با تغییر صورت‌مسئله این چالش را حل می‌کند: به‌جای پیش‌بینی توکن بعدی در امتداد یک بعد خطی، مدل کل تصویر را در مقیاس‌های متوالی از رزولوشن فوق‌العاده درشت (1x1) تا رزولوشن نهایی پیش‌بینی می‌کند. این راهکار نه تنها کیفیت را به سطح مدل‌های دیفیوژن می‌رساند، بلکه به دلیل موازی بودن پردازش درون هر مقیاس، سرعت استنتاج را به مراتب بیشتر می‌کند.

یادگیری این رویکرد برای مهندسان هوش مصنوعی اهمیت بالایی دارد؛ زیرا نشان می‌دهد چگونه قوانین مقیاس‌پذیری مشابه GPT به تصویر سرایت کرده‌اند. در این درس، سازوکار توکن‌ساز چندمقیاسی VQ و ماسک اتنشنِ علیتی بر حسب مقیاس را به‌صورت عملی پیاده‌سازی می‌کنید.

مدل‌های دیفیوژن (Diffusion models) در بعد زمان و به‌صورت تکرارشونده نمونه‌گیری می‌کنند (مراحل حذف نویز). مدل VAR همین نمونه‌گیری تکرارشونده را در بُعد مقیاس انجام می‌دهد؛ یعنی ابتدا یک توکن 1x1، سپس 2x2 و بعد 4x4 را تا رسیدن به رزولوشن نهایی پیش‌بینی می‌کند و هر مقیاس به مقیاس‌های قبلی مشروط می‌شود. مقاله‌ی سال 2024 نشان داد که VAR در تولید تصویر از قوانین مقیاس‌پذیری مشابه GPT پیروی می‌کند و با بودجه‌ی محاسباتی یکسان، مدل DiT را پشت سر می‌گذارد. در این درس، سازوکار اصلی آن را پیاده‌سازی می‌کنیم.

صورت مسئله

تولید خودبازگشتی (autoregressive) بر مدل‌سازی زبان مسلط شد، چون رفتار مقیاس‌پذیری قابل‌پیش‌بینی دارد: محاسبات بیشتر و پارامترهای بیشتر، پرپلکسیتی کمتر و خروجی‌های بهتری به همراه می‌آورند. تا پیش از سال 2024، در تولید تصویر دو رویکرد اصلی خودبازگشتی وجود داشت: PixelRNN/PixelCNN (پیکسل‌به‌پیکسل) و DALL-E 1 / Parti / MuseGAN (توکن‌به‌توکن روی کدهای VQ-VAE).

هر دو رویکرد با مشکل «ترتیب تولید» روبه‌رو بودند. پیکسل‌ها و توکن‌ها در یک شبکه‌ی دوبعدی چیده شده‌اند، اما مدل خودبازگشتی ناچار است آن‌ها را با ترتیب خطی و یک‌بعدی (raster order) پیمایش کند. پیکسلی که در ابتدای کار در گوشه‌ی تصویر قرار دارد، هیچ تصوری از شکل نهایی کل تصویر ندارد. به همین دلیل، کیفیت تولید تصویر نسبت به کاربرد GPT روی متن مقیاس‌پذیری ضعیف‌تری داشت و با بودجه‌ی پردازشی برابر، هرگز به کیفیت مدل دیفیوژن نرسید.

مدل VAR مشکل ترتیب تولید را با تغییر ماهیت آنچه تولید می‌شود حل می‌کند. VAR به‌جای پیش‌بینی تک‌به‌تک توکن‌های تصویر در فضا، کل تصویر را با رزولوشن‌های فزاینده پیش‌بینی می‌کند. مرحله‌ی 1: پیش‌بینی یک توکن 1x1 («خلاصه‌ی» کلی تصویر). مرحله‌ی 2: پیش‌بینی یک شبکه‌ی 2x2 از توکن‌ها (ویژگی‌های کلی‌تر). مرحله‌ی 3: پیش‌بینی یک شبکه‌ی 4x4. مرحله‌ی K: پیش‌بینی شبکه‌ی نهایی با ابعاد (H/8)x(W/8).

هر مقیاس به تمام مقیاس‌های پیشین اتنشن می‌دهد (به‌صورت علیتی بر حسب «ترتیب مقیاس») و در داخل مقیاس خودش کاملاً موازی عمل می‌کند. با این کار مشکل ترتیب از بین می‌رود: کل تصویر در مقیاس k تنها با یک گذر رو به جلو (forward pass) در ترنسفورمر تولید می‌شود.

مفاهیم پایه

توکن‌ساز چندمقیاسی VQ-VAE

مدل VAR به یک توکن‌ساز گسسته‌ی چندمقیاسی نیاز دارد. این توکن‌ساز برای تصویر xx، دنباله‌ای از شبکه‌های توکنی با رزولوشن‌های تدریجاً بالاتر تولید می‌کند:

x -> encoder -> latent f
f -> tokenize at 1x1: token grid z_1 of shape (1, 1)
f -> tokenize at 2x2: token grid z_2 of shape (2, 2)
...
f -> tokenize at (H/p)x(W/p): token grid z_K of shape (H/p, W/p)

هر zkz_k از یک کتابچه‌ی کد (codebook) مشترک (معمولاً با اندازه‌ی 4096 تا 16384) استفاده می‌کند. توکن‌سازی در هر مقیاس مستقل نیست؛ بلکه طوری آموزش می‌بیند که جمع باقیمانده‌ها (residuals) در هر مقیاس، بتواند ff را بازسازی کند:

f≈upsample(embed(z1),target_size)+⋯+upsample(embed(zK),target_size)f \approx \mathop{\mathrm{upsample}}(\mathop{\mathrm{embed}}(z_1), \text{target\_size}) + \cdots + \mathop{\mathrm{upsample}}(\mathop{\mathrm{embed}}(z_K), \text{target\_size})

این ساختار نوعی VQ باقیمانده (Residual VQ) به شمار می‌رود. مقیاس kk جزئیاتی را ثبت می‌کند که مقیاس‌های 1…k−11 \ldots k-1 از دست داده‌اند. در نهایت دیکودر، مجموع امبدینگ‌های تمام مقیاس‌ها را دریافت کرده و تصویر را می‌سازد.

توکن‌ساز چندمقیاسی VQ یک بار آموزش داده می‌شود (مشابه VQGAN) و سپس فریز (freeze) می‌شود. تمام بار تولید زایشی بر دوش مدل خودبازگشتی است که روی آن سوار می‌شود.

پیش‌بینی مقیاس بعدی

مدل زایشی یک ترنسفورمر است که توکن‌های تمام مقیاس‌های قبلی را می‌بیند و توکن‌های مقیاس بعدی را پیش‌بینی می‌کند.

ساختار دنباله‌ی ورودی:

[START, z_1 tokens, z_2 tokens, z_3 tokens, ..., z_K tokens]

امبدینگ‌های مکانی (position embeddings)، هم شاخص مقیاس و هم موقعیت مکانی درون آن مقیاس را کدگذاری می‌کنند. اتنشن در امتداد ترتیب مقیاس‌ها به‌صورت علیتی و درون هر مقیاس به‌صورت بلوکی (block-wise) است: توکنِ مقیاس kk در موقعیت (i,j)(i, j) می‌تواند به تمام توکن‌های مقیاس‌های 1…k1 \ldots k و همه‌ی موقعیت‌های خودِ مقیاس kk اتنشن داشته باشد. هیچ ترتیبی درون یک مقیاس نیست و علیت درون‌مقیاسی هم وجود ندارد؛ بنابراین همه‌ی موقعیت‌های درون یک مقیاس به‌طور هم‌زمان و موازی پیش‌بینی می‌شوند.

تابع زیان (loss) آموزش: در هر مقیاس kk، مدل با دریافت تمام توکن‌های مقیاس‌های پیشین، توکن‌های zkz_k را پیش‌بینی می‌کند. این کار با تابع زیان آنتروپی متقاطع روی کدهای گسسته‌ی VQ انجام می‌شود؛ ساختاری کاملاً مشابه GPT، با این تفاوت که اینجا «دنباله» بر اساس مقیاس سازمان‌دهی شده است.

فرایند تولید

در مرحله‌ی استنتاج:

generate z_1 = sample from p(z_1)                    # 1 token
generate z_2 = sample from p(z_2 | z_1)              # 4 tokens in parallel
generate z_3 = sample from p(z_3 | z_1, z_2)         # 16 tokens in parallel
...
decode: f = sum of embed-and-upsample scales 1..K
image = VAE_decoder(f)

برای K=10K = 10 مقیاس، تولید خروجی به 10 گذر رو به جلو در ترنسفورمر نیاز دارد. هر گذر، تمام مقیاس خود را به‌صورت موازی تولید می‌کند و هیچ فرایند خودبازگشتیِ توکن‌به‌توکنی درون مقیاس در کار نیست. برای یک تصویر 256x256، این کار در حدود 10 گذر انجام می‌شود؛ درحالی‌که DiT به 28 تا 50 گذر نیاز دارد.

چرا پیش‌بینی مقیاس بعدی از پیش‌بینی توکن بعدی بهتر عمل می‌کند؟

این برتری سه دلیل ساختاری دارد:

  1. سازگاری تصویر درشت‌به‌ریز با آمار تصاویر طبیعی. ادراک بینایی انسان و مجموعه‌داده‌های تصویری، هر دو الگوهای وابسته به مقیاس دارند: ساختار فرکانس‌پایین پایدار و قابل‌پیش‌بینی است و جزئیات فرکانس‌بالا به محتوای فرکانس‌پایین مشروط می‌شوند. پیش‌بینی مقیاس بعدی دقیقاً از همین ویژگی بهره می‌برد.
  2. تولید موازی درون هر مقیاس. برخلاف روش‌های خودبازگشتی توکنی به سبک GPT، مدل VAR همه‌ی توکن‌های یک مقیاس را در یک گام تولید می‌کند. در نتیجه، طول مؤثر توالی تولید به‌جای خطی، لگاریتمی خواهد بود.
  3. نبود سوگیری ناشی از ترتیب تولید. توکن‌های مقیاس k کل مقیاس k-1 را می‌بینند؛ دیگر اثری از سوگیری «سمت چپ» یا «بالای تصویر» نیست که توکن‌های اولیه را مجبور کند پیش از مشخص شدن بافت کلی تصویر، قطعی (commit) شوند.

قوانین مقیاس‌پذیری

تیان و همکاران نشان دادند که مدل VAR برای معیار FID روی مجموعه‌داده‌ی ImageNet، دقیقاً مانند رفتار GPT در پرپلکسیتی، از یک منحنی مقیاس‌پذیری توانی پیروی می‌کند. دو برابر کردن پارامترها یا محاسبات، خطا را به‌طور قابل‌اطمینانی نصف می‌کند. این نخستین مدل زایشی تصویر بود که رفتار مقیاس‌پذیری را به همین شفافیِ مدل‌های زبانی به نمایش گذاشت. در نتیجه، کیفیت مدل‌های مختلف VAR به‌سادگی بر اساس حجم محاسبات قابل‌پیش‌بینی است و نیازی به حدس‌های تجربی برای هر معماری نیست.

ارتباط با مدل‌های دیفیوژن

مدل‌های VAR و دیفیوژن هر دو داستان فشرده‌سازی داده‌ی یکسانی دارند: هر دو، مسئله‌ی تولید را به دنباله‌ای از زیرمسئله‌های ساده‌تر خرد می‌کنند.

  • دیفیوژن: نویز را به‌آرامی اضافه می‌کند و یاد می‌گیرد چطور یک گام آن را برگرداند.
  • VAR: رزولوشن را به‌آرامی اضافه می‌کند و یاد می‌گیرد چطور مقیاس بعدی را پیش‌بینی کند.

این دو مدل به دو محور متفاوت از یک مسئله نگاه می‌کنند. هر دو نیز توزیع‌های شرطی خوش‌رفتاری ارائه می‌دهند. از نظر تجربی، VAR در زمان استنتاج سریع‌تر است (گذرهای کمتر که همگی درون مقیاس موازی‌اند) و در تولید مشروط به کلاس روی ImageNet، با DiT برابری می‌کند یا از آن جلو می‌زند. نسخه‌های متنی VAR (مانند VARclip و HART) اکنون یکی از موضوعات داغ پژوهشی به شمار می‌روند.

پیش‌بینی مقیاس بعدیاز درشت به ریز
NEXT-SCALE PREDICTIONVAR generates an image as a sequence of resolutions, not pixels in raster order. It predicts a 1x1 token summary, then a 2x2 grid, then 4x4, then 8x8, each scale produced in a single parallel pass and conditioned on every coarser scale before it. The generation-order problem of pixel-by-pixel models disappears.1x12x24x48x8پیش‌بینی هر مقیاس در یک گام، مشروط بر تمام مقیاس‌های درشت‌تر
مدل VAR تصویر را به صورت توالی‌ای از وضوح‌ها تولید می‌کند، نه به ترتیب خطی و پیکسل‌به‌پیکسل. این مدل ابتدا خلاصه توکن 1x1، سپس شبکه‌ای 2x2، پس از آن 4x4 و بعد 8x8 را پیش‌بینی می‌کند؛ هر مقیاس در یک گام موازی و مشروط بر تمامی مقیاس‌های درشت‌ترِ قبلی تولید می‌شود. بدین ترتیب مسئله‌ی ترتیب تولید در مدل‌های پیکسل‌به‌پیکسل برطرف می‌گردد.

پیاده‌سازی عملی

در فایل code/main.py این بخش‌ها را پیاده‌سازی می‌کنید:

  1. ساخت یک توکن‌ساز چندمقیاسی VQ کوچک روی داده‌های تصویری ساختگی (حلقه‌های دوبعدی گاوسی).
  2. آموزش یک ترنسفورمر به سبک VAR برای پیش‌بینی توکن‌های مقیاس بعدی.
  3. نمونه‌گیری با 4 بار فراخوانی ترنسفورمر (برای 4 مقیاس) و در نهایت دیکود کردن.
  4. بررسی این‌که آیا آموزش مبتنی بر ترتیب مقیاس، تولید را درون هر مقیاس موازی کرده است یا نه.

این یک پیاده‌سازی آموزشی و کوچک است. هدف اصلی این است که ماسک اتنشن ساختاریافته بر حسب مقیاس و تولید موازیِ درون‌مقیاسی را در عمل ببینید.

تحویل نهایی

خروجی این درس، فایل outputs/skill-var-tokenizer-designer.md خواهد بود؛ مهارتی برای طراحی توکن‌ساز چندمقیاسی: تعیین تعداد مقیاس‌ها، نسبت مقیاس‌ها، اندازه‌ی کتابچه‌ی کد، اشتراک‌گذاری باقیمانده‌ها و معماری دیکودر.

تمرین‌ها

  1. بررسی اثر تعداد مقیاس‌ها (Scale count ablation). مدل VAR را با 4، 6، 8 و 10 مقیاس آموزش دهید. کیفیت بازسازی را در برابر تعداد گذرهای خودبازگشتی بسنجید. مقیاس‌های بیشتر به‌معنای باقیمانده‌های دقیق‌تر و کیفیت بهتر است، اما گذرهای بیشتری می‌طلبد.

  2. اندازه‌ی کتابچه‌ی کد. توکن‌سازهایی با اندازه‌ی کتابچه‌ی کد 512، 4096 و 16384 آموزش دهید. کتابچه‌های بزرگ‌تر بازسازی بهتری ارائه می‌دهند اما کار مدل در پیش‌بینی آن‌ها سخت‌تر می‌شود. نقطه‌ی زانویی (knee) بهینه را پیدا کنید.

  3. بررسی موازی‌سازی درون مقیاس. الگوی اتنشن را در یک مدل آموزش‌دیده‌ی VAR به‌طور مستقیم استخراج کنید. آیا درون مقیاس k، مدل به موقعیت‌های بین مقیاس‌ها اتنشن دارد اما اتنشن درون‌مقیاسی رخ نمی‌دهد؟ صحت پیاده‌سازی ماسک را بسنجید.

  4. مقایسه‌ی مقیاس‌پذیری VAR و DiT. برای مسئله‌ی یکسانِ تولید مشروط به کلاس روی ImageNet، دو مدل VAR و DiT را با بودجه‌ی پارامتری برابر (مثلاً 33M، 130M و 458M) آموزش دهید. نمودار FID در برابر محاسبات را رسم کنید. VAR در هر اندازه باید بالاتر از DiT قرار گیرد؛ نتیجه‌ی مقاله را در ابعاد کوچک بازتولید کنید.

  5. شرطی‌سازی متنی. مدل VAR را طوری توسعه دهید که امبدینگ متن (خروجی pooled مدل CLIP) را با سازوکار adaLN به‌عنوان ورودی شرطی دریافت کند. این همان روش HART است. بررسی کنید که این نمونه‌گیری هم‌راستا با متن چقدر به بهبود FID کمک می‌کند.

اصطلاحات کلیدی

اصطلاح آنچه گفته می‌شود معنای واقعی آن
VAR «مدل خودبازگشتی تصویری» تولید تصویر با پیش‌بینی مقیاس بعدی روی هرمی از شبکه‌های توکنی VQ
پیش‌بینی مقیاس بعدی (Next-scale prediction) «پیش‌بینی از درشت به ریز» مدل با مشروط شدن به تمام مقیاس‌های قبلی، توکن‌ها را در رزولوشن‌های فزاینده پیش‌بینی می‌کند
توکن‌ساز چندمقیاسی VQ (Multi-scale VQ tokenizer) «VQ باقیمانده» یک VQ-VAE که K شبکه‌ی توکنی با رزولوشن فزاینده تولید می‌کند و دیکودر آن همه‌ی مقیاس‌ها را با هم جمع می‌زند
مقیاس k (Scale k) «سطح k از هرم» یکی از سطوح K رزولوشن، از 1x1 در k=1 تا (H/p)x(W/p) در k=K
موازی درون مقیاس (Parallel-within-scale) «یک گذر برای هر مقیاس» تمام توکن‌های مقیاس k تنها در یک گذر رو به جلوی ترنسفورمر تولید می‌شوند، نه به‌صورت خودبازگشتی
علیتی بین مقیاس‌ها (Causal-across-scales) «اتنشن با ترتیب مقیاسی» توکن مقیاس kk می‌تواند به تمام توکن‌های مقیاس‌های 1…k1 \ldots k اتنشن دهد، اما به مقیاس‌های k+1…Kk+1 \ldots K دسترسی ندارد
VQ باقیمانده (Residual VQ) «توکن‌سازی جمع‌پذیر» توکن‌های هر مقیاس، باقیمانده‌ی به‌جامانده از مقیاس‌های پایین‌تر را کدگذاری می‌کنند؛ دیکودر امبدینگ تمام مقیاس‌ها را با هم جمع می‌زند
قانون مقیاس‌پذیری VAR (VAR scaling law) «مقیاس‌پذیری تصویری به سبک GPT» تغییرات معیار FID بر حسب محاسبات از یک تابع توانی پیش‌بینی‌پذیر پیروی می‌کند، درست مثل پرپلکسیتی در مدل‌های زبانی
HART «مدل پیوندی VAR + متن» نوعی VAR مشروط به متن که دیکودینگ تکرارشونده به سبک MaskGIT را با ساختار مقیاسی VAR ترکیب می‌کند
امبدینگ مکانی مقیاس (Scale position embedding) «سه‌گانه‌ی (مقیاس، سطر، ستون)» کدگذاری مکانی که هم شاخص مقیاس و هم مختصات فضاییِ درون آن مقیاس را در خود دارد

برای مطالعه‌ی بیشتر

سؤالات متداول

تفاوت اصلی مدل VAR با روش‌های قبلی خودبازگشتی تصویر چیست؟

روش‌های پیشین توکن‌های تصویر را با ترتیب خطی (راستر) یکی‌یکی پیش‌بینی می‌کردند، اما VAR کل تصویر را در هرمی از رزولوشن‌های فزاینده (1x1، سپس 2x2 و تا کیفیت نهایی) و به‌صورت موازی در هر سطح تولید می‌کند.

چرا سرعت استنتاج VAR از مدل‌های دیفیوژن (مانند DiT) بیشتر است؟

در VAR تمام توکن‌های درون یک مقیاس تنها با یک گذر رو به جلو تولید می‌شوند؛ در نتیجه برای 10 مقیاس فقط 10 گذر نیاز است، درحالی‌که DiT معمولاً به 28 تا 50 گام نمونه‌گیری نیاز دارد.

توکن‌ساز چندمقیاسی در VAR چگونه کار می‌کند؟

این توکن‌ساز از ساختار VQ باقیمانده (Residual VQ) بهره می‌برد که در آن هر مقیاس خطای بازسازی مقیاس‌های پیشین را ثبت می‌کند و دیکودر با جمع‌زدن امبدینگ تمام مقیاس‌ها تصویر نهایی را می‌سازد.

ما رو توی گوگل بیشتر ببین

با افزودن نکست ادمین به «منابع ترجیحی» گوگل، درس‌ها و مطالب ما را در بخش اخبار برتر جستجو بیشتر می‌بینید.