فاز 12 · درس 14

معماری Show-o: یکپارچه‌سازی درک و تولید تصویر با دیفیوژن گسسته

نوع
مفهومی
زمان
حدود 120 دقیقه
زبان‌ها
Python (stdlib, masked-discrete-diffusion sampler)
پیش‌نیاز
فاز 12 · 13 (ترنسفیوژن)
یک بوم شطرنجی که بخش‌هایی از آن به تدریج از حالت محو به کاشی‌های واضح تصویری تبدیل می‌شوند و در کنار نواری از کلمات متنی قرار دارند.
فهرست مطالب
  1. اهداف یادگیری
  2. صورت مسئله
  3. مفاهیم کلیدی
  4. دیفیوژن گسسته‌ی ماسک‌شده (MaskGIT)
  5. ساختار Show-o: یک ترنسفورمر، ماسک ترکیبی
  6. نمونه‌برداری موازی
  7. چند وظیفه در یک چک‌پوینت
  8. برنامه‌ی زمان‌بندی ماسک‌گذاری
  9. مدل Show-o2
  10. جایگاه Show-o در نقشه مدل‌ها
  11. استفاده در عمل
  12. خروجی کاربردی
  13. تمرین‌ها
  14. اصطلاحات کلیدی
  15. برای مطالعه‌ی بیشتر

در توسعه‌ی سیستم‌های هوش مصنوعی چندمدالیته، همواره میان دو مسیر چالش وجود داشته است: مدل‌های خودبازگشتی مثل Chameleon که استنتاج بسیار کندی دارند، و مدل‌های ترکیبی پیوسته مانند Transfusion که آموزش آن‌ها به‌دلیل تفاوت مقیاس عددیِ توابع زیان، به تنظیمات پیچیده‌ی هایپرپارامترها وابسته است. مدل Show-o مسیر سومی را باز می‌کند که هر دو مدالیته را گسسته نگه می‌دارد، اما سرعت تولید تصویر را به‌شکل چشمگیری افزایش می‌دهد.

این مدل با الهام از MaskGIT، به جای تولید توکن‌به‌توکن، از دیفیوژن گسسته‌ی ماسک‌شده استفاده می‌کند و تصویر را تنها در حدود 16 مرحله موازی می‌سازد. به این ترتیب، وظایف متنوعی مثل درک بصری (VQA)، تولید متن‌به‌تصویر و اینپینتینگ درون یک ترنسفورمر واحد و با یک تابع زیان یکپارچه پیاده‌سازی می‌شوند.

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

ترنسفیوژن (Transfusion) بازنمایی‌های پیوسته و گسسته را با هم ترکیب می‌کند. در مقابل، مدل Show-o (شی و همکاران، اوت 2024) مسیر متفاوتی را در پیش می‌گیرد: توکن‌های متن از پیش‌بینی توکن بعدی (Next-Token Prediction یا NTP) علی استفاده می‌کنند و توکن‌های تصویر بر پایه‌ی دیفیوژن گسسته‌ی ماسک‌شده (masked discrete diffusion) و با الهام از MaskGIT تولید می‌شوند. هر دو مدالیته درون یک ترنسفورمر (Transformer) واحد با ماسک اتنشن (attention) ترکیبی می‌نشینند. حاصل این طراحی، یکپارچه‌سازی وظایف VQA، متن‌به‌تصویر (T2I)، اینپینتینگ (inpainting) و تولید چندمدالیته‌ای روی یک بک‌بون (backbone)، یک توکنایزر برای هر مدالیته و یک فرمولاسیون واحد برای تابع زیان (توسعه‌ی پیش‌بینی توکن بعدی به پیش‌بینی ماسک‌شده) است. در این درس معماری Show-o را بررسی می‌کنیم؛ اینکه چرا دیفیوژن گسسته‌ی ماسک‌شده روشی موازی و چندمرحله‌ای برای تولید سریع تصویر است، و چه تفاوت‌هایی با Transfusion و Emu3 دارد.

