Phase 12: Multimodal AI

مدل های اومنی: Qwen2.5 - اومنی و تقسیم فکر کننده

نمایش محصول GPT-4o در ماه مه 2024 به دلیل مدل اصلی نیست بلکه به دلیل شکل محصول رابط صوتی است که در آن صحبت می کنید، مدل آنچه را که دوربین می بیند می بیند و در کمتر از 250ms صحبت می کند. اکوسیستم باز باقی سال های 2024 و 2025 را برای رسیدن به سطح محصول صرف رقابت کرد. Qwen2.5 Omni (مارس 2025) طراحی باز مرجع است: یک Thinker (ترانسفارمر تولید متن بزرگ) به علاوه یک Talker (ترانسفارمر تولید سخنرانی موازی) ، با توکن های پخش سخنرانی مرتبط است. مینی اومنی آن را ساده کرد، موشی تاخیر آن را مطابقت داد، GLM-4-صوت آن را به چینی گسترش داد. این درس معماری Thinker-Talker و بودجه تاخیر را می خواند که باعث می شود جریان گفتگوهای زمان واقعی کار کند.

Type: Build

Languages: Python (stdlib, streaming pipeline latency simulator + VAD loop)

Prerequisites: Phase 12 · 19 (audio-LLMs), Phase 12 · 16 (any-to-any)

Time: ~180 minutes

اهداف یادگیری

  • لوله نتیجه گیری را به فکر کننده (بررسی متن) و سخنران (تولید سخنرانی) تقسیم کنید و توضیح دهید که چرا جریان موازی کار می کند.
  • بودجه زمان به اولین بایت صوتی (TTFAB) را برای یک تعامل مکالمه، بخش به بخش محاسبه کنید.
  • موقعیت هماهنگ با زمان TMRoPE را در بینشی، صوتی و متن در Thinker توصیف کنید.
  • سه الگوی مکالمه در زمان واقعی را نام دهید: نیمه دوپلکس، نوبت گرفتن، دوپلکس کامل.

مشکل

یک دستیار صدا در زمان واقعی باید خیلی کار کند، سریع:

  1. گوش دادن به کاربر. توکنز زمان واقعی صحبت، تشخیص فعالیت صدا (VAD) برای دانستن زمانی که آنها صحبت کردن تمام شده است.
  2. به صورت اختیاری ببین، ورودی دوربین با ۲ تا ۴ فاب/س، به همراه صوتی به Thinker پخش می شود.
  3. فکر کن. جوابي را با توجه به تاريخ مکالمه بنویس.
  4. صحبت کن، توکن های صوتی را ترکیب کن، به شکل موج رمزگذاری کن، به اسپکر های کاربر پخش کن.

هر مرحله تاخیر را اضافه می کند. احساس مکالمه نیاز به کل سفر و بازگشت < 500ms در زیر آن، کاربر متوقف می شود به تاخیر توجه کند. GPT-4o ادعا می کند ~ 250ms. Moshi ~ 160ms. Qwen2.5-Omni ~ 350-500ms.

هر جزءي بايد پخش بشه هيچ چيزي نمي تونه "همه چيز رو دسته بندي کنه و بعدش رمزگشایی کنه"

مفهوم

فکر کننده و سخنران

تجزیه Qwen2.5 Omni:

  • متفکر: یک ترانسفورماتور تولید متن 7B-80B. توکن های متقابل متن + تصویر + صوتی را مصرف می کند. توکن های متن را که نشان دهنده آنچه می گویند، تولید می کند.
  • سخنران: یک ترانسفورماتور تولید کننده صدا کوچک تر (200M-1B) است. توکن های ورودی متن Thinker را به علاوه توکن های اخیر متن سخنران مصرف می کند. توکن های گفتاری متمایز (تاریخ های باقیمانده VQ) را تولید می کند.
  • دیکودر گفتار: یک دیکودر شکل موج جریان (SNAC، خانواده MoVQGAN) که توکن های گفتار را به نمونه های صوتی در زمان واقعی می برد.

