در چند سال اخیر، موجی از مدلهای زبانی کوچک و بهینهشده پدید آمد که دیگر نیازی به کارتهای گرافیک گرانقیمت ندارند و میتوانند صرفاً با CPU و حافظهٔ کافی، با کیفیت قابلقبول اجرا شوند. این مقاله همهچیز لازم را بهصورت عملی و کاربردی برای مدیران دیتاسنتر و مهندسان زیرساخت روی سرورهای HPE نسلهای G9 و G10 توضیح میدهد: چه مدلهایی مناسباند، چه مقدار RAM و چه تنظیماتی لازم است، و چطور بهترین عملکرد را از CPU بیرون بکشیم.
چرا اجرا روی CPU مهم است؟
هزینهٔ اولیه پایینتر: نیازی به خرید GPUهای ۱۰k–۳۰k دلاری نیست.
استفاده از سرورهای موجود: سرورهای نسلهای قبلی (مثلاً DL380 G9) معمولاً CPU و رم کافی دارند.
سادگی محیط عملیاتی: نصب در محیط لینوکس بدون درایورهای CUDA/driver پیچیده.
مقیاسپذیری عمودی و افقی آسانتر برای بارهای inference سبک.
۱. مدلهایی که مخصوص CPU طراحی شدهاند
🔹 LLaMA / LLaMA2 / LLaMA3 (نسخههای کوانتیزهشده)
نسخههای ۳، ۵، ۸ و ۱۳B با کوانتیزیشن Q4، Q5 یا Q8 میتوانند روی CPU بهخوبی اجرا شوند.
اجرا با llama.cpp (کامپایلشده برای CPU)
نیاز به رم ۸ تا ۳۲ گیگ بسته به نسخه
سرعت مناسب حتی روی Xeon های قدیمی G9
اینها شناختهشدهترین و کاربردیترین مدلها برای CPU هستند.
🔹 Mistral 7B (کوانتیزهشده)
مدلی بسیار سریع، دقیق، و سبک که عالی روی CPU مینشیند.
در حالت Q4_K_M میتواند روی ۸–۱۲GB RAM اجرا شود
برای کاربردهای چت، برنامهنویسی، خلاصهسازی و … عالی است
سرعت بهتر از LLaMA2 در همان مقیاس
🔹 Phi-2 / Phi-3
مدلهای مایکروسافت که خیلی کارا و سبک هستند.
Phi-2 (2.7B) برای سرورهای کمرم فوقالعاده است
Phi-3 Mini (3.8B) یکی از سریعترین مدلهای CPU
به کیفیت خوب نسبت به حجم مشهورند
اجرای آنها با llama.cpp یا onnxruntime CPU فوقالعاده سبک است.
🔹 Gemma 2B / 7B
از گوگل.
ورژنهای کوانتیزهشده برای CPU عالی هستند.
مخصوصاً Gemma 2B Q4 که حتی روی لپتاپ هم اجرا میشود
کیفیت بالا نسبت به حجم کم
مصرف رم بسیار پایین
۲. مدلهایی که برای CPU بسیار بهینهسازی شدهاند
🔹 RWKV
یک معماری متفاوت که اصلاً نیاز به GPU ندارد و روی CPU سرعت خیلی بالایی دارد.
مزیتها:
inference شبیه RNN
مصرف رم بسیار کم
سرعت بسیار بالا روی Xeon
مدلهای 7B و 14B هم روی CPU قابل اجرا هستند
برای سرورهایی مثل DL380 G9 که کارت GPU ندارند، انتخاب فوقالعادهای است.
🔹 GPT-NeoX / GPT-J کوانتیزهشده
مدلهای قدیمیتر اما بسیار سبک.
اجرای خوب روی CPU
مناسب برای سرویسدهی متن ساده و چت سبک
مصرف رم پایین
اگر کیفیت خیلی بالا نمیخوای، اینها جواب میدهند.
🔵 کوانتیزه شدن یعنی چه؟
در مدلهای زبانی، وزنها (Weights) معمولاً با دقت ۳۲ بیت (Float32) ذخیره میشوند.
این دقت بالا موجب:
حجم بالا (مثلاً LLaMA-7B در حالت FP32 حدود 28GB است)
نیاز شدید به GPU
مصرف زیاد رم
میشود.
Quantization میآید و این وزنها را با دقت پایینتر ذخیره میکند.
مثلاً:
از 32 بیت → 8 بیت (INT8)
از 32 بیت → 4 بیت (INT4)
حتی → 2 بیت (INT2) در نسخههای خیلی فشرده
مثال ساده
فرض کن یک عدد را میتوانی با 32 بیت ذخیره کنی:
00110101100110101101011011011011
ولی اگر 4 بیت کافی باشد، همان مقدار را با دقت کمتر، اما بسیار کمحجمتر ذخیره میکنی:
1101
دقت کمی کم شده، اما حجم دهها برابر کمتر شده است.
چرا کوانتیزیشن برای CPU مهم است؟
CPU توان پردازش FP16 یا FP32 مثل GPU را ندارد.
اما برای INT8 یا INT4 بسیار سریعتر است.
بنابراین وقتی مدل را کوانتیزه میکنیم:
حجم مدل کوچکتر میشود
RAM مورد نیاز بهشدت کاهش پیدا میکند
مدل روی CPU با سرعت قابل قبول اجرا میشود
مثلاً:
LLaMA3-8B
نسخه کامل FP16 → حدود 16GB RAM
نسخه Q4_K_M → حدود 4.8GB RAM
نسخه Q2_K → حدود 2.8GB RAM
یعنی حتی روی لپتاپ هم قابل اجرا میشود.
انواع رایج کوانتیزیشن (در مدلهای GGUF)
| نوع | میزان فشردهسازی | کیفیت | سرعت |
|---|---|---|---|
| Q8 | کم | عالی | متوسط |
| Q6 | خوب | خیلی خوب | خوب |
| Q5 | عالی | عالی | خیلی خوب |
| Q4 | بسیار عالی | خوب | خیلی خوب |
| Q3 | خیلی زیاد | متوسط | فوقسریع |
| Q2 | شدید | پایین | فوقسریع |
بیشتر افراد برای تعادل کیفیت و سرعت از Q4_K_M یا Q5_K_M استفاده میکنند.
آیا کوانتیزیشن دقت مدل را خراب میکند؟
بله، ولی:
معمولاً خیلی کم
در حدی نیست که برای چت یا کارهای عمومی مشکل ایجاد کند
برای کارهای حساس مثل تحلیل پزشکی یا ریاضی ممکن است زیاد باشد
چرا مدلهای بزرگ بدون کوانتیزیشن اجرا نمیشوند؟
مدلی مثل LLaMA3 8B در حالت FP16 حدود 16GB رم فقط برای وزنها نیاز دارد.
در CPU بدون GPU این مقدار معمولاً غیرعملی است.
ولی با Q4 مثلاً:
4.8GB RAM
بهراحتی روی سرورهای G9 و G10 اجرا میشود.
مثالهای عملی برای DL380 G9 و G10 (پیکربندی و توصیهها)
DL380 G9 (نمونهٔ رایج)
پردازنده: خانوادهٔ Intel Xeon E5 v3/v4 (چند هستهای، بدون شتابدهندهٔ VNNI پیشرفته).
رم پیشنهادی برای inference مدلهای CPU-friendly: 64–128 GB (برای مدلهای 2–13B کوانتیزه).
ذخیرهسازی: NVMe/SSD برای مدلها و swap سریع؛ بهتر است مدلها را روی NVMe بخوانید.
مثال عملی: با Dual Xeon + 128GB RAM میتوان Mistral 7B (Q4) یا LLaMA 8B (Q4) را با پاسخدهی مناسب و چند هزار توکن در حافظهٔ عملیاتی اجرا کرد.
تنظیمات نرمافزاری: استفاده از llama.cpp یا ggml/gguf، فعالسازی multi-threading، و set کردن
OMP_NUM_THREADSبه هستههای فیزیکی در دسترس.
DL380 G10 (نمونهٔ قویتر)
پردازنده: Xeon Scalable جدیدتر با AVX-512 / VNNI (عملکرد INT8 بهتر).
رم پیشنهادی: 128–256 GB برای مدلهای 7–30B کوانتیزه.
با یک DL380 G10 با دو پردازنده پرهسته میتوانید مدلهای 13B را در Q4 با کارایی بالا اجرا کنید و حتی مدلهای بالاتر را در حالت فشردهتری (Q2/Q3) آزمایش نمایید.
نکات حیاتی برای بهینهسازی اجرا روی CPU
استفاده از فرمتهای بهینه: GGUF برای llama.cpp، ONNX برای runtimeهایی که از این فرمت پشتیبانی میکنند.
AVX2 / AVX-512 و VNNI: پردازندههایی با این اختصاصیسازها عملیات INT8/INT4 را سریعتر میکنند—نسلهای جدیدتر G10 برتری دارند.
NUMA-awareness: در سرورهای Dual-CPU حتماً مدل و threads را نسبت به NUMA nodeها هماهنگ کن (افزایش latency در صورت بیتوجهی).
تنظیم تعداد threadها:
OMP_NUM_THREADSوKMP_AFFINITYرا هماهنگ با هستههای فیزیکی تعیین کن.IO و Storage: مدلها را روی NVMe نگهدار؛ I/O کند باعث تاخیر ابتدایی طولانی میشود.
swap هوشمند نه بهعنوان راهکار دائم: اگر RAM کم است میتوان از swap سریع NVMe استفاده کرد اما کیفیت و latency افت میکند.
پروفایلینگ و اندازه پرسش (batching): برای throughput بالاتر، batching را افزایش بده؛ برای latency کم، batch=1 را نگه دار.
انتخاب کتابخانه: llama.cpp، ggml یا onnxruntime (CPU) بهترینها برای کار روی CPU هستند.
چقدر RAM لازم است؟ (قواعد سرانگشتی)
مدلهای 2–4B (Q4) → 6–12 GB
مدلهای 7B (Q4) → 12–24 GB
مدلهای 8–13B (Q4) → 24–48 GB
مدلهای بزرگتر (30B+) فقط در صورت کوانتیزه سنگین و RAM ≥ 128GB ممکناند و اغلب بهتر است روی GPU اجرا شوند.
اجرا کردن مدلهای زبانی با CPU امروز نهتنها ممکن است، بلکه در بسیاری از پروژههای تولیدیِ سبک و متوسط بهترین گزینه اقتصادی و عملی است. روی سرورهایی مثل DL380 G9 میتوان با 64–128GB RAM مدلهای 7B–8B کوانتیزه را روان اجرا کرد؛ روی DL380 G10 و بالاتر، مدلهای 13B و حتی بزرگتر در دسترس خواهند بود. کلید موفقیت: انتخاب مدل مناسب، کوانتیزاسیون درست، بهرهگیری از کتابخانههای بهینه و رعایت تنظیمات NUMA / threading.