اهداف یادگیری

  • تشریح دیفیوژن گسسته‌ی ماسک‌شده: برنامه‌ی زمان‌بندی (schedule) که توکن‌ها را به‌طور یکنواخت ماسک می‌کند و سپس از ترنسفورمر می‌خواهد آن‌ها را بازیابی کند.
  • مقایسه‌ی رمزگشایی موازی تصویر (Show-o, MaskGIT) با رمزگشایی خودبازگشتی تصویر (Chameleon, Emu3) از نظر سرعت و کیفیت.
  • نام بردن از چهار وظیفه‌ای که Show-o در یک چک‌پوینت (checkpoint) پشتیبانی می‌کند: تولید متن، VQA، متن‌به‌تصویر و اینپینتینگ تصویر.
  • انتخاب یک برنامه‌ی زمان‌بندی ماسک‌گذاری (کسینوسی، خطی، بریده‌شده) و تحلیل اثر آن بر کیفیت نمونه‌های تولیدی.

صورت مسئله

آموزش Transfusion با دو تابع زیان به‌خوبی جواب می‌دهد، اما دینامیک پیچیده‌تری دارد؛ مقیاس عددی تابع زیان دیفیوژن پیوسته با تابع زیان گسسته‌ی NTP هم‌خوان نیست. متعادل‌کردن وزن این دو تابع زیان نیازمند جست‌وجوی هایپرپارامترهاست. بنابراین معماری آن در عین کارآمدی، پیچیده است.

پاسخ Show-o به این چالش سرراست است: هر دو مدالیته را مانند Chameleon گسسته نگه دارید، اما تصاویر را به‌جای تولید ترتیبی، به‌صورت موازی و از طریق دیفیوژن گسسته‌ی ماسک‌شده بسازید. در این حالت، هدف آموزشی به یک پیش‌بینی توکن ماسک‌شده‌ی واحد تبدیل می‌شود که پیش‌بینی توکن بعدی را به‌شکلی طبیعی تعمیم می‌دهد.

مفاهیم کلیدی

دیفیوژن گسسته‌ی ماسک‌شده (MaskGIT)

ترفند اصلی چانگ و همکاران (Chang et al.، 2022) در MaskGIT بسیار هوشمندانه است. کار را از یک تصویر کاملاً ماسک‌شده شروع می‌کنید (همه‌ی توکن‌ها شناسه‌ی اختصاصی <MASK> دارند). در هر مرحله، تمام توکن‌های ماسک‌شده را به‌طور موازی پیش‌بینی می‌کنید، سپس K پیش‌بینی با بالاترین درجه‌ی اطمینان را نگه می‌دارید و باقی را دوباره ماسک می‌کنید. پس از حدود 8 تا 16 تکرار، همه‌ی توکن‌ها پر می‌شوند. برنامه‌ی زمان‌بندیِ تعداد توکن‌هایی که در هر مرحله از حالت ماسک خارج می‌شوند تنظیم‌شدنی است و زمان‌بندی‌های کسینوسی عملکرد بسیار خوبی دارند.

آموزش مدل ساده است: یک نسبت ماسک‌گذاری را به‌طور یکنواخت از بازه‌ی [0, 1] نمونه‌برداری کنید، آن را روی توکن‌های VQ تصویر اعمال کنید، و به ترنسفورمر یاد دهید توکن‌های ماسک‌شده را بازیابی کند. این دقیقاً همان کاری است که BERT برای متن انجام داد، منتها در مقیاس تولید تصویر.

ساختار Show-o: یک ترنسفورمر، ماسک ترکیبی

مدل Show-o رویکرد MaskGIT را درون یک ترنسفورمر بر پایه‌ی مدل زبانی علی پیاده می‌کند. ساختار ماسک اتنشن به این صورت است:

  • توکن‌های متنی: علی (مشابه LLMهای استاندارد).
  • توکن‌های تصویر: کاملاً دوطرفه (bidirectional) درون بلوک تصویر (تا توکن‌های ماسک‌شده در حین پیش‌بینی بتوانند همه‌ی توکن‌های دیگر تصویر را ببینند).
  • متن‌به‌تصویر: متن به تصاویر پیشین (prior) اتنشن می‌دهد، و تصویر به متن پیشین.

آموزش مدل به‌صورت متناوب بین این سه حالت جابه‌جا می‌شود:

  1. آموزش استاندارد NTP روی توالی‌های متنی.
  2. نمونه‌های متن‌به‌تصویر (T2I): متن به تصویر، با توکن‌های تصویر ماسک‌شده و تابع زیان پیش‌بینی توکن‌های ماسک‌شده.
  3. نمونه‌های VQA: تصویر به متن، با توکن‌های متنی ماسک‌شده (که در عمل همان NTP است).