جداسازی مهم است. فکر کننده باید بزرگ باشد تا استدلال خوب داشته باشد. سخنران می تواند کوچک باشد زیرا کارش محلی است. متن را به نماد صحبت تبدیل می کند. سخنران بزرگ تر بیانگر نیست؛ آهسته تر است.

هر دو رو به طور موازی اجرا ميکنيم:

  1. فکرگر نماد متن t_i ارسال می کند.
  2. سخنران t_i (به وسیله پخش) را مصرف می کند و نمادهای سخنرانی s_i، s_{i+1}، ..., s_{i+k} را صادر می کند.
  3. دیکوتر صحبت ها، نشانه های صحبت را در هنگام ورود مصرف می کند و نمونه های صوتی را منتشر می کند.
  4. تا وقتي که فکرگر در تيكون متن باشه، گفتارگر قبلاً صداي براي تيكون پخش کرده

موقعیت های چند مودیال TMRoPE با خط زمان

متفکر باید فریم های تصویری (که به طور مثال 4 FPS می رسد) ، فریم های صوتی (که به 50 فریم / ثانیه می رسد) و متن از تاریخچه مکالمه را ادغام کند. یک ترتیب ساده (همه تصاویر، سپس همه صوتی، سپس متن) موازی زمانی را از دست می دهد.

TMRoPE برای هر توکن مهر زمانی مطلق را اختصاص می دهد. توکن بینایی در t=2.3s. توکن صوتی در t=2.32s. توکن متن از کاربر "بند" در t=2.35s. RoPE توجه را با مهر زمانی چرخش می کند؛ مدل آنها را به عنوان همزمان به طور موقت می بیند.

این زیرساخت برای "او در حالی که سلام می گوید" برای کار است مدل می بیند قاب ویدئویی و صوتی در همان لحظه مفهومی.

ترکیب گفتار جریان

توکن های سخنرانی باید جریان داشته باشند. مینی اومنی (Xie & Wu، 2024) "نمادها زبان می توانند بشنوند، در حالی که در جریان فکر می کنند صحبت کنند" را معرفی کرد: توکن های خروجی فکر کننده و توکن های خروجی سخنران در یک ترتیب متقابل هستند. وقتی که فکر کننده توکن متن بعدی را انجام می دهد، مکالم آتش می زند. هیچ محدودیتی دسته بندی وجود ندارد.

Moshi (Défossez و همکاران، اکتبر 2024) سریع ترین پیاده سازی باز است. 160ms TTFAB در یک A100 واحد. معماری: یک ترانسفارمر 7B واحد که نماد متن و سخنرانی را در موقعیت های متناوب منتشر می کند، با یک "مونوگ داخلی" که جریان تفکر را از جریان صحبت کننده جدا می کند. این به طور موثر Thinker + Talker با آموزش دقیق به یک مدل ادغام شده است.

VAD و تبدیل

تشخیص فعالیت صدا در سمت ورودی اجرا می شود. دو الگوی:

  • نیمه دوپلیکس: کاربر صحبت می کند، مدل گوش می دهد. مدل صحبت می کند، کاربر گوش می کند. انتقال شفاف از طریق تشخیص سکوت VAD (~ 200ms).
  • دوپلیکس کامل: هر دو می توانند همزمان صحبت کنند. مدل می تواند backchannel ("uh-huh") یا قطع. بسیار سخت تر. موشی از این پشتیبانی می کند.

Qwen2.5 Omni به طور پیش فرض از نیمه دوپلکس پشتیبانی می کند، با دور زدن از طریق حد سکوت. دوپلکس کامل نیاز به مدیریت لایه ای دارد.

Qwen3-Omni (نومبر 2025)

جانشین. Qwen3-80B Thinker، بزرگتر Talker، TMRoPE-v2 را بهبود بخشید. تاخیر نزدیک به 250ms GPT-4o است. وزنهای باز. معیار در OmniBench با Gemini 2.0 Live رقابت می کند.

