اختبار: كيف يستخدم Ollama أداء وحدات المعالجة المركزية ووحدات المعالجة الفعالة من إنتل

أولاما على معالج إنتل: الكفاءة مقابل أداء النواة

Page content

لدي نظرية أريد اختبارها - هل استخدام جميع النوى على معالج Intel CPU سيزيد سرعة نماذج LLM؟ (اختبار: كيف يستخدم Ollama أداء معالج Intel ووحدات النوى الفعالة) يزعجني أن نموذج gemma3 27 بت (gemma3:27b، 17GB على ollama) لا يناسب 16GB VRAM لبطاقتي الرسومية، ويتم تشغيله جزئيًا على المعالج.

لأكون دقيقًا

ollama ps

يظهر:

gemma3:27b    a418f5838eaf    22 GB    29%/71% CPU/GPU

رغم أن المظهر ليس سيئًا، إلا أن الطبقات مُوزعة. الحمل الفعلي هو: GPU:28%، CPU: 560%. نعم، تُستخدم عدة نوى.

الصورة الشخصية لـ Llama ووحدات المعالجة المركزية الطائرة

وهنا الفكرة:

ماذا لو دفعنا ollama لاستخدام جميع نوى Intel CPU - كل من الأداء والفعالية؟

معلمة OLLAMA_NUM_THREADS

لدي Ollama معلمة تكوين متغير البيئة OLLAMA_NUM_THREADS التي من المفترض أن تخبر Ollama عدد الخيوط والنوى التي يجب استخدامها.

جربت تقييدها أولاً إلى 3 نوى:

sudo xed /etc/systemd/system/ollama.service

# ضع OLLAMA_NUM_THREADS=3 كـ
# Environment="OLLAMA_NUM_THREADS=3"

sudo systemctl daemon-reload
sudo systemctl restart ollama

ولم يعمل.

ظل Ollama يستخدم ~560% من المعالج عند تشغيل نموذج Gemma 3 27B LLM.

الحظ السيئ.

خيار num_thread للاتصال

لنحاول الاتصال

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "لماذا السماء زرقاء؟",  
"stream": false,
"options":{
  "num_thread": 8
}
}'  | jq .

النتيجة:

  • استخدام المعالج: 585%
  • استخدام GPU: 25%
  • قوة GPU: 67 واط
  • تقييم الأداء: 6.5 رمز/ثانية

الآن دعنا نجرب تضاعف النوى. نخبر Ollama باستخدام مزيج من نوى الأداء ونوى الفعالية:

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "لماذا السماء زرقاء؟",  
"stream": false,
"options":{
  "num_thread": 16
}
}'  | jq .

النتيجة:

  • استخدام المعالج: 1030%
  • استخدام GPU: 26%
  • قوة GPU: 70 واط
  • تقييم الأداء: 7.4 رمز/ثانية

جيد! ازداد الأداء بنسبة ~14%!

الآن دعنا نذهب إلى أقصى حد! نستخدم جميع النوى الفيزيائية!

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "لماذا السماء زرقاء؟",  
"stream": false,
"options":{
  "num_thread": 20
}
}'  | jq .

النتيجة:

  • استخدام المعالج: 1250%
  • استخدام GPU: 10-26% (غير مستقر)
  • قوة GPU: 67 واط
  • تقييم الأداء: 6.9 رمز/ثانية

حسنًا. الآن نرى انخفاضًا في الأداء. لنحاول استخدام 8 أداء + 4 فعالة:

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "لماذا السماء زرقاء؟",  
"stream": false,
"options":{
  "num_thread": 12
}
}'  | jq .

النتيجة:

  • استخدام المعالج: 801%
  • استخدام GPU: 27% (غير مستقر)
  • قوة GPU: 70 واط
  • تقييم الأداء: 7.1 رمز/ثانية

هنا وهناك.

للاستعارة - تشغيل Gemma 3 14b، وهو أقل ذكاءً مقارنة بـ Gemma 27b، لكنه يناسب VRAM لبطاقتي الرسومية بشكل أفضل.

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:12b-it-qat",  
"prompt": "لماذا السماء زرقاء؟",  
"stream": false
}'  | jq .

النتيجة:

  • استخدام المعالج: 106%
  • استخدام GPU: 94% (غير مستقر)
  • قوة GPU: 225 واط
  • تقييم الأداء: 61.1 رمز/ثانية

هذا ما نسميه أداءً. حتى لو كان Gemma 3 27b أذكى من 14b، إلا أنه ليس 10 مرات!

الخلاصة

إذا لم يناسب نموذج LLM VRAM لبطاقة GPU، وتم تحميل بعض الطبقات بواسطة Ollama إلى المعالج

  • يمكننا زيادة أداء LLM بنسبة 10-14% من خلال توفير معلمة num_thread
  • انخفاض الأداء بسبب التحميل أعلى بكثير ولا يتم تعويضه بهذه الزيادة.
  • يجب أن يكون لديك GPU أقوى مع VRAM أكثر. RTX 3090 أفضل من RTX 5080، على الرغم من أنني لا أملك أي من هذه

روابط مفيدة