يانوس برو: مبرمجيات منفصلة للنموذج المتعدد الحركات المتوحدة
Type: Build
Languages: Python (stdlib, dual-encoder routing + shared-body signal)
Prerequisites: Phase 12 · 13 (Transfusion), Phase 12 · 14 (Show-o)
Time: ~120 minutes
أهداف التعلم
- شرح لماذا رمز واحد مشترك يفسد فهم أو جودة توليد.
- وصف توجيه يانوس برو: ميزات SigLIP على جانب المدخل لفهم، وعلامات VQ على كل من المدخل والخروج لتوليد.
- تتبع حجم الخليط البيانات الذي يجعل "جانوس برو" ناجحة حيث لم ينجح "جانوس".
- مقارنة مع معالم المقطوعة (جانوس برو) ، المقطوعة المستمرة (تحويل) ، والمتقطعة (شوف-أو).
المشكلة
النماذج الموحدة تشارك جسمًا مبدئيًا عبر التفاهم والإنتاج. المحاولات السابقة (Chameleon ، Show-o ، Transfusion) تستخدم جميعًا رمزًا بصريًا واحدًا في كلا الاتجاهين. التركيز هو تعزيز:
- محسن لإعادة الإعمار (الجيل): ويغطي VQ-VAE تفاصيل البيكسلات الدقيقة ولكن تنتج رموز ذات التماسك التمويلي الضعيف.
- محسن للترجمة (المفهوم): إضافة SigLIP إلى مجموعة الصور "قط" بالقرب من رموز "قط" ولكن لا تسمح بإعادة الإعمار الجيدة.
تدفع شركة شو أو و Transfusion لهذا مع ضريبة جودة مرئية على اتجاه واحد. يسأل Janus-Pro: لماذا تحتاج إلى رمز واحد عندما تكون المهام لها احتياجات مختلفة؟
المفهوم
التشفير البصري منفصل
يفرق معمارة يانوس برو المبرمجين:
- فهم المسار. صورة مدخل → SigLIP-SO400m → جسم المتحول MLP 2-طبقة.
- مسار التوليد. صورة المدخل (إذا كانت تشترط على صورة موجودة) → VQ tokenizer → IDs token → جسم المحول.
- توليد الخروج. رموز الصورة المتوقعة من قبل المحول → VQ decoder → البيكسلات.
جسم المحول مشترك كل شيء فوقه و أسفله من الجسم هو مهمة محددة
يتم تشكيل المدخلات عن طريق النموذج المطلوب: a <understand>طرق التسجيل عبر سيجليب<generate>أو التوجيه ضمني من المهمة.
لماذا هذا يعمل
يكتسب فهم الخسارة ميزات SigLIP ، التي تم ضبطها قبل التدريب على طراز CLIP من أجل التشابه الدلالي. تحسن معايير الإدراك في النموذج على Show-o / Transfusion لأن ميزات المدخلات أفضل للمهمة.
تخسير الجيل يحصل على رموز VQ ، التي قام بتصميمها مؤشر لإعادة الإعمار. تحسن جودة الصورة على عرض-أو لأن رموز VQ تتراكم إلى البيكسلات نظيفة.
يرى جسم المحول المشترك توزيعات المدخلين (SigLIP و VQ) ويدرس العمل مع كليهما.
تحليل البيانات يانوس مقابل يانوس برو
قدم يانوس (أصلًا ، arXiv 2410.13848) الانفصال ولكن على نطاق صغير (1.3B، بيانات محدودة).
- 7B (بخلاف 1.3B)
- 90 مليون زوج من الصور والنص للمرحلة 1 (التواء) من 72 مليون.
- 72 م للمرحلة الثانية (وحدة) من 26 م.
- إضافة 200 ألف عينات تعليمات تصويرية للمرحلة الثالثة
النتيجة: يناوس برو-7 بي يوافق على LLaVA على MMMU (60.3 مقابل ~ 58) ويغلب على DALL-E 3 على GenEval (0.80 مقابل 0.67). نموذج واحد مفتوح ، تنافسية على جانبي الطيف الموحد.
"جانوس فلو"
يغير JanusFlow (arXiv 2411.07975) مسار توليد VQ لمسار توليد التدفق المصلح (متواصل). يصبح الانقسام SigLIP-for-understanding + rectified-flow-for-generation. ترتفع السقف الجودة أكثر. تبقى الهندسة المعمارية منفصلة عن التشفيرات-الجهاز المشترك.
عمل الجسم المشترك
جسم المحول يعالج تسلسل موحد ولكن مع توزيعات مدخلين.
- لفهم: استهلاك ميزات SigLIP + رموز نصية → إصدار نص بشكل متراجع.
- لتوليد: استهلاك رموز النص + (رموز VQ الصورة اختيارية) → إصدار رموز VQ الصورة بشكل متراجع.
الجسم ليس لديه أوزان محددة للشكل لكل كتلة إنه محول النص الذي تتوقع أن تجده داخل (كوين) أو (لاما) ، بالإضافة إلى مُعدّل المدخلين.
ومن المثير للاهتمام أن هذا يعني أن جسم يانوس برو يمكن أن يتم تشغيله من LLM المدرب مسبقًا. يبدأ يانوس برو من DeepSeek-MoE-7B. هذا الاختيار مهم: يسهم LLM في القدرة على التفكير التي يصعوبة النماذج الموحدة من الصفر للوصول إليها.
مقارنة مع الدراسة
الدراسة الدراسية (دراسة 12.10) هي متابعة عام 2026 .
- التدريب المشترك المحلي (InternVL3 backbone).
- التوجيهات المزودة بالترميز (SigLIP في، VQ + انتشار يخرج).
- فهم موحد + توليد + تحرير
يضم InternVL-U اختيار معماري Janus-Pro إلى إطار أكبر. فكرة المشفير المفصل هي الآن الافتراض المحدد للنماذج الموحدة على نطاق واسع.
القيود
يضيف مبرمجيات التشفير المفصلة تعقيدًا معماريًا. تم تدريب رمزين ، وسبل إدخال اثنين للحفاظ على ، مجموعتين من أوضاع الفشل. بالنسبة للمنتجات التي لا تحتاج إلى توليد ، يعد Janus-Pro أكثر من مهندسية.
بالنسبة للمنتجات التي لا تحتاج إلى فهم، يعد Janus- Pro مؤهلًا بشكل مفرط اختر نموذج Stable Diffusion 3 / Flux.
بالنسبة للمنتجات التي تحتاج إلى كليهما، يعد يانوس برو الآن المرجع المفتوح للهندسة المعمارية.
استخدمها
code/main.pyيحاكي توجيه Janus-Pro:
- اثنين من مبرمجيات مزيفة: SigLIP-like (إنتاج 256-dim متجهات معنوية) و VQ-like (إنتاج رموز الأعداد الكاملة).
- جهاز توجيه سريع يختار الممثل بناء على علامة المهمة
- جسم مشترك (مستثمر) يعالج تسلسلات رمزية بغض النظر عن ما هو المبرمج الذي أنتجه.
- التحول من المرحلة 1 (التواء) إلى المرحلة 3 (موسيقى التعليمات) جدول العينات الموزعة.
طبع المسارات المتوجهة لثلاثة أمثلة: تصويب الصورة، T2I، تحرير الصورة.
أرسله
هذا الدرس يُنتجoutputs/skill-decoupled-encoder-picker.md. بالنظر إلى منتج يريد توليد موحد + فهم على جودة حدودية ، فإنه يختار Janus-Pro ، JanusFlow ، أو InternVL-U مع توصية محددة على نطاق البيانات.
التمارين
- يضرب يانوس برو-7 بي دال-إي 3 على جنيل. شرح لماذا يمكن أن يطابق نموذج 7 بي مفتوح نموذج خاص على الحدود على الجيل ولكن ليس على فهم.
- تنفيذ وظيفة الجهاز التوجيه: مع إعطاء النص المطلوب ، تصنيف
understandأوgenerateكيف تتعامل مع طلبات غامضة مثل "وصف ثم رسم"؟
- يُستبدل "جانوس فلو" مسار "ف.ك.و" بتدفق مُصحّح. ماذا تنطلق الآن جسم المحول، وما هي التغييرات في الخسارة؟
- اقترح مهمة رابعة يمكن أن تتعامل مع معماري Janus-Pro مع مرموز منفصل آخر. أمثلة: قسم الصورة (مثل DINO) ، العمق (مثل MiDaS).
- اقرأ قسم يانوس برو 4.2 حول تحليل البيانات. أي مرحلة البيانات تساهم أكثر في زيادة جودة T2I مقابل يانوس؟
الشروط الرئيسية
| Term | What people say | What it actually means |
|---|---|---|
| Decoupled encoding | "Two visual encoders" | Separate tokenizer or encoder per direction: semantic for understanding, reconstruction for generation |
| Shared body | "One transformer" | Single transformer processes either encoder's output; no modality-specific weights |
| SigLIP for understanding | "Semantic features" | CLIP-family vision tower providing rich conceptual features but poor reconstruction |
| VQ for generation | "Reconstruction codes" | Vector-quantized tokens that decode cleanly back to pixels |
| JanusFlow | "Rectified-flow variant" | Janus-Pro with a continuous flow-matching generation head instead of VQ |
| Routing tag | "Task tag" | Prompt marker (<understand> / <generate>) that picks the input encoder |
المزيد من القراءة
- Wu et al. — Janus (arXiv:2410.13848)
- Chen et al. — Janus-Pro (arXiv:2501.17811)
- Ma et al. — JanusFlow (arXiv:2411.07975)
- InternVL-U (arXiv:2603.09877)
- Dong et al. — DreamLLM (arXiv:2309.11499)
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.