اجرای محلی K2-Horizon-MoVA؛ چقدر VRAM لازم داری؟
خلاصهٔ کاملتر
این مقاله سراغ یه سؤال عملی رفته: برای اجرای محلی K2-Horizon-MoVA-36B-A4B چی لازمه؟ خود مدل یه Mixture-of-Experts یا MoE هست (یعنی شبکه به چند زیرشبکه متخصص شکسته شده و یه روتر برای هر توکن فقط چندتاشون رو صدا میزنه). برای همین از ۳۶ میلیارد پارامترش فقط حدود ۴ میلیارد به ازای هر توکن کار میکنه و سرعت تولید متنش شبیه یه مدل کوچیکه.
ولی نویسنده روی یه نکته دست میذاره که خیلیها اشتباه میگیرن: حافظه به پارامتر کل گره خورده، نه به پارامتر فعال. چون روتر میتونه برای هر توکن و حتی هر لایه متخصص متفاوتی انتخاب کنه، همه متخصصها باید از قبل تو VRAM یا RAM بشینن. پس مدل مثل یه مدل ۴ میلیاردی محاسبه میکنه ولی مثل یه مدل ۳۶ میلیاردی جا میگیره. اجراش ارزونه، بار کردنش نه.
عددها هم مشخصه. با دقت کامل FP16 یا BF16 حدود ۷۰ تا ۷۵ گیگابایت فقط برای وزنها لازمه. کوانتایز ۴ بیتی (GGUF Q4 یا AWQ یا GPTQ) این رقم رو میبره به حدود ۱۸ تا ۲۰ گیگابایت که روی یه کارت ۲۴ گیگی مثل RTX 4090 یا 3090 جا میشه. حالت ۸ بیتی میره تو محدوده ۳۰ و خردهای گیگابایت و کارتهای ۴۰ یا ۴۸ گیگی مثل A6000 و L40 رو میخواد.
روی اینها باید KV cache رو هم حساب کنی، یعنی حافظهای که مدل برای توکنهای قبلی نگه میداره و با طول متن بزرگ میشه. نویسنده پیشنهاد میده برای شروع، طول متن کاری رو بین ۸ تا ۳۲ هزار توکن نگه داری و سراغ ۵۱۲ هزار توکن کامل نری، مگر اینکه ۴۸ گیگابایت به بالا VRAM داشته باشی. اجرای فقط با CPU یا ترکیب CPU و GPU هم با llama.cpp شدنیه، کندتر ولی بدون کارت گرانقیمت.
نکته آخر انتخاب موتور اجراست. چون معماری MoE و مکانیزم توجه MoVA غیراستانداردن، لودرهای عمومی که فقط برای مدلهای dense نوشته شدن ممکنه مسیر متخصصها رو اشتباه بزنن و به جای خطای واضح، خروجی بیمعنی بدن. گزینههای عملی llama.cpp برای سختافزار خانگی، vLLM برای سرویسدهی روی GPU و SGLang برای اجرای موازی روی چند کارته. نویسنده میگه قبل از شروع، پشتیبانی رسمی از این خانواده معماری رو چک کن.
نکات کلیدی:
- وزنهای FP16/BF16 حدود ۷۰ تا ۷۵ گیگابایت حافظه میخوان
- کوانتایز ۴ بیتی حدود ۱۸ تا ۲۰ گیگابایت، مناسب یه کارت ۲۴ گیگی
- کوانتایز ۸ بیتی حدود ۳۰ و خردهای گیگابایت، مناسب A6000 یا L40
- برای متن ۵۱۲ هزار توکنی عملاً ۴۸ گیگابایت به بالا VRAM لازمه
- موتور باید MoE-آگاه باشه: llama.cpp یا vLLM یا SGLang
- فعلاً فقط چکپوینت نهایی منتشر شده، نه داده و کد آموزش




