چیتشیت
مدلهای چندوجهی یکپارچه
Unified Multimodal Models
یک طراحی یکپارچه انتخاب کنید: NTP گسسته، دیفیوژن با دو تابع زیان (loss)، دیفیوژن پوشاندهشده، اینکودرهای مجزا، مقیاس بعدی، هر-به-هر.
فهرست مطالب
مقایسهی رو در روی چهار طراحی یکپارچه
مقایسه| عامل | Chameleon، Emu3 | Transfusion | Show-o | Janus-Pro |
|---|---|---|---|---|
| فرم تصویر | توکنهای VQ گسسته | پچهای پیوستهی 16x16 | توکنهای VQ گسسته | ورودی SigLIP، خروجی توکنهای VQ |
| تابع زیان (loss) تصویر | آنتروپی متقاطع پیشبینی توکن بعدی | MSE تطبیق جریان | آنتروپی متقاطع روی توکنهای پوشاندهشده | پیشبینی توکن بعدی روی توکنهای VQ |
| اتنشن تصویر | علّی (Causal) | دوجهته درون بلوک تصویر | دوجهته درون بلوک تصویر | بدنهی مشترک به سبک متن |
| رمزگشایی تصویر | 1024-4096 گذر، توکن به توکن | 10-30 گام دیفیوژن | ~16 گام موازی | توکن به توکن |
| اینکودرهای بصری | یک توکنایزر VQ | تصویر خطی پچ | یک توکنایزر VQ | SigLIP به همراه توکنایزر VQ |
| نقطهی ضعف | سقف کیفیت توکنایزر، استنتاج کُند | وزنهای تابع زیان (loss) نیاز به تنظیم دارند | دارای اتلاف به دلیل توکنایزر | دو توکنایزر برای آموزش |
| عدد کلیدی | Emu3 با FID 5.4 در برابر SDXL با 5.6 | 3-5 امتیاز FID بهتر از سبک Chameleon در 7B | ~16 گام در برابر ~1000 | GenEval 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
معماریحلقهی نمونهبرداری پوشاندهشدهی Show-o
گامبهگام- شروعهمهی توکنهای تصویر
MASKهستند. این مدل ساده ازSEQ_LENبرابر 16 وVOCABبرابر 8 استفاده میکند. - برنامهی زمانیتابع
cosine_schedule(T)برای هر یک از T=8 گام یک نسبت پوشش میدهد. - پیشبینیترنسفورمر تمام توکنهای پوشاندهشده را به صورت موازی پیشبینی میکند.
- تثبیت (commit)توکنهای با بالاترین اطمینان نگه داشته میشوند؛
keep_ratio = max(0.15, 1 - ratios[step]). - تکرارسایر توکنها برای گام بعدی همچنان پوشانده میمانند.
- پایانتابع
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.8 | sample_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 K | 8192 | 1024 توکن برای تصویر 512x512 |
Emu3 codebook | 32768 | 4096 توکن برای تصویر 512x512 با PSNR برابر 30.5 dB |
CFG guidance weight | 3.0-7.0 | تولید با و بدون کپشن |
Emu3 temperature | 0.8 | 1.0 برای ادراک |
Transfusion denoise steps | 10-30 | مشروط به متن پیشین |
MaskGIT iterations | 8-16 | برنامهی زمانبندی کسینوسی به خوبی عمل میکند |
VAR scales K | 10 | 10 گذر برای تصویر 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 چگونه شناسهها را مجزا نگه میدارد؟
- هر وجه بازهی شناسهی متفاوتی در یک دایره واژگان واحد دریافت میکند.