تابع زیان یکپارچه‌ی مدل، آنتروپی متقاطع (Cross-Entropy) روی توکن‌های <MASK> است که هم NTP متن (که در آن فقط آخرین توکن «ماسک» شده است) و هم دیفیوژن ماسک‌شده‌ی تصویر (که زیرمجموعه‌ای تصادفی از آن ماسک می‌شود) را پوشش می‌دهد.

نمونه‌برداری موازی

مدل Show-o یک تصویر را به‌جای حدود 1000 مرحله (حالت خودبازگشتی توکن‌به‌توکن) یا حدود 20 مرحله (دیفیوژن پیوسته)، در حدود 16 مرحله تولید می‌کند. در هر گام، همه‌ی توکن‌های ماسک‌شده را به‌صورت موازی پیش‌بینی کنید؛ K توکن با بیشترین اطمینان را commit کنید؛ و این چرخه را تکرار نمایید.

مقایسه کنید:

  • مدل‌های Chameleon / Emu3 (خودبازگشتی روی توکن‌ها): به تعداد N_tokens گذر رو به جلو (forward pass) نیاز دارند که معمولاً 1024 تا 4096 بار برای هر تصویر است.
  • مدل Transfusion (دیفیوژن پیوسته): حدود 20 مرحله که هر کدام یک گذر کامل ترنسفورمر است.
  • مدل Show-o (دیفیوژن گسسته‌ی ماسک‌شده): حدود 16 مرحله که هر کدام یک گذر کامل ترنسفورمر است.

مدل Show-o در مقیاس‌های مشابه از Chameleon سریع‌تر است و از نظر تعداد مراحل تقریباً با Transfusion برابری می‌کند، در حالی که هزینه‌ی هر مرحله‌ی آن کمتر است (لاجیت‌های واژگان گسسته در مقایسه با تابع زیان MSE پیوسته).

چند وظیفه در یک چک‌پوینت

مدل Show-o در زمان استنتاج بر اساس قالب پرامپت (prompt) ورودی، از چهار وظیفه پشتیبانی می‌کند:

  • تولید متن: خروجی متنی استاندارد و خودبازگشتی.
  • وظیفه‌ی VQA: ورودی تصویر، خروجی متن.
  • متن‌به‌تصویر: ورودی متن، خروجی تصویر از طریق دیفیوژن گسسته‌ی ماسک‌شده.
  • اینپینتینگ: ورودی تصویری با چند توکن ماسک‌شده، و پر کردن بخش‌های خالی در خروجی.

قابلیت اینپینتینگ بدون هیچ هزینه‌ی اضافی، مستقیماً از هدف آموزشی پیش‌بینی ماسک‌شده حاصل می‌شود. کافی است بخشی از شبکه‌ی توکن‌های VQ را ماسک کنید، بقیه‌ی توکن‌ها را همراه با پرامپت متنی به مدل بدهید و توکن‌های ماسک‌شده را پیش‌بینی کنید.

برنامه‌ی زمان‌بندی ماسک‌گذاری

برنامه‌ی زمان‌بندیِ خروج توکن‌ها از حالت ماسک در هر مرحله، کیفیت نهایی خروجی را تعیین می‌کند. تیم Show-o زمان‌بندی کسینوسی را پیشنهاد می‌دهد:

mask_ratio(t)=cos⁡(πt2T)t=0,…,T\text{mask\_ratio}(t) = \cos\left(\frac{\pi t}{2T}\right) \qquad t = 0, \ldots, T

در گام 0، همه‌ی توکن‌ها ماسک هستند (نسبت 1.0). در گام TT، هیچ توکنی ماسک نیست. تابع کسینوسی بیشترین وزن مراحل را روی نسبت‌های میان‌رده می‌گذارد؛ درست همان‌جایی که پیش‌بینی بیشترین بار اطلاعاتی را دارد. زمان‌بندی‌های خطی هم کار می‌کنند، اما رشد کیفیت در آن‌ها زودتر متوقف می‌شود.

مدل Show-o2

مدل Show-o2 (نسخه‌ی ارتقایافته در سال 2025، arXiv 2506.15564) مقیاس Show-o را بالا می‌برد: پایه‌ی LLM بزرگ‌تر، توکنایزر بهتر و زمان‌بندی ماسک اصلاح‌شده، اما با همان الگوی معماری.

