پیش از خرید یا اجاره سرور GPU، باید بدانید مدل مورد نظرتان چقدر حافظه کارت گرافیک لازم دارد. اگر VRAM کم باشد، مدل یا اصلاً اجرا نمیشود یا بخشی از آن روی RAM سیستم میرود و سرعت چند برابر کاهش مییابد. در این راهنما فرمول ساده محاسبه VRAM برای هوش مصنوعی، جدول مرجع مدلهای ۷ تا ۷۰ میلیاردی، اثر طول متن و کاربران همزمان و راهنمای انتخاب کارت را ارائه میدهیم.
فهرست مطالب
فرمول محاسبه VRAM
حافظه لازم برای اجرای یک مدل زبانی (Inference) از سه بخش تشکیل میشود:
VRAM کل = حافظه وزنهای مدل + حافظه KV Cache + سربار نرمافزار
- وزنهای مدل: بخش ثابت و معمولاً بزرگترین بخش.
- KV Cache: بخش متغیر که با طول متن و تعداد درخواستهای همزمان رشد میکند.
- سربار: CUDA، کتابخانهها و حافظه موقت محاسبات؛ معمولاً ۱ تا ۲ گیگابایت.
این فرمول برای اجرای مدل است. آموزش و Fine-Tuning حافظه بسیار بیشتری لازم دارند که در مقاله Inference و Fine-Tuning توضیح دادهایم.
حافظه وزنهای مدل
حافظه وزنها از ضرب تعداد پارامترها در تعداد بایت هر پارامتر به دست میآید:
| دقت | بایت بهازای هر پارامتر | حافظه بهازای هر ۱ میلیارد پارامتر |
|---|---|---|
| FP16 / BF16 | ۲ | حدود ۲ گیگابایت |
| FP8 / INT8 (Q8) | ۱ | حدود ۱ گیگابایت |
| ۴ بیتی (Q4_K_M، AWQ، GPTQ) | حدود ۰٫۵ تا ۰٫۶ | حدود ۰٫۵ تا ۰٫۶ گیگابایت |
مثلاً یک مدل ۸ میلیاردی در FP16 حدود ۱۶ گیگابایت و در ۴ بیتی حدود ۵ گیگابایت حافظه برای وزنها لازم دارد. کوانتایزهای ۴ بیتی رایج کمی بیش از ۰٫۵ بایت مصرف میکنند، چون برخی لایهها با دقت بالاتر نگه داشته میشوند.
جدول مرجع VRAM
اعداد زیر شامل وزنها، سربار و KV Cache برای یک کاربر با طول متن متوسط (حدود ۸ هزار توکن) است:
| اندازه مدل | FP16 | ۸ بیتی | ۴ بیتی | کارت پیشنهادی |
|---|---|---|---|---|
| ۷ تا ۸ میلیارد (Llama ۳.۱ 8B، Qwen ۲.۵ 7B) | ۱۸ تا ۲۰ گیگابایت | ۱۰ تا ۱۲ گیگابایت | ۶ تا ۸ گیگابایت | کارت ۱۲ تا ۲۴ گیگابایتی |
| ۱۴ میلیارد (Qwen ۲.۵ 14B) | ۳۰ تا ۳۲ گیگابایت | ۱۷ تا ۱۹ گیگابایت | ۱۰ تا ۱۲ گیگابایت | RTX ۴۰۹۰ (۴ بیتی و ۸ بیتی)، L40S (FP16) |
| ۳۲ میلیارد (Qwen ۲.۵ 32B) | ۶۶ تا ۷۰ گیگابایت | ۳۵ تا ۳۸ گیگابایت | ۲۰ تا ۲۴ گیگابایت | L40S (۴ و ۸ بیتی)، H100 (FP16) |
| ۷۰ میلیارد (Llama ۳.۳ 70B) | ۱۴۵ تا ۱۵۰ گیگابایت | ۷۵ تا ۸۰ گیگابایت | ۴۲ تا ۴۶ گیگابایت | L40S (۴ بیتی)، H100 یا H200 (۸ بیتی)، دو H100 (FP16) |
KV Cache؛ بخشی که فراموش میشود
مدل برای تولید هر توکن، اطلاعات توکنهای قبلی را در حافظهای به نام KV Cache نگه میدارد. حجم آن بهازای هر توکن:
۲ × تعداد لایهها × تعداد هدهای KV × ابعاد هد × بایت دقت
برای Llama ۳.۱ 8B (۳۲ لایه، ۸ هد KV، ابعاد ۱۲۸) در FP16 حدود ۱۲۸ کیلوبایت بهازای هر توکن، و برای Llama ۳.۳ 70B (۸۰ لایه) حدود ۳۲۰ کیلوبایت است. یعنی:
| مدل | ۸ هزار توکن | ۳۲ هزار توکن | ۱۲۸ هزار توکن |
|---|---|---|---|
| 8B | حدود ۱ گیگابایت | حدود ۴ گیگابایت | حدود ۱۶ گیگابایت |
| 70B | حدود ۲٫۵ گیگابایت | حدود ۱۰ گیگابایت | حدود ۴۰ گیگابایت |
این اعداد برای یک درخواست است. با ۱۰ کاربر همزمان، در بدترین حالت ده برابر میشوند. به همین دلیل سرویسدهی به چند کاربر، حتی با مدلی که خودش در کارت جا میشود، ممکن است حافظه را تمام کند. موتورهایی مثل vLLM با PagedAttention فقط به اندازه طول واقعی هر درخواست حافظه تخصیص میدهند و هدررفت را حذف میکنند.
مثال کامل محاسبه
فرض کنید میخواهید Qwen ۲.۵ 32B را با کوانتایز ۴ بیتی برای ۸ کاربر همزمان با طول متن ۸ هزار توکن اجرا کنید:
- وزنها: ۳۲ × ۰٫۶ ≈ ۱۹ گیگابایت
- KV Cache: این مدل ۶۴ لایه و ۸ هد KV دارد؛ حدود ۲۵۶ کیلوبایت بهازای هر توکن. ۸ × ۸۰۰۰ × ۲۵۶ کیلوبایت ≈ ۱۶ گیگابایت
- سربار: حدود ۲ گیگابایت
جمع: حدود ۳۷ گیگابایت. این بار روی یک کارت ۴۸ گیگابایتی مثل L40S با حاشیه مناسب اجرا میشود، اما روی کارت ۲۴ گیگابایتی جا نمیشود. با کوانتایز KV Cache به ۸ بیت، بخش کش نصف میشود و حدود ۸ گیگابایت صرفهجویی میشود.
اثر کوانتایز
کوانتایز دقت ذخیره وزنها را کم میکند و حافظه را تا یکچهارم کاهش میدهد. کوانتایز ۸ بیتی تقریباً بدون افت کیفیت است و ۴ بیتی در اغلب کاربردها افت اندکی دارد. معمولاً یک مدل بزرگتر با کوانتایز ۴ بیتی، از یک مدل کوچکتر با دقت کامل نتیجه بهتری میدهد. فرمتها (GGUF، AWQ، GPTQ، FP8) و انتخاب بین آنها را در مقاله Quantization چیست توضیح دادهایم.
اگر VRAM کافی نباشد چه میشود؟
ابزارهایی مثل Ollama و llama.cpp میتوانند بخشی از لایههای مدل را روی RAM سیستم و CPU اجرا کنند (Offloading). مدل اجرا میشود، اما سرعت بهشدت کاهش مییابد، چون پهنای باند RAM سیستم چند برابر کمتر از VRAM است. حتی ۱۰ تا ۲۰ درصد لایههای خارج از GPU میتواند سرعت را نصف کند. با دستور ollama ps ببینید چه سهمی از مدل روی GPU است. موتورهایی مثل vLLM اصولاً برای اجرای کامل روی GPU طراحی شدهاند.
انتخاب کارت گرافیک
- ۱۲ تا ۱۶ گیگابایت: مدلهای ۷ تا ۸ میلیاردی کوانتایزشده؛ مناسب آزمایش.
- ۲۴ تا ۳۲ گیگابایت (RTX ۴۰۹۰، RTX ۵۰۹۰): مدلهای تا ۱۴ میلیارد با کیفیت بالا یا ۳۲ میلیارد ۴ بیتی برای یک کاربر.
- ۴۸ گیگابایت (L40S): مدلهای تا ۳۲ میلیارد برای چند کاربر یا ۷۰ میلیارد ۴ بیتی با متن کوتاه.
- ۸۰ گیگابایت و بیشتر (H100، H200): مدلهای ۷۰ میلیاردی با دقت بالاتر، متن طولانی و کاربران زیاد.
علاوه بر ظرفیت، پهنای باند حافظه سرعت تولید متن را تعیین میکند. مقایسه کامل کارتها را در بهترین GPU برای LLM و مقایسه L40S، H100 و RTX ببینید.
سوالات متداول
آیا RAM سیستم میتواند جایگزین VRAM شود؟
در ابزارهایی مثل Ollama و llama.cpp بله، با انتقال بخشی از لایهها به RAM. اما سرعت بسیار کمتر میشود و برای استفاده عملیاتی مناسب نیست.
کدام کارت برای Llama ۳.۳ 70B اقتصادیتر است؟
برای یک یا چند کاربر با متن کوتاه، یک L40S ۴۸ گیگابایتی با نسخه ۴ بیتی. برای کیفیت بالاتر با کوانتایز ۸ بیتی، متن طولانی یا کاربران بیشتر، H100 یا H200.
آیا دو کارت ۲۴ گیگابایتی معادل یک کارت ۴۸ گیگابایتی است؟
از نظر ظرفیت کل تقریباً بله، چون موتورهایی مثل vLLM مدل را بین کارتها تقسیم میکنند. اما ارتباط بین کارتها سربار دارد و هر کارت باید سربار نرمافزاری خودش را هم داشته باشد. یک کارت بزرگ معمولاً سادهتر و سریعتر است.
مدلهای MoE مثل Mixtral چقدر VRAM لازم دارند؟
در مدلهای Mixture of Experts فقط بخشی از پارامترها در هر توکن فعال است و محاسبات کمتر است، اما همه پارامترها باید در حافظه باشند. پس VRAM را بر اساس تعداد کل پارامترها حساب کنید، نه پارامترهای فعال.
سرور GPU با VRAM متناسب با مدل شما
در سرورهای GPU تراست هاست با کارتهای L40S و H100، مدلهای خود را بدون خرید سختافزار اجرا کنید؛ برای انتخاب کارت مناسب هم میتوانید با کارشناسان ما مشورت کنید.