بودجه تاخیر تولید

برای یک تعامل جریان معمولی:

  • مایکروفون -> توکن های صوتی: 40-80ms.
  • پیش پر کردن (سریع + تاریخ): 100-200ms در 7B، بیشتر در 70B.
  • اولین توکن متنی فکرگر: ۴۰ms
  • گفتارگر اولین رمز متن را پردازش می کند: 20ms.
  • اولین توکن های سخنرانی: 40ms
  • کد بازده VQ: 30ms
  • رمزگذاری موج شکل گفتار: 50-80ms.

TTFAB کل: 320-510ms در 7B، 600-900ms در 70B. کیفیت مرز معمولاً به معنای 70B + است؛ بنابراین شکاف تاخیر مرز.

ریاضیات نرخ توکن

در 16kHz صحبت با 50Hz توکن های پایه صحبت، شما نیاز به 50 توکن صحبت در هر ثانیه از خروجی. سخنران باید emit ≥50 توکن / ثانیه برای پیگیری. در یک LLM معمولی از 30-80 توکن / ثانیه در H100، یک کوچک (200-300M) سخنران به اندازه کافی سریع است؛ یک 7B سخنران عقب می ماند.

به همین دلیل مدل های کوچک اختصاصی Talker وجود دارد و نه "فقط از مدل اصلی استفاده کنید".

ازش استفاده کن

code/main.py:

  • محاكي يه خط لوله فکر كننده با نرخ انتشار توکن جوري
  • محاسبه TTFAB برای اندازه های مدل قابل تنظیم و نرخ نمونه مایکروسافت
  • نصف دوپلیکس رو با سقف خاموشي VAD نشان ميده

-باده

این درس به ما کمک می کندoutputs/skill-omni-streaming-budget.mdبا توجه به هدف TTFAB و مجموعه ویژگی های یک محصول صدا در زمان واقعی (بیننده، دوزبانی، دوگلو) ، Qwen2.5 Omni، Qwen3-Omni، Moshi یا Mini-Omni را انتخاب می کند و اندازه Thinker/Talker را اندازه گیری می کند.

تمرینات

  1. هدف شما TTFAB 300ms است. در یک 7B فکر و 300M سخنران، نوشتن هر قطعه تاخیر.
  1. Qwen2.5 Omni از TMRoPE استفاده می کند. آنچه را که مدل برای یک پرامپت می بیند توصیف کنید که کاربر در t=1s صحبت می کند و دوربین یک حرکتی را در t=1.2s ضبط می کند.
  1. پشتیبانی از دوپلیکس کامل به مدل نیاز دارد تا هنگام گوش دادن صوتی را ارسال کند. یک فرمت داده های آموزشی را پیشنهاد کنید که این را یاد دهد.
  1. مقاله موشی را بخش ۴ بخوانید. جداسازی "مونوگ داخلی" را توصیف کنید و اینکه چرا از تقسیم فکر کننده و سخنران جلوگیری می کند.
  1. بودجه تولید را محاسبه کنید: یک گفتارگر باید تا چه اندازه سریع توکن ها را برای پیگیری 16kHz در 50 توکن لایه پایه در ثانیه ارسال کند؟

اصطلاحات کلیدی

TermWhat people sayWhat it actually means
Thinker"Reasoning brain"Large text-generating transformer producing what to say
Talker"Speech-generating mouth"Small transformer producing discrete speech tokens from Thinker's text
TTFAB"Latency budget"Time-to-first-audio-byte: from user speech end to first audio sample out
TMRoPE"Time-aligned RoPE"Position encoding using absolute timestamps across vision, audio, text
Half-duplex"Turn-taking"User and model alternate; VAD silence detects user-done
Full-duplex"Simultaneous"Model can speak and listen at the same time; backchannel capable
Inner monologue"Moshi separation"Single-model design where thinking-stream and speaking-stream interleave

خواندن بیشتر

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.