کوانتیزه کردن مدلها روی یک GPU لپتاپ ۶ گیگابایتی
من سعی کردم مدلهای زبانی بزرگ را روی یک GPU لپتاپ RTX 3050 جای دهم. این کارت تنها ۶ گیگابایت VRAM دارد. میخواستم ببینم کدام مدلها با کوانتیزاسیون ۴-بیتی کار میکنند و کدامیک با شکست مواجه میشوند.
من از یک اسکریپت واحد برای کوانتیزه کردن سه مدل استفاده کردم:
- Phi-3.5-mini (3.8B)
- Llama-3.2-3B
- Qwen2.5-3B (VibeThinker)
نتایج: Phi و Llama به خوبی کار کردند. حجم Phi در مدت ۳۴ دقیقه از ۷.۶ گیگابایت به ۲.۲ گیگابایت کاهش یافت. Llama و VibeThinker نیز مسیر مشابهی را طی کردند. این مدلها به راحتی جای میگیرند.
سپس Qwen2.5-7B را امتحان کردم. شکست خورد. فرآیند در لایه دوم با خطای کمبود حافظه (Out of Memory) متوقف شد.
چرا شکست خورد: کوانتیزاسیون GPTQ برای هر لایه یک ماتریس هسین (Hessian matrix) میسازد. برای یک مدل 7B، این محاسبات به حافظهای بیش از آنچه یک کارت ۶ گیگابایتی ارائه میدهد، نیاز دارد. من چندین راه حل را امتحان کردم:
- مجموعهدادههای کالیبراسیون کوچکتر: تغییری ایجاد نکرد.
- انتقال هسینها به CPU: مدت بیشتری دوام آورد اما باز هم کرش کرد.
- استفاده از AWQ به جای GPTQ: در همان نقطه کرش کرد.
- استفاده از فقط CPU: کار میکند اما بسیار کند است. هر لایه حدود ۱۶ دقیقه زمان میبرد.
نکات کلیدی برای GPUهای کوچک:
- انتظار کاهش ۳ برابری در اندازه مدل را داشته باشید.
- برای کوانتیزاسیون روی GPU، محدودیت ۳ تا ۴ میلیارد پارامتری را هدف قرار دهید.
- مراقب بودجه KV خود باشید. حتی اگر اندازه فایلها مشابه باشد، حافظه مصرفی در طول استنتاج (inference) متفاوت است.
- کوانتیزاسیون نسبت به سرویسدهی (serving) حافظه بیشتری مصرف میکند. در طول فرآیند، RAM سیستم خود را مانیتور کنید.
مقایسه مدلها (W4A16): • Phi-3.5-mini: 2.27 GB | 68.7 tok/s • Llama-3.2-3B: 2.26 GB | 66.0 tok/s • VibeThinker-3B: 2.07 GB | 43.9 tok/s
هر سه مدل پس از کوانتیزاسیون، محاسبات ریاضی پایه و منطق اعداد اول را به درستی انجام دادند.
انجمن یادگیری اختیاری: https://t.me/GyaanSetuAi