جایگاه Show-o در نقشه مدل‌ها

در رده‌بندی معماری‌های سال 2026:

  • توکن‌های گسسته + NTP: مدل‌های Chameleon و Emu3. پیاده‌سازی ساده اما استنتاج کند.
  • توکن‌های گسسته + دیفیوژن ماسک‌شده: مدل‌های Show-o، MaskGIT، LlamaGen و Muse. نمونه‌برداری موازی، ولی همچنان همراه با اتلاف کیفیت ناشی از توکنایزر.
  • بازنمایی پیوسته + دیفیوژن: مدل‌های Transfusion، MMDiT و DiT. بالاترین کیفیت، اما فرایند آموزش پیچیده‌تر.
  • بازنمایی پیوسته + تطبیق جریان (Flow Matching) در یک VLM: مدل‌های JanusFlow و InternVL-U؛ جدیدترین رویکردها.

معیار انتخاب بر اساس کاربرد: اگر در یک مدل وزن‌باز و با سرعتی معقول به ترکیب T2I، اینپینتینگ و VQA نیاز دارید، Show-o بهترین گزینه است. اگر کیفیت تصویر اولویت اول شماست و می‌توانید از پس پیچیدگی‌های آموزش با دو تابع زیان برآیید، Transfusion را انتخاب کنید.

مدل یکپارچه SHOW-Oمتن چپ‌به‌راست · تصویر به صورت موازی آشکار می‌شود
SHOW-O UNIFIEDText tokens are generated one at a time, left to right, by next-token prediction. Image tokens start fully masked and are recovered in parallel: each step predicts every masked cell at once and keeps the most confident, re-masking the rest. After a handful of waves the whole image is filled in — far fewer steps than autoregressive image decoding.متن:تصویر: آشکارسازی ماسک موازیپیش‌بینی علی توکن
توکن‌های متن به صورت تک‌به‌تک و چپ‌به‌راست با پیش‌بینی توکن بعدی تولید می‌شوند. توکن‌های تصویر ابتدا کاملاً ماسک شده‌اند و به صورت موازی بازسازی می‌شوند: در هر گام، تمام خانه‌های ماسک‌شده یک‌باره پیش‌بینی شده و مطمئن‌ترین‌ها حفظ می‌شوند و بقیه دوباره ماسک می‌گردند. پس از چند موج اندک، کل تصویر کامل می‌شود — با گام‌هایی بسیار کمتر نسبت به رمزگشایی خودبازگشتی تصویر.

استفاده در عمل

فایل code/main.py نمونه‌برداری Show-o را شبیه‌سازی می‌کند:

  • یک شبکه‌ی آزمایشی شامل 16 توکن VQ.
  • یک «ترنسفورمر» ساختگی (mock) که لاجیت‌ها را بر اساس پرامپت و توکن‌های ناماسک فعلی پیش‌بینی می‌کند.
  • نمونه‌برداری موازی ماسک‌شده طی 8 مرحله با زمان‌بندی کسینوسی.
  • نمایش وضعیت‌های میانی (روند تغییر الگوی ماسک) و خروجی نهایی توکن‌ها.

کد را اجرا کنید و محو شدن مرحله‌به‌مرحله‌ی ماسک را ببینید.

خروجی کاربردی

خروجی این درس فایل outputs/skill-unified-gen-model-picker.md است. این راهنما به شما کمک می‌کند تا برای محصولی که با محدودیت مدل‌های وزن‌باز، هم‌زمان به درک تصویر (VQA، کپشن‌نویسی) و تولید تصویر (T2I، اینپینتینگ) نیاز دارد، با تحلیل دقیق موازنه‌ها بین خانواده‌ی Show-o، خانواده‌ی Transfusion/MMDiT و خانواده‌ی Emu3 / Chameleon دست به انتخاب بزنید.

