چیت‌شیت

مدل‌های چندوجهی یکپارچه

Unified Multimodal Models

یک طراحی یکپارچه انتخاب کنید: NTP گسسته، دیفیوژن با دو تابع زیان (loss)، دیفیوژن پوشانده‌شده، اینکودرهای مجزا، مقیاس بعدی، هر-به-هر.

  • ۱۲ بخش
  • ۷ درس مرتبط
  • کد و دستورها عیناً از دوره‌ی اصلی
فهرست مطالب
  1. مقایسه‌ی رو در روی چهار طراحی یکپارچه
  2. چه زمانی از کدام استفاده کنیم؟
  3. مسیریابی مجزای Janus-Pro
  4. حلقه‌ی نمونه‌برداری پوشانده‌شده‌ی Show-o
  5. توکنایزر چندمقیاسی پسماند (VAR)
  6. گام دو تابع زیان (Transfusion)
  7. وظایف در کد
  8. فرمول‌های کلیدی
  9. اعداد مهم
  10. عیب‌یابی
  11. کوته‌نوشت‌ها
  12. پرسش‌ها

مقایسه‌ی رو در روی چهار طراحی یکپارچه

مقایسه
عاملChameleon، Emu3TransfusionShow-oJanus-Pro
فرم تصویرتوکن‌های VQ گسستهپچ‌های پیوسته‌ی 16x16توکن‌های VQ گسستهورودی SigLIP، خروجی توکن‌های VQ
تابع زیان (loss) تصویرآنتروپی متقاطع پیش‌بینی توکن بعدیMSE تطبیق جریانآنتروپی متقاطع روی توکن‌های پوشانده‌شدهپیش‌بینی توکن بعدی روی توکن‌های VQ
اتنشن تصویرعلّی (Causal)دوجهته درون بلوک تصویردوجهته درون بلوک تصویربدنه‌ی مشترک به سبک متن
رمزگشایی تصویر1024-4096 گذر، توکن به توکن10-30 گام دیفیوژن~16 گام موازیتوکن به توکن
اینکودرهای بصرییک توکنایزر VQتصویر خطی پچیک توکنایزر VQSigLIP به همراه توکنایزر VQ
نقطه‌ی ضعفسقف کیفیت توکنایزر، استنتاج کُندوزن‌های تابع زیان (loss) نیاز به تنظیم دارنددارای اتلاف به دلیل توکنایزردو توکنایزر برای آموزش
عدد کلیدیEmu3 با FID 5.4 در برابر SDXL با 5.63-5 امتیاز FID بهتر از سبک Chameleon در 7B~16 گام در برابر ~1000GenEval 0.80 در برابر DALL-E 3 0.67

چه زمانی از کدام استفاده کنیم؟

نکته‌ها
  • خانواده‌ی Chameleon: وقتی به تولید تصویر و خروجی چندوجهی ترکیبی از یک دیکودر نیاز دارید.
  • مدل VLM تطبیق‌دهنده (خانواده‌ی LLaVA): فقط برای درک تصویر؛ محاسبات پیش‌آموزش‌دیده‌ی بیشتری را بازاستفاده می‌کند.
  • Emu3: وقتی تولید تصویر، ادراک و ویدیو را از یک چک‌پوینت واحد با قالب پرامپت می‌خواهید.
  • Transfusion: وقتی کیفیت در اولویت اول است و توان پیاده‌سازی دو تابع زیان (loss) را دارید.
  • Show-o: وقتی T2I، اینپینتینگ و VQA را در یک مدل متن‌باز با سرعت معقول می‌خواهید.
  • Janus-Pro: وقتی هم به درک تصویر و هم تولید نیاز دارید؛ برای صرفاً تولید، SD3 یا Flux را انتخاب کنید.
  • VAR: وقتی تصاویر وابسته به کلاس را در حدود 10 گذر می‌خواهید، در برابر 28-50 گذر در DiT.
  • MIO: وقتی ورودی و خروجی گفتار از یک مدل واحد با زمان تا اولین بایت صدا زیر 500 میلی‌ثانیه می‌خواهید.

مسیریابی مجزای Janus-Pro

معماری
درکتولیدتوکن‌های متنتصویر ورودیپرامپت متنیتگ وظیفه مسیر را انتخاب می‌کندSigLIP-SO400mسپس MLP دو لایهتوکنایزر VQشرط تصویری اختیاریبدنه‌ی مشترکمقداردهی اولیه با DeepSeek-MoE-7Bتوکن‌های VQ تصویرپیش‌بینی‌شده توسط بدنهخروجی متنخودبازگشتیدیکودر VQپیکسل‌ها

حلقه‌ی نمونه‌برداری پوشانده‌شده‌ی Show-o

گام‌به‌گام
  1. شروعهمه‌ی توکن‌های تصویر MASK هستند. این مدل ساده از SEQ_LEN برابر 16 و VOCAB برابر 8 استفاده می‌کند.
  2. برنامه‌ی زمانیتابع cosine_schedule(T) برای هر یک از T=8 گام یک نسبت پوشش می‌دهد.
  3. پیش‌بینیترنسفورمر تمام توکن‌های پوشانده‌شده را به صورت موازی پیش‌بینی می‌کند.
  4. تثبیت (commit)توکن‌های با بالاترین اطمینان نگه داشته می‌شوند؛ keep_ratio = max(0.15, 1 - ratios[step]).
  5. تکرارسایر توکن‌ها برای گام بعدی همچنان پوشانده می‌مانند.
  6. پایانتابع step_unmask(tokens, prompt_seed, 1.0) هر توکنی را که هنوز پوشانده است پر می‌کند.

توکنایزر چندمقیاسی پسماند (VAR)

کد
python
SCALES = (1, 2, 4, 8)                           # 4 مقیاس روی یک تصویر 8x8
CODEBOOK = 16                                   # درایه‌ها در هر مقیاس
residual = img.copy()
for scale, book in zip(SCALES, codebooks):
    coarse = downsample(residual, scale)        # پولینگ به ابعاد scale x scale
    tok = encode(coarse, book)                  # نزدیک‌ترین اندیس کد
    recon = book[tok]
    residual = residual - upsample(recon, IMG)  # آنچه هنوز از دست رفته است
    tokens.append(tok)
out = out + upsample(book[tok], IMG)            # دیکودر تمام مقیاس‌ها را جمع می‌کند

گام دو تابع زیان (Transfusion)

کد
python
weights = {"text_scale": 0, "img_scale": 0, "text_w": 1.0, "img_w": 0.1}
mask = build_mask(tokens)            # متن علّی، تصویر دوجهته
text_loss = sum(cross_entropy_toy(p) for p in text_probs) / len(text_probs)
t = random.random()                  # یک گام زمانی به ازای هر تصویر
xt = (1 - t) * x + t * n             # پچ نویزی
target_vel = n - x                   # هدف سرعت
img_loss = mse(pred_flat, tgt_flat)  # MSE تطبیق جریان
total = weights["text_w"] * text_loss + weights["img_w"] * img_loss

وظایف در کد

کار و کد
وظیفهکد
توکن‌های VQ پسماند در هر مقیاسtokenize_multiscale(img, codebooks)
تصویر 8x8 به 4 شناسه‌ی توکنimage_to_tokens(img)
شمارش توکن‌های تصویرTokCost("image 512x512", 512, 8).tokens()
ترکیب لاجیت‌های هدایت‌شدهcfg_mix(cond_logits, uncond_logits, gamma)
نمونه‌برداری با CFG در دمای 0.8sample_tokens(cond, uncond, gamma=3.0)
انتخاب درک یا تولیدroute(prompt)
چینش دایره واژگان 4 وجهیbuild_vocab()
ردگیری محاسبات بودجه‌ی زمان تا اولین بایت صداstreaming_decode_latency(model_size_b=8)

فرمول‌های کلیدی

مفهوم‌ها
کوانتیزه‌سازی برداری باقیمانده
$f \approx \sum_k \mathrm{upsample}(\mathrm{embed}(z_k))$. مقیاس k خطای مقیاس‌های 1 تا k-1 را پوشش می‌دهد.
تطبیق جریان
$x_t = (1-t) x_0 + t \epsilon$. تابع زیان (loss) برابر MSE بین $v_\theta(x_t, t)$ و $\epsilon - x_0$ است.
CFG
ترکیب = بدون‌شرط + گاما ضربدر (با‌شرط منهای بدون‌شرط).
نسبت پوشش کسینوسی
$\cos(\pi t / 2T)$. نسبت 1.0 در گام 0، و بدون پوشش در گام T.
تابع زیان (loss) مدل Show-o
آنتروپی متقاطع روی توکن‌های پوشانده‌شده. پیش‌بینی توکن بعدی متن فقط آخرین توکن را می‌پوشاند.
واژگان Chameleon
32000 شناسه متن به علاوه‌ی 8192 تصویر برابر 40192.
ویدیوی Emu3
32 * 32 * 8 = 8,192 توکن برای 4 ثانیه در 8 فریم بر ثانیه، 256x256.

اعداد مهم

پیش‌فرض‌ها
تنظیمپیش‌فرضیادداشت
Chameleon codebook K81921024 توکن برای تصویر 512x512
Emu3 codebook327684096 توکن برای تصویر 512x512 با PSNR برابر 30.5 dB
CFG guidance weight3.0-7.0تولید با و بدون کپشن
Emu3 temperature0.81.0 برای ادراک
Transfusion denoise steps10-30مشروط به متن پیشین
MaskGIT iterations8-16برنامه‌ی زمان‌بندی کسینوسی به خوبی عمل می‌کند
VAR scales K1010 گذر برای تصویر 256x256
TTFAB target<500msحس مکالمه‌ای و طبیعی

عیب‌یابی

عیب‌یابی
  • واگرایی آموزش early-fusion مدل 34B

    علت
    انفجار بزرگی لاجیت در لایه‌های عمیق
    راه‌حل
    QK-Norm، دراپ‌اوت بعد از هر جمع پسماند
  • ماندن PSNR تصویر نزدیک 26-28 dB

    علت
    سقف کیفیت توکنایزر VQ-VAE
    راه‌حل
    توکنایزر بهتر، یا استفاده از پچ‌های پیوسته
  • تسلط یک هد تابع زیان (loss)

    علت
    عدم تطابق برنامه‌زمانی NTP و دیفیوژن
    راه‌حل
    تنظیم وزن‌های تابع زیان (loss)
  • دست‌سازه‌ها در تصویر

    علت
    دمای بسیار بالا
    راه‌حل
    استفاده از دمای 0.8 برای تولید تصویر
  • فروپاشی مُد

    علت
    دمای بسیار پایین
    راه‌حل
    افزایش دما
  • حدود 2 دقیقه برای تصویر 512x512

    علت
    4096 توکن با سرعت 30 توکن بر ثانیه
    راه‌حل
    دیکودینگ حدسی، بهینه‌سازی KV-cache
  • نبود کانتکست بین‌وجهی

    علت
    رد شدن از مرحله‌ی 2 با داده‌های درهم‌تنیده
    راه‌حل
    آموزش هر چهار مرحله‌ی برنامه‌ی درسی (curriculum)
  • کیفیت پایین گفتار

    علت
    رد شدن از مرحله‌ی 3 ارتقای گفتار
    راه‌حل
    افزودن داده‌های صوتی مرحله‌ی 3

کوته‌نوشت‌ها

اصطلاح‌ها
VAR
خودبازگشتی بصری؛ پیش‌بینی مقیاس بعدی روی هرمی از شبکه‌های VQ.
VQ-VAE
خودکدگذار متغیر کوانتیزه‌شده‌ی برداری؛ نگاشت ویژگی‌ها به اندیس‌های کتاب کد.
NTP
پیش‌بینی توکن بعدی؛ پیش‌بینی توکن i+1 از روی توکن‌های 0 تا i.
CFG
هدایت بدون طبقه‌بند؛ ترکیب لاجیت‌های شرطی و غیرشرطی.
IBQ
کوانتایزر گلوگاه معکوس؛ کلاس توکنایزر Emu3، کتاب کد +32768.
MMDiT
ترنسفورمر دیفیوژن چندوجهی؛ بک‌بون SD3 با اتنشن مشترک.
TTFAB
زمان تا اولین بایت صدا؛ از صدای کاربر تا اولین خروجی صدا.
Residual-VQ
کتاب کدهای چندلایه؛ لایه‌ی پایه محتواست و لایه‌های بعدی آهنگ گفتار را می‌افزایند.

پرسش‌ها

پرسش و پاسخ
چرا یک اینکودر بصری واحد پاسخگو نیست؟
کدهای VQ معناشناسی ضعیفی دارند؛ ویژگی‌های SigLIP به خوبی بازسازی نمی‌شوند.
چرا اینپینتینگ در Show-o بدون هزینه‌ی اضافه است؟
آموزش بر پایه‌ی پیش‌بینی توکن‌های پوشانده‌شده است؛ کافی است یک ناحیه را ماسک و پیش‌بینی کنید.
چرا VAR سریع است؟
یک گذر ترنسفورمر کل یک مقیاس را به صورت موازی پیش‌بینی می‌کند.
متن در Transfusion به چه چیزهایی اتنشن دارد؟
به متن‌های پیشین و تصاویر قبلی؛ تصاویر متن‌های پیش از خود را می‌بینند.
چرا Janus-Pro بهتر از Janus عمل کرد؟
7B پارامتر در برابر 1.3B و 72M جفت داده‌ی مرحله‌ی 2 در برابر 26M.
MIO چگونه شناسه‌ها را مجزا نگه می‌دارد؟
هر وجه بازه‌ی شناسه‌ی متفاوتی در یک دایره واژگان واحد دریافت می‌کند.