الأداء والتحسين
متطلبات العتاد
3 دقيقة للقراءة
فهم متطلبات العتاد يساعدك على اختيار الإعداد المناسب لتشغيل نماذج اللغة المحلية بكفاءة. النماذج المختلفة لها احتياجات مختلفة جداً.
مكونات العتاد الرئيسية
┌─────────────────────────────────────────────────────────────────┐
│ تأثير العتاد على أداء النماذج │
├─────────────────────────────────────────────────────────────────┤
│ │
│ المكون │ التأثير │ ما تبحث عنه │
│ ───────────────│──────────────────│─────────────────────── │
│ ذاكرة GPU │ حد حجم النموذج │ 8GB+ لـ 7B، 24GB+ لـ 70B │
│ ذاكرة النظام │ ذاكرة احتياطية │ 16GB حد أدنى، 32GB+ مثالي │
│ المعالج │ معالجة الطلبات │ متعدد النوى حديث │
│ التخزين │ تحميل النموذج │ SSD موصى به بشدة │
│ │
└─────────────────────────────────────────────────────────────────┘
متطلبات VRAM حسب حجم النموذج
┌─────────────────────────────────────────────────────────────────┐
│ متطلبات VRAM (مضغوط Q4) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ حجم النموذج │ Q4 VRAM │ Q8 VRAM │ نماذج أمثلة │
│ ───────────────│──────────│──────────│──────────────────── │
│ 1B بارامتر │ ~1 GB │ ~2 GB │ llama3.2:1b, phi3:mini │
│ 3B بارامتر │ ~2 GB │ ~4 GB │ llama3.2:3b │
│ 7-8B بارامتر │ ~4-5 GB │ ~8 GB │ llama3.2:8b, mistral │
│ 13B بارامتر │ ~8 GB │ ~14 GB │ codellama:13b │
│ 34B بارامتر │ ~20 GB │ ~36 GB │ codellama:34b │
│ 70B بارامتر │ ~40 GB │ ~70 GB │ llama3.2:70b │
│ │
└─────────────────────────────────────────────────────────────────┘
إرشادات حسب المنصة
Apple Silicon (M1/M2/M3/M4)
Apple Silicon ممتاز لنماذج اللغة المحلية بسبب بنية الذاكرة الموحدة.
# تحقق من ذاكرة Mac الموحدة
system_profiler SPHardwareDataType | grep "Memory"
# Ollama يستخدم Metal (GPU) تلقائياً على Apple Silicon
ollama run llama3.2 # يستخدم GPU افتراضياً
توصيات Apple Silicon:
- M1/M2 (8GB): حتى نماذج 7B (ضغط Q4)
- M1/M2 Pro (16GB): حتى نماذج 13B بارتياح
- M1/M2 Max (32GB): حتى نماذج 34B
- M1/M2 Ultra (64GB+): نماذج 70B ممكنة
بطاقات NVIDIA
# تحقق من GPU NVIDIA و VRAM
nvidia-smi
# المخرج يظهر VRAM المتاحة
# | 0 NVIDIA GeForce RTX 4090 | 00000000:01:00.0 On | 24576MiB |
توصيات NVIDIA:
- RTX 3060 (12GB): نماذج 7B-13B
- RTX 3090/4090 (24GB): حتى نماذج 34B (Q4)
- A100 (40GB/80GB): نماذج 70B كاملة
وضع CPU فقط
التشغيل على CPU ممكن لكن أبطأ بكثير.
# فرض وضع CPU فقط (مفيد للاختبار)
CUDA_VISIBLE_DEVICES="" ollama run llama3.2:1b
# على Mac، عطّل Metal
OLLAMA_NO_METAL=1 ollama run llama3.2:1b
إدارة الذاكرة
import subprocess
import json
def check_ollama_memory():
"""تحقق من استخدام ذاكرة Ollama الحالي."""
result = subprocess.run(
["ollama", "ps"],
capture_output=True,
text=True
)
print(result.stdout)
def estimate_model_memory(params_billions: float, quantization: str = "Q4") -> dict:
"""قدّر متطلبات الذاكرة لنموذج."""
# بايت تقريبي لكل بارامتر حسب الضغط
bytes_per_param = {
"Q4": 0.5, # 4-bit: ~0.5 بايت/بارامتر
"Q5": 0.625, # 5-bit: ~0.625 بايت/بارامتر
"Q8": 1.0, # 8-bit: ~1 بايت/بارامتر
"F16": 2.0, # 16-bit: ~2 بايت/بارامتر
}
bpp = bytes_per_param.get(quantization, 0.5)
model_size_gb = (params_billions * 1e9 * bpp) / (1024**3)
# أضف ~20% للـ KV cache ووقت التشغيل
total_needed = model_size_gb * 1.2
return {
"model_size_gb": round(model_size_gb, 1),
"recommended_vram_gb": round(total_needed, 1),
"quantization": quantization
}
# حسابات مثال
for size in [1, 3, 7, 13, 34, 70]:
req = estimate_model_memory(size)
print(f"نموذج {size}B (Q4): ~{req['recommended_vram_gb']} GB VRAM مطلوب")
فحص نظامك
import platform
import subprocess
import os
def get_system_info():
"""احصل على معلومات النظام ذات الصلة لاستدلال LLM."""
info = {
"platform": platform.system(),
"processor": platform.processor(),
"python_version": platform.python_version(),
}
# تحقق من Apple Silicon
if platform.system() == "Darwin":
try:
result = subprocess.run(
["sysctl", "-n", "hw.memsize"],
capture_output=True, text=True
)
ram_bytes = int(result.stdout.strip())
info["ram_gb"] = round(ram_bytes / (1024**3), 1)
info["apple_silicon"] = platform.processor() == "arm"
except:
pass
# تحقق من NVIDIA GPU
try:
result = subprocess.run(
["nvidia-smi", "--query-gpu=name,memory.total",
"--format=csv,noheader"],
capture_output=True, text=True
)
if result.returncode == 0:
info["nvidia_gpu"] = result.stdout.strip()
except FileNotFoundError:
info["nvidia_gpu"] = None
return info
# تحقق من نظامك
system = get_system_info()
for key, value in system.items():
print(f"{key}: {value}")
ملخص التوصيات
| الميزانية | العتاد | أفضل النماذج |
|---|---|---|
| مبتدئ ($0) | لابتوب حالي (8GB RAM) | llama3.2:1b, phi3:mini |
| ميزانية ($500-1000) | Mac Mini M2 (16GB) | llama3.2:8b, mistral |
| متوسط ($1500-2500) | Mac Studio M2 Max (32GB) | codellama:34b, mixtral |
| عالي ($3000+) | RTX 4090 أو Mac Studio Ultra | llama3.2:70b |
العتاد يحدد سقف نموذجك. في الدرس التالي، سنستكشف كيف يتيح لك الضغط تشغيل نماذج أكبر في ذاكرة أقل. :::