تمرین‌ها

  1. دیفیوژن گسسته‌ی ماسک‌شده نمونه‌برداری را در حدود 16 مرحله انجام می‌دهد. چرا در 1 مرحله انجام نمی‌شود؟ اگر در همان گام 0 همه‌ی توکن‌ها را از ماسک خارج کنید چه مشکلی پیش می‌آید؟

  2. قابلیت اینپینتینگ به‌رایگان در دیفیوژن ماسک‌شده در دسترس است. یک سناریوی محصول واقعی یا فرضی پیشنهاد دهید که در آن قابلیت اینپینتینگ Show-o یک مدل تخصصی اینپینتینگ را شکست دهد.

  3. زمان‌بندی کسینوسی در برابر زمان‌بندی خطی: تعداد توکن‌های ناماسک در هر مرحله را برای T=8 محاسبه کنید. کدام زمان‌بندی تعادل بهتری دارد؟

  4. یک تصویر 512x512 در Show-o شامل 1024 توکن است. با اندازه‌ی واژگان K=16384K=16384، مدل معادل 1024⋅log⁡2(16384)=14,3361024 \cdot \log_2(16384) = 14{,}336 بیت (حدود 1.75 KiB) داده تولید می‌کند. مدل Stable Diffusion معادل 51251224 بیت = 6,291,456 بیت (حدود 768 KiB) پیکسل خام تولید می‌کند. نسبت فشرده‌سازی چقدر است و این فشرده‌سازی چه هزینه‌ای از نظر کیفی به همراه دارد؟

  5. مقاله‌ی LlamaGen (arXiv:2406.06525) را بخوانید. مدل تصویر خودبازگشتیِ مشروط به کلاس در LlamaGen چه تفاوتی با رویکرد ماسک‌شده‌ی Show-o دارد؟

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

اصطلاح اصطلاح رایج معنای دقیق فنی
دیفیوژن گسسته‌ی ماسک‌شده (Masked discrete diffusion) «به سبک MaskGIT» آموزش مدل برای پیش‌بینی توکن‌های ماسک‌شده؛ در زمان استنتاج، پیش‌بینی‌های با بالاترین اطمینان به‌صورت تکرارشونده از حالت ماسک خارج می‌شوند
زمان‌بندی کسینوسی (Cosine schedule) «برنامه‌ی خروج از ماسک» افت نسبت ماسک طی مراحل استنتاج؛ رشد اطمینان را در مراحل میانی متمرکز می‌کند
رمزگشایی موازی (Parallel decoding) «تولید همه‌ی توکن‌ها با هم» پیش‌بینی کل توالی توکن‌های ماسک‌شده در هر مرحله تنها با یک گذر رو به جلو، و سپس commit کردن K توکن برتر
اتنشن ترکیبی (Hybrid attention) «ترکیب علی و دوطرفه» ماسکی که روی توکن‌های متنی، علی (causal) و درون بلوک‌های تصویری به‌صورت دوطرفه عمل می‌کند
اینپینتینگ (Inpainting) «تولید برای پر کردن جای خالی» شرطی‌سازی روی تصویری که بخشی از توکن‌هایش ماسک شده و پیش‌بینی توکن‌های مفقود؛ قابلیتی که بدون هزینه‌ی اضافی از هدف آموزشی به دست می‌آید
نرخ تثبیت (Commitment rate) «تعداد K توکن برتر در هر مرحله» تعداد توکن‌هایی که در هر تکرار وضعیت قطعی پیدا می‌کنند؛ عاملی که موازنه‌ی سرعت استنتاج و کیفیت خروجی را کنترل می‌کند

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

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

دیفیوژن گسسته‌ی ماسک‌شده در مدل Show-o چگونه کار می‌کند؟

مدل از یک شبکه‌ی کاملاً ماسک‌شده شروع می‌کند و در هر مرحله توکن‌های ماسک‌شده را به‌طور موازی پیش‌بینی می‌کند. سپس K توکن با بالاترین اطمینان تثبیت شده و بقیه مجدداً ماسک می‌شوند؛ این چرخه طی حدود 16 مرحله تا تکمیل تصویر تکرار می‌شود.

سرعت تولید تصویر در Show-o چه تفاوتی با مدل‌های خودبازگشتی مثل Emu3 یا Chameleon دارد؟

مدل‌های خودبازگشتی نیازمند هزاران گذر رو به جلو (یک گذر به ازای هر توکن) هستند، در حالی که Show-o با پیش‌بینی موازی توکن‌ها، فرایند تولید را معمولاً در حدود 16 مرحله به پایان می‌رساند و بسیار سریع‌تر است.

چرا قابلیت اینپینتینگ در Show-o بدون هزینه‌ی اضافی فعال می‌شود؟

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

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

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