پشتیبانی آنلاین

49 17 49 66 021

 

امکان ارسال

به تمام نقاط ایران

 

مدل های هوش مصنوعی بدون نیاز به کارت گرافیک

هوش مصنوعی

در چند سال اخیر، موجی از مدل‌های زبانی کوچک و بهینه‌شده پدید آمد که دیگر نیازی به کارت‌های گرافیک گران‌قیمت ندارند و می‌توانند صرفاً با 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

  1. استفاده از فرمت‌های بهینه: GGUF برای llama.cpp، ONNX برای runtimeهایی که از این فرمت پشتیبانی می‌کنند.

  2. AVX2 / AVX-512 و VNNI: پردازنده‌هایی با این اختصاصی‌سازها عملیات INT8/INT4 را سریع‌تر می‌کنند—نسل‌های جدیدتر G10 برتری دارند.

  3. NUMA-awareness: در سرورهای Dual-CPU حتماً مدل و threads را نسبت به NUMA nodeها هماهنگ کن (افزایش latency در صورت بی‌توجهی).

  4. تنظیم تعداد threadها: OMP_NUM_THREADS و KMP_AFFINITY را هماهنگ با هسته‌های فیزیکی تعیین کن.

  5. IO و Storage: مدل‌ها را روی NVMe نگهدار؛ I/O کند باعث تاخیر ابتدایی طولانی می‌شود.

  6. swap هوشمند نه به‌عنوان راهکار دائم: اگر RAM کم است می‌توان از swap سریع NVMe استفاده کرد اما کیفیت و latency افت می‌کند.

  7. پروفایلینگ و اندازه پرسش (batching): برای throughput بالاتر، batching را افزایش بده؛ برای latency کم، batch=1 را نگه دار.

  8. انتخاب کتابخانه: 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.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

سایر مطالب پیشنهادی به شما

تماس با ما

خواندن این مطالب را هم به شما پیشنهاد می‌کنیم