۸ آبان ۱۴۰۵ github.com ۳ دقیقه مطالعه

اجرای کنسول نینتندو (NES) درون وزن‌های مدل زبانی Qwen با پروژه nesformer

اجرای کنسول نینتندو (NES) درون وزن‌های مدل زبانی Qwen با پروژه nesformer — A Working Nintendo in ~1GB of Qwen Weights

خلاصه

پروژه nesformer نشان می‌دهد که چگونه می‌توان یک پردازنده ۶۵۰۲ و حافظه رم کنسول بازی کلاسیک NES را بدون آموزش هوش مصنوعی و از طریق کامپایل مستقیم، درون وزن‌ها و حالت‌های داخلی یک مدل زبانی Qwen جاسازی کرد. این پروژه عجیب و جذاب، از حالت‌های Gated DeltaNet به عنوان حافظه ماشین استفاده می‌کند.

پروژه nesformer یکی از آن هک‌های مهندسی بسیار جذاب و خلاقانه است که مرزهای توانایی مدل‌های زبانی بزرگ را جابجا می‌کند. این ابزار به جای آموزش دادن یک مدل جدید از صفر، یک پردازنده ۶۵۰۲ (هسته اصلی پردازنده کنسول خاطره‌انگیز NES)، دو کیلوبایت حافظه رم کاری (RAM) و کدهای بازی را مستقیماً به درون وزن‌های یک مدل آماده از خانواده Qwen (نسخه Qwen3.5) کامپایل می‌کند.

پس‌زمینه و ایده اصلی

این پروژه بر اساس معماری Qwenputer توسعه یافته است که پیش‌تر توانسته بود یک ماشین CHIP-8 و حتی یک پردازنده RISC-V را درون مدل‌های Qwen پیاده‌سازی کند. نکته کلیدی و ترفند اصلی اینجاست: حالت‌های Gated DeltaNet در مدل زبانی به عنوان حافظه سخت‌افزاری دستگاه عمل می‌کنند.

در این معماری، هیچ شبکه عصبی برای یادگیری بازی‌ها آموزش داده نشده است؛ بلکه یک کامپایلر سفارشی، تمام وزن‌ها و لاجیک مورد نیاز را محاسبه و در چک‌پوینت مدل قرار داده است. مدل زبانی توکن به توکن لاگ اجرای پردازنده را پیش‌بینی می‌کند و یک برنامه میزبان سبک (Host Program)، وظایف جانبی مثل رندر کردن تصاویر، خواندن دسته‌های بازی (Controllers) و مدیریت وقفه‌ها را بر عهده دارد.

جزئیات فنی و معماری

بر خلاف تصور اولیه که شاید فکر کنید فقط خود CPU شبیه‌سازی می‌شود، کل پشته سخت‌افزاری شامل موارد زیر درون مدل قرار دارد:

  • هسته پردازنده ۶۵۰۲: شامل تمام دستورالعمل‌ها، حالت‌های آدرس‌دهی، پرچم‌ها و استک.
  • حافظه RAM و ROM: دو کیلوبایت رم کاری و ۳۲ کیلوبایت حافظه برنامه‌ها مستقیماً در ساختار داخلی لایه‌های DeltaNet جای گرفته‌اند.
  • برنامه میزبان (Host): وظیفه رسم گرافیک، خواندن کلیدهای گیم‌پد و ارسال سیگنال‌های VBLANK را انجام می‌دهد.

مجموعه وزن‌های این مدل حدود ۹۳۳ مگابایت حجم دارد (با استفاده از فرمت bf16) که بخش عمده آن صفر است و حجم فایل فشرده‌شده آن تنها چند مگابایت است. این چک‌پوینت به صورت استاندارد با کتابخانه‌های Hugging Face سازگار است و نیاز به کد سفارشی پیچیده‌ای برای لود شدن ندارد.

نحوه نصب و استفاده

برای اجرای این پروژه به پایتون نسخه ۳.۱۱ یا بالاتر نیاز دارید. مراحل کار به صورت زیر است:

۱. ساخت محیط مجازی و نصب وابستگی‌ها:

python3 -m venv .venv
source .venv/bin/activate
pip install numpy scipy numba pillow

۲. اجرای یک بازی نمونه (مثل Thwaite یا Super Mario Bros) با دستور زیر:

python -m nesformer run roms/thwaite.nes --frames 600 --show --buttons "start@90-95,right@200-600"

پرچم --show فریم‌ها را به صورت زنده در ترمینال شما رندر می‌کند و در نهایت یک فایل GIF از خروجی بازی ذخیره خواهد شد.

نگاه جامعه هکرنیوز

این پروژه بازخورد بسیار عجیبی در هکرنیوز داشت. برنامه‌نویسان از یک سو با تعجب و تحسین به این «جادوی نرم‌افزاری» نگاه می‌کردند که چگونه یک مدل زبانی می‌تواند به عنوان یک امولاتور سخت‌افزاری عمل کند؛ و از سوی دیگر، به این نکته اشاره می‌کردند که از نظر مصرف منابع و کارایی، اجرای یک برنامه قطعی (Deterministic) سنتی چقدر کارآمدتر و سریع‌تر از اجرای آن از طریق توکن‌های یک مدل هوش مصنوعی است. اجرای بازی‌ها کند است (چند ثانیه برای هر فریم)، اما اثبات مفهومی آن بی‌نظیر است.

این مطلب به‌صورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل

این خبر را با دیگران به اشتراک بگذارید

خبرهای فناوری در قالب پست و ویدیوی کوتاه، در اینستاگرام هکرنیوز بلاگ. به‌زودی
هر خبر به محض انتشار، به‌همراه پادکست روزانه در کانال تلگرام هکرنیوز بلاگ.