NVIDIA Dory1.0-4B: مدلی که تعداد دور فکرکردنش دست خودته
خلاصهٔ کاملتر
انویدیا Dory1.0-4B رو منتشر کرده؛ یه مدل زبانی open-weight با ۴ میلیارد پارامتر که معماریش looped یا latent-recurrent هست. یعنی بهجای اینکه هر توکن یه بار از یه سری لایهٔ ثابت رد بشه، یه بلوک مشترک از لایهها چند بار روی همون ورودی اجرا میشه. تعداد این دورها (۱، ۲ یا ۴) رو موقع serving انتخاب میکنی و نیازی به آموزش دوباره یا عوض کردن مدل نیست.
لایههای مدل سه گروهان: بلوک Input با ۸ لایه، بلوک Recurrent با ۲۰ لایه که تو حلقه اجرا میشه و بلوک Output با ۸ لایه. نکتهٔ مهم اینه که ورودی اصلی تو هر دور دوباره به بلوک Recurrent تزریق میشه، پس هر دور به متن اصلی دسترسی تازه داره. نتیجه اینه که تعداد پارامترها ثابت میمونه ولی محاسبه به ازای هر توکن با تعداد دورها بالا میره. لایههای attention هم ترکیبی از sliding-window و full attention هستن.
اعداد انویدیا اثر دورها رو نشون میده: تو SWE-bench Verified امتیاز از ۵۰.۳ با یه دور به ۵۹.۵ با دو دور و ۶۱.۸ با چهار دور میرسه. Terminal-Bench 2.1 هم از ۱۲.۵ به ۱۸.۱ و ۲۲.۲ میره. ولی همهجا اینطور نیست؛ مثلاً GPQA Diamond بین دو و چهار دور از ۷۲.۴۱ به ۷۲.۱۶ کم میشه. پیشنهاد خود انویدیا دو دور بهعنوان پیشفرضه و چهار دور فقط برای کارهای سنگین ایجنتی مثل کار با ترمینال و مهندسی نرمافزار.
یه ادعای جالب اینه که دورهای بیشتر لزوماً یعنی کندتر شدن نیست. چون مدل بخشی از «فکر کردن» رو تو فضای داخلی بین دورها انجام میده، برای حل همون مسئله توکن خروجی کمتری تولید میکنه. یعنی هر قدم گرونتره ولی ممکنه قدم کمتری لازم باشه. انویدیا خودش توصیه میکنه latency و هزینهٔ نهایی رو روی کار واقعی خودت اندازه بگیری.
مشکل همیشگی مدلهای recurrent اینه که هر دور KV cache جدا میخواد (یعنی حافظهای که کلیدها و مقدارهای attention توکنهای قبلی رو نگه میداره)، پس حافظه با تعداد دورها خطی بالا میره. Dory علاوه بر حالت per-loop، حالت last-loop KV caching هم داره که هر دور کش دور قبل رو بازنویسی میکنه. پس حافظه همیشه اندازهٔ یه دوره و طبق گزارش انویدیا دقت نزدیک حالت per-loop میمونه. این جای خالی رو میشه برای context بلندتر یا درخواستهای همزمان بیشتر خرج کرد.
مدل روی پایهٔ nGPT (یعنی GPT نرمالشده) ساخته شده و از اول با NVFP4، فرمت ممیز شناور ۴ بیتی انویدیا، pretrain شده و بعد آموزشش با BF16 ادامه پیدا کرده. در مقایسه، با چهار دور تو SWE-bench Verified از Qwen3.5-4B و Qwen3.5-9B جلو میزنه (۶۱.۸ در برابر ۵۴.۷ و ۶۱) و تو IFBench با ۷۹ اوله. ولی تو GPQA Diamond، AA-Omniscience و HLE از مدلهای بزرگتر Qwen و Gemma خیلی عقبتره؛ یعنی looping بیشتر به حل مسئلهٔ چندمرحلهای کمک میکنه تا به دانش حفظشده.
نکات کلیدی:
- لایهها: ۸ لایه Input، ۲۰ لایه Recurrent و ۸ لایه Output؛ دورها روی بلوک Recurrent اجرا میشن.
- تعداد دور (۱، ۲ یا ۴) موقع اجرا انتخاب میشه و پیشفرض پیشنهادی انویدیا ۲ هست.
- SWE-bench Verified: ۵۰.۳ با یه دور، ۵۹.۵ با دو دور و ۶۱.۸ با چهار دور.
- last-loop KV caching حافظه رو در حد یه دور ثابت نگه میداره.
- فرمتهای انتشار: BF16، MXFP8، NVFP4 و Q5_K_M (GGUF) با پشتیبانی vLLM و llama.cpp.
- تو دانش عمومی و استدلال خالص (GPQA Diamond، HLE) از رقبای بزرگتر عقبتره.




