MIO और किसी भी-से-कोई स्ट्रीमिंग मल्टीमोडल मॉडल
Type: Learn
Languages: Python (stdlib, four-modality token allocator + streaming decode loop)
Prerequisites: Phase 12 · 11 (Chameleon), Phase 6 (Speech and Audio)
Time: ~120 minutes
सीखने के लक्ष्य
- एक साझा शब्दावली बनाएं जो बिना टकराव के पाठ, छवि, भाषण और संगीत टोकन को होस्ट करे।
- कम्प्रेशन + पुनर्निर्माण ट्रेडऑफ पर SEED-Tokenizer (छवि) और SpeechTokenizer अवशिष्ट-VQ (भाषण) की तुलना करें।
- चार चरणों का पाठ्यक्रम बताएं जो किसी भी पीढ़ी को बनाएगा।
- तीन खुले किसी के लिए किसी के लिए नुस्खे और उनके मुख्य व्यापार-बंदियों का नाम देंः MIO, AnyGPT, Unified-IO 2.
समस्या
एक एकीकृत मल्टीमोडल मॉडल का दावा करना आसान है और पैमाने पर निर्माण करना मुश्किल है। 2024 तक अधिकांश "किसी भी-किसी भी" प्रणालियों को पाइपलाइन किया गया थाः दृष्टि मॉडल → पाठ प्रतिनिधित्व → भाषण मॉडल → ऑडियो। प्रत्येक हाप जानकारी खो देता है, विलंबता जोड़ता है, और प्रशिक्षण को जटिल बनाता है। जीपीटी-4o के डेमो वीडियो में एक एकल-मॉडल विकल्प दिखाया गया था जिसके बाद की प्रतिक्रिया के साथ; खुले सिस्टम महीनों से पीछे हैं।
इंजीनियरिंग चुनौतियांः
- प्रत्येक मोडलिटी के लिए टोकन बनाने वाले मौजूद होने चाहिए, पुनर्निर्माण के लिए पर्याप्त नुकसान के बिना संपीड़ित करें, और ट्रांसफार्मर द्वारा खपत की जा सकती दर पर टोकन उत्पन्न करें।
- एक एकल शब्दावली में पाठ (32k+), छवि (16k+), भाषण (4k+), संगीत (8k+) के लिए स्थान आवंटित किया जाना चाहिए। न्यूनतम चालीस हजार से अधिक प्रविष्टियां।
- प्रशिक्षण डेटा प्रत्येक इनपुट-आउटपुट जोड़ी (टेक्स्ट→आरेख, छवि→भाषण, भाषण→आरेख, आदि) को कवर करना चाहिए या मॉडल को बनाना चाहिए।
- इन्फरेन्स को वार्तालाप विलंबता (<500ms समय-से-पहले ऑडियो-बाइट) के लिए आउटपुट टोकन को पर्याप्त तेजी से स्ट्रीम करना चाहिए।
अवधारणा
चार मोडलिटी के लिए चार टोकन
MIO के टोकन पाइपः
- पाठः मानक बीपीई, वाक्यांश ~32000.
- छवि: SEED-Tokenizer (2023) विवश कोडबुक के साथ क्वांटिज़्ड VAE, 4096 प्रविष्टियाँ, प्रति छवि 32x32 टोकन।
- भाषणः स्पीचटोकनीज़र रेसिडियल-वीक्यू (2023) 16kHz तरंग स्वरूप को 8 पदानुक्रमिक कोडबुक में एन्कोड करता है; पहला स्तर गाढा सामग्री है, बाद के स्तर प्रोसोडी और स्पीकर पहचान जोड़ते हैं।
- संगीतः समान अवशिष्ट-वीक्यू (मेटा का म्यूजिकजेन / एनकोडैक परिवार), 4-8 कोडबुक।
प्रत्येक मोडलिटी में पूर्णांक टोकन उत्पन्न होते हैं। टोकन साझा शब्दावली में अलग-अलग आईडी रेंज प्राप्त करते हैंः
text: 0..31999
image: 32000..36095 (4096 image tokens)
speech: 36096..40191 (4096 speech base tokens, plus residual layers)
music: 40192..48383 (8192 music tokens)
sep: 48384..48390 (<image>, <speech>, <music>, </...>, etc.)कुलः ~ 48k शब्दावली. इनपुट एम्बेडिंग और आउटपुट प्रोजेक्शन इसे सभी को कवर।
स्ट्रीमिंग डिकोड
स्पीच जनरेशन में रेसिडियल-वीक्यू का उपयोग किया जाता है। ट्रांसफार्मर आधार (परत 0) भाषण टोकन की भविष्यवाणी करता है; एक समानांतर-डिकोडेड रेसिडियल क्वांटाइज़र बाद के परतों की भविष्यवाणी करता है। प्रत्येक परत 0 टोकन लगभग 50ms ऑडियो है 16kHz पर।
स्ट्रीमिंग पैटर्नः
- उपयोगकर्ता माइक्रोफ़ोन में बात करता है; वास्तविक समय ऑडियो टोकनइज़र हर 50 एमएस पर भाषण टोकन जारी करता है।
- MIO टोकन का उपभोग करता है जैसे ही वे आते हैं (त्वरित प्रीफिल + वृद्धिशील आगे) ।
- आउटपुट टोकन उत्पन्न होने के रूप में स्ट्रीम आउट; एक समानांतर भाषण डिकोडर उन्हें ~ 50-150ms विलंबता के साथ ऑडियो नमूनों में परिवर्तित करता है।
- MIO पेपर में समय-से-पहले ऑडियो-बाइटः ~300-500ms, GPT-4o के ~250ms के करीब।
मिनी-ओम्नी (arXiv:2408.16725), GLM-4-वॉइस (arXiv:2412.02612), और मोशी (arXiv:2410.00037) एक एकल GPU पर 160ms राउंड-ट्रिप प्राप्त करते हैं।
चार चरणों का पाठ्यक्रम
एमआईओ का प्रशिक्षण पाठ्यक्रमः
- चरण 1 संरेखण। बड़े पैमाने पर मोडलिटी-पियर कॉर्पोरेसः पाठ-छवि, पाठ-भाषण, पाठ-संगीत। प्रत्येक जोड़ी अपने स्वयं के टोकन शब्दावली खंड का उपयोग करती है। साझा शब्दावली का प्रशिक्षण देती है।
- चरण 2 पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूपिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पारस्परिक रूप से पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार पार
- चरण 3 भाषण में सुधार। पाठ क्षमता खोए बिना भाषण की गुणवत्ता बढ़ाने के लिए अतिरिक्त ऑडियो डेटा।
- चरण 4 एसएफटी. विभिन्न तरीकों में निर्देशों को समायोजित करनाः वीक्यूए, कैप्शन, कथा, भाषण-से-भाषण संवाद।
एक चरण की कमी विशिष्ट क्षमताओं को कम करती हैः चरण 2 को छोड़ दें और मॉडल क्रॉस-मोडालिटी संदर्भ खो देता है; चरण 3 को छोड़ दें और भाषण खराब हो जाता है।
दृश्य-विचार श्रृंखला
MIO ने दृश्य-विचार श्रृंखला पेश कीः मॉडल तर्क के चरण के रूप में मध्यवर्ती छवि टोकन जारी करता है। "क्या बिल्ली एक पेड़ पर चढ़ रही है? मॉडलः
- उत्सर्जन
<image>दृश्य (इनपुट छवि या स्केच से) को प्रस्तुत करने वाले टोकन। - स्केच का विश्लेषण करते हुए पाठ भेजता है।
- अंतिम उत्तर देता है।
प्रस्तुत मध्यवर्ती छवि स्क्रैचपैड के रूप में कार्य करती है। स्थानिक तर्क कार्यों पर बेंचमार्क सुधारते हैं। विचार पाठ तर्क के लिए सोच श्रृंखला का प्रतिबिंब है।
किसी भी-से-कोई भी प्रतियोगी
- AnyGPT (arXiv:2402.12226): 4 मोड (पाठ, छवि, भाषण, संगीत), समान डिजाइन।
- एकीकृत-आईओ 2 (arXiv:2312.17172): दृष्टि कार्रवाई आउटपुट, गहराई, सामान्य जोड़ता है। अधिक कार्य विविधता, छोटे पैमाने पर।
- NExT-GPT (arXiv:2309.05519): LLM + मोडलिटी-विशिष्ट विसारण डिकोडर। एक एकल मॉडल दृष्टिकोण नहीं।
- CoDi (arXiv:2305.11846): सम्मिश्र प्रसार; साझा लटेंट के माध्यम से किसी से किसी तक।
MIO शुद्ध-चिह्न किसी के-किसी के सबसे करीब है। AnyGPT इसके अवधारणा पूर्वज है।
विलंबता बजट
वार्तालाप उत्पाद के लिए, प्रत्येक घटक की विलंबता महत्वपूर्ण हैः
- माइक्रो से ऑडियो टोकनः ~50ms।
- प्रीफिल (ऑडियो टोकन + इतिहास): ~8 बी मॉडल पर 100ms।
- पहला आउटपुट टोकनः ~50ms।
- समानांतर अवशिष्ट-वीक्यू + भाषण डिकोडरः ~ 100-150ms।
कुल समय-से-पहले ऑडियो-बाइटः ~300ms न्यूनतम। GPT-4o दावा ~250ms। Moshi दावा 160ms। MIO/AnyGPT सार्वजनिक बेंचमार्क के अनुसार 400-600ms सीमा में हैं।
क्यों किसी के लिए किसी के लिए कठिन रहता है
2026 में भी, किसी भी मॉडल के लिए खुले दो अक्षों पर बंद मॉडल का अनुसरण करेंः
- भाषण की गुणवत्ता। शेष-वीक्यू टोकनराइज़र घाटा है; बातचीत भाषण ElevenLabs वर्ग की आवाज़ों की तुलना में रोबोटिक लगता है।
- क्रॉस-मोडालिटी तर्क। मॉडल से पूछना "जो आप देखते हैं उसके बारे में गाएं" अभी भी शुद्ध दृष्टि कार्यों की तुलना में अधिक बार विफल रहता है।
ये खुले अनुसंधान समस्याएं हैं। Qwen3-Omni (पाठ 12.20) 2025 में सबसे उन्नत खुले प्रयास है।
इसका प्रयोग करें
code/main.py:
- चार-मोडलिटी शब्दावली आवंटन को परिभाषित करता है और उसे प्रिंट करता है।
- टोकनराइज़र राउटर के माध्यम से मल्टीमोडल इनपुट (पाठ, छवि, ऑडियो-क्लिप, संगीत) की एक सूची को रूट करता है।
- विलंबता गणना के साथ पाठ-भाषा प्रतिक्रिया के लिए स्ट्रीमिंग डिकोड का अनुकरण करता है।
- एन्कोडर, प्रीफिल और डिकोडर विलंबता के अनुसार अपेक्षित समय-से-पहले ऑडियो-बाइट की गणना करता है।
इसे भेजें
यह सबक हमें फल देता हैoutputs/skill-any-to-any-pipeline-auditor.md. एक वार्तालाप उत्पाद विनिर्देश (इनपुट, आउटपुट, लटेंसी लक्ष्य) को देखते हुए, यह MIO परिवार के डिजाइन विकल्पों का लेखा-जोखा करता है और लटेंसी बजट की गणना करता है।
व्यायाम
- आपके उत्पाद में भाषण इनपुट स्वीकार किया जाता है और भाषण आउटपुट लौटाया जाता है। अंत से अंत तक विलंबता बजट लक्ष्य क्या है? समय व्यतीत करने वाले घटकों की सूची बनाएं।
- SpeechTokenizer residual-VQ 8 कोडबुक का उपयोग करता है। प्रस्तावित करें कि क्यों शेष स्तरों को समानांतर रूप से डिकोड करना आवश्यक है (लगातार के विपरीत) और यह किस देरी की बचत लाता है।
- आपके शब्दावली में 32k पाठ + 4k छवि + 4k भाषण है। 8k संगीत और ~10 विभाजक जोड़ें। छिपे हुए dim 4096 पर एम्बेडिंग मैट्रिक्स पैरामीटर लागत क्या है?
- दृश्य विचार श्रृंखला एक मध्यवर्ती छवि जारी करती है। किस प्रकार के प्रश्न लाभदायक हैं? अतिरिक्त टोकन से किस प्रकार की चोट लगी है?
- मोशी (arXiv:2410.00037) को पढ़ें। इसकी "अंतरिक एकांतर" तकनीक का वर्णन करें और इसकी तुलना MIO की दृश्य-शृंखला-विचार से करें।
प्रमुख शर्तें
| Term | What people say | What it actually means |
|---|---|---|
| Any-to-any | "Multimodal in/out" | A single model that accepts and emits text, image, speech, and music in any direction |
| Residual-VQ | "Speech tokenizer stack" | Multi-codebook tokenization where each layer adds information; base layer is content, later layers are prosody |
| SEED-Tokenizer | "Image codes" | Discrete image tokenizer with 4096-entry codebook used by MIO |
| Chain-of-visual-thought | "Visual scratchpad" | The model generates an intermediate image as a reasoning step before its final answer |
| Time-to-first-audio-byte | "TTFAB" | Latency from user voice to first audio output; <500ms for conversational feel |
| Four-stage curriculum | "Training recipe" | Alignment -> interleaved -> speech-enhanced -> SFT, in that order |
आगे पढ़ना
- Wang et al. — MIO (arXiv:2409.17692)
- Zhan et al. — AnyGPT (arXiv:2402.12226)
- Lu et al. — Unified-IO 2 (arXiv:2312.17172)
- Wu et al. — NExT-GPT (arXiv:2309.05519)
- Tang et al. — CoDi (arXiv:2305.11846)
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.