Transfüzyon: Autoregressive Text + Diffusion Image in One Transformer
Type: Build
Languages: Python (stdlib, two-loss trainer on MNIST-scale toy)
Prerequisites: Phase 12 · 11 (Chameleon), Phase 8 (Generative AI)
Time: ~180 minutes
Öğrenme Hedefleri
- Tek omurgasına iki kayıp (metin jetonlarında NTP, görüntü yamalarında difüsiyon MSE) yapan bir transformatörü telleştirin.
- Resim yamaları arasındaki iki yönlü dikkatin ve metin işaretleri üzerinde nedenlik dikkatin neden doğru maske seçeneği olduğunu açıklayın.
- Transfusion tarzı (daima görüntüler, difüzyon kaybı) ile Chameleon tarzı (diskret görüntüler, NTP) hesaplama, kalite ve kod karmaşıklığı ile karşılaştırın.
- MMDiT'nin katkılarını belirtin: her blokta modalite spesifik ağırlıklar, kalan akımdaki ortak dikkat.
Sorun
Diskret vs. Sürekli görüntü belirtileri tartışması LLM'lerden daha eski. Sürekli temsiller (çık pikseller, VAE latenları) ayrıntıları korur. Diskret belirtiler (VQ indeksleri) transformatörün yerel sözlüklerine uyar ancak kuantitasyon aşamasında ayrıntıları kaybeder.
Chameleon / Emu3 ayrılığa girdi: bir kayıp, bir mimarlık, ancak görüntü sadakati tokenizer kalitesi ile sınırlandı.
Diffusion modelleri sürekli devam etti: olağanüstü görüntü kalitesi, ancak LLM'den ayrı bir model, karmaşık gürültü programı mühendisliği ve metin üretimi ile temiz bir entegrasyon yoktu.
Transfüzyon soruyor: İkisini de alabilir miyiz? Resimleri sürekli tut, bir model eğit, iki kayıpı bir gradient adımına dikişleyerek kullan.
Anlaşım
İki kayıp mimarisi
Tek bir dekoderli transformatör, içeren bir dizini işliyor:
- Metin işaretleri (BPE sözcükten ayrıntılı).
- Resim yamaları (doğru, 16x16 piksel blokları bir ViT kodlayıcı girişinin aynı lineer yerleştirme yoluyla gizli sönük bir şekilde projelendi).
<image>ve</image>Sürekli yamaların yaşadığı yerleri işaretleyen etiketler.
Ön geçiş bir kez geçer. Kayıp her token için iki baştan birini seçer:
- Metin işaretleri için: sözcük logit başındaki standart çapraz entropi.
- Resim yamaları için: Sürekli yamalardaki difüzyon kaybı her yamalara eklenen gürültüyü tahmin eder.
Bu kayıplar, ortak ağırlıkları aynı anda iyileştirir.
Dikkat maskası: sebepli metin + iki yönlü görüntü
Metin işaretleri nedensel olmalıdır. Bir metin işaretinin gelecekteki metine katılımını veya öğretmenlerin molaları zorlamasını yapmasına izin veremezsiniz.
Maske:
M[i, j] = 1 if:
(i is text and j is text and j <= i) # causal for text
OR (i is image and j is image and same_image_block(i, j)) # bidirectional within image
OR (i is text and j is image and j < i_image_end) # text attends to previous images
OR (i is image and j is text and j < i_image_start) # image attends to preceding textEğitim ve sonuçlama için blok üçgenli bir maske olarak uygulanır.
Transformatörün içinde difüzyon kaybı
Düzünlük kaybı standarttır: bir görüntü yamağına gürültü ekleyin, modelden gürültüyü (veya temiz yama, eşdeğer olarak) tahmin etmesini isteyin. Transfüzyon'un versiyonu akış eşleşmesini kullanır gürültüden temizliğe hız alanını tahmin edin.
Eğitim sırasında:
- Her görüntü yama x0 için rastgele bir zaman adım t örneği.
- Örnek gürültü ε, hesap xt = (1-t) x0 + t ε (akış eşleşmesi için doğrusal interpolasyon).
- Transformatör v_theta(xt, t) tahmin eder; kaybı = MSE(v_theta(xt, t), ε - x0).
- Tekst ile birlikte arka tarafa NTP kayıpları aynı diziden.
Sonuç olarak, nesil:
- Metin işaretleri: standart autoregressive örnekleme.
- Resim yamaları: önceki metin işaretlerine bağlı difüzyon örnekleme döngüsü (10-30 adım tipik).
MMDiT: Stable Diffusion 3'ün varianti
Stable Diffusion 3 (Esser et al., Mart 2024) MMDiT (Multimodal Diffusion Transformer) ile Transfusion'un yaklaşık aynı zamanda gönderildi.
MMDiT'nin temel farklılıkları:
- Modallık-specifik ağırlıklar blok başına. Her transformatör bloku metin jetonları karşı görüntü yamaları için ayrı Q, K, V ve MLP ağırlıkları vardır. Dikkat ortak (çapraz modalik); diğer her şey modalik-specifiktir.
- DDPM'den daha basit bir matematik ve örnekleme ile ilgili özel bir akış uyarlama varianti.
- Skala. MMDiT SD3'in omurgasıdır (2B ve 8B param varianları).
Her ikisi de aynı temel fikir üzerinde birleşir: bir transformatör metinde NTP ve sürekli görüntü temsillerinde yayım yürütür.
Neden bu, kameleon tarzını yendi?
Görüntü üretimi sırasında sürekli yayılma ve ayrı-ayrı NTP arasındaki kalite farkı ölçülebilir.
- 7B paramlarında, aynı boyutlu bir Cameleon tarzı modeli FID'de 3-5 puan geçiyor.
- Tokenizer eğitimi gerekmez görüntü kodlayıcı daha basit (Sınırlı projeksiyon gizli, bir ViT'nin giriş katmanı ile aynı).
- Inferans, autoregressive görüntü belirtilerinin aksine, görüntü yama tanımlamasını paralelleştirebilir.
Eksik taraf: Transfüzyon ikili kayblı bir modeldir, bu da eğitim dinamiklerini daha zorlaştırır. Kayıp ağırlıkların ayarlanması gerekir. NTP ve difüzyon arasındaki zamanlama eşleşmezliği bir başın baskısına neden olabilir.
Akıntıda oturanlar
Janus-Pro (Desin 12.15) Transfusion'un fikrini, Transfusion'un transforman vücudu paylaşırken bir tanesi için SigLIP, diğer tanesi için VQ'yi ayırarak ve anlayış ve jenerasyon için vizyon kodlayıcısını ayırarak geliştirir. Show-o (Desin 12.14) difüzyonu diskret difüzyon (maskeli tahmin) için değiştirir.
2026 üretiminde görüntü yayımlayan VLM'ler Gemini 3 Pro, GPT-5, Claude Opus 4.7'in görüntü oluşturma yolu neredeyse kesinlikle bu ailenin bazı soyundan gelmektedir.
Kullan
code/main.pyKüçük bir MNIST gibi bir soruya karşı oyuncak Transfusion inşa ediyor:
- Metin başlıkları, bir rakamı (0-9) tanımlayan kısa tam sayı dizisidir.
- Resimler 4x4 bayt ağları.
- Ortak ağırlıklı bir çift doğrusal projeksiyon, transformatörün yerine geçer; metinde NTP kaybı, gürültülü yamalarda MSE kaybı.
- Eğitim döngüsü iki kayıpı değiştirir, dikkat maskası açıkça.
- Genre bir ileri geçit içinde bir metin başlığı ve 4x4 resmi üretir.
İki kayıplı tesisat, dikkat maskası yapımı ve sonuç döngüsü gerçek eserlerdir.
Gönder
Bu ders bize çok yararlı .outputs/skill-two-loss-trainer-designer.mdYeni bir multimodal eğitim görevi (metin + görüntü, metin + ses, metin + video) göz önüne alındığında, iki kayıp programını (kayıp ağırlıklar, maske şekli, paylaşılan vs. modalite özel bloklar) tasarlıyor ve uygulama risklerini işaretliyor.
Egzersizler
- Transfusion tarzındaki bir model, %70 metin jetonu ve %30 görüntü yamalarını eğitir.
- Bir dizi için blok üçgenli maskeyi uygulayın:
[T, T, <image>, P, P, P, P, </image>, T]Her giriş 0 veya 1 olarak işaretlenir.
- MMDiT'de modalite-specifik QKV ağırlıkları var. Bu hangi parametreler sayımı üstü ekliyor vs Transfusion'un tam paylaşılan transformatörü? 7B parametrelerinde, buna değer mi?
- Üretim: bir metin istek verildiğinde, model 50 token için NTP çalıştırır, sonra vurur
<image>...denoise adımları üzerinde 256 yama üzerinde yayılma çalışır.
- SD3 kağıdı bölüm 3. DDPM'den daha az sonuç aşamasında neden birleştiğini ve düzeltilmiş akışı açıkla.
Anahtar Terimler
| Term | What people say | What it actually means |
|---|---|---|
| Two-loss training | "NTP + diffusion" | A single transformer optimizes both cross-entropy on text tokens and MSE on continuous image patches in the same gradient step |
| Flow matching | "Rectified flow" | Diffusion variant that predicts a velocity field from noise to clean data; simpler math than DDPM |
| MMDiT | "Multimodal DiT" | Stable Diffusion 3's architecture: joint attention, modality-specific MLPs and norms |
| Block-triangular mask | "Causal text + bidirectional image" | Attention mask that is causal across text but bidirectional within image regions |
| Continuous image representation | "No VQ" | Image patches as real-valued vectors, not integer codebook indices |
| Velocity prediction | "v-parameterization" | Network output is the velocity field between noise and data, not the noise itself |
Daha Fazla Okumak
- Zhou et al. — Transfusion (arXiv:2408.11039)
- Esser et al. — Stable Diffusion 3 / MMDiT (arXiv:2403.03206)
- Peebles & Xie — DiT (arXiv:2212.09748)
- Zhao et al. — MonoFormer (arXiv:2409.16280)
- Xie et al. — Show-o (arXiv:2408.12528)
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.