100% GPU — الـGPU سالِم، أنهِ القراءة.
40%/60% CPU/GPU split — لم يتسع في الـVRAM، استخدم تكميماً أصغر.
100% CPU — لا GPU قابل للاستخدام وُجد : إدرايفر عجوز، مجموعة render/video غائبة (AMD)، أو OLLAMA_LLM_LIBRARY مثبَّت، أو حاوية دون أعلام GPU.
# in one terminal: load a model
ollama run llama3.2 "hello"
# in another: see where it runs
ollama ps
NAME ID SIZE PROCESSOR UNTIL
llama3.2:latest a80c4de17cd9 3.3 GB 100% GPU 4 minutes from now
ثم اقرأ سجل الخادم الذي يسمّي العتاد الذي وجدته Ollama فعلاً عند البادر:
journalctl -u ollama --no-pager | grep -i "inference compute"
على جهاز NVIDIA في كفاق تريد سطراً من هذا القبيل:
inference compute id=GPU-xxxx library=CUDA compute=8.9 driver=12.4 name=NVIDIA GeForce RTX 4070
لا سطر في شيء، أو سطر ينتهي بقعدة التراجع ذات CPU فقط — وقد وقفت على مشكلتك. الكشف يقع مرة واحدة عند البادر، لا في كل طلب — بعد أي إصلاح، sudo systemctl restart ollama قبل إعادة الفحص.
اعمل بواصل الأسباب بالنظام — تسع من كل عشر، سبق لسطر السجل أن قال في أي صف أنت:
| العرض | السبب المحتمل | الإصلاح |
|---|---|---|
100% CPU، وبطاقة NVIDIA حاضرة | إدرايفر عجوز عن الـCUDA المرفق | حدّث الإدرايفر، ثم أعد التشغيل، ثم أعد فتح الخدمة |
100% CPU،AMD على Linux | مجموعة render/video غائبة | usermod -aG render,video، إعادة دخول |
100% CPU، بطاقة AMD غير مدعومة | ROCm يرفض الهدف gfx | HSA_OVERRIDE_GFX_VERSION=10.3.0 |
40%/60% CPU/GPU split | النموذج + السياق يخطّ في الـVRAM الواسعة فتتجاوزانها | تكميم أصغر أو num_ctx |
| الـGPU كان يعمل بالأمس، والـCPU اليوم | مثبَّت OLLAMA_LLM_LIBRARY أو إدرايفر متخلف | جد متغير البيئة واحذفه؛ حدّث الإدرايفر |
| GPU أصلي، وCPU داخل Docker | حاوية أُقيمت دون أعلام GPU | أقمها من جديد بـ--gpus=all (أو أجهزة AMD) |
الجاني المألوف الإدرايفر، لا الـCUDA. Ollama تحمل ضمناً مكتبات وقت تشغيل CUDA بنفسها، فلا تحتاج حزمة CUDA الكاملة — لكن المرفق المدمج يطلب إدرايفر حديثاً بما يكفي ليخاطبه. أن يعمل nvidia-smi ليس برهاناً : إنه يبرهن أن إدرايفر ما موجود، لا أنه حديث بما يلزم.
nvidia-smi --query-gpu=driver_version --format=csv,noheader
# Debian/Ubuntu family
sudo apt install nvidia-driver-570
# Arch family
sudo pacman -S nvidia
# then re-detect:
sudo systemctl restart ollama
verify: journalctl -u ollama --no-pager | grep -i "inference compute" → library=CUDA
أوزان النموذج زائد كاش الـKV يجب أن يتسعا في الـVRAM. النموذج نفسه والسياق أوسع — الكاش يفوق البطاقة ويبلد البقية على الـCPU:
ثلاث طرق لرد الفيض، الأرخص أولاً: تكميم أصغر (Q8 → Q4 ينصف الأوزان بكلفة جودة متواضعة)؛ سياق أقصر (num_ctx يهيمن على حجم الكاش — 32K على بطاقة 8 GB يعني أن أكثر الطبقات تقبع على الـCPU)؛ وطبقات GPU أقل — خيار num_gpu يُسدد عدد التحميلات، ووضعه تحت عدد الطبقات يبرّم الـsplit. إن وضعه أحدٌ في Modelfile أو نداء API، فبطلتْه. وفخ آخر: 100% GPU لكنه ما يزال بطيئاً — ربما يدون العناصر عبر ذاكرة النظام؛ قِس ollama ps SIZE على الـVRAM الحقيقية عندك.
1. ROCm داخل الثنائي — سكربت التثبيت الرسمي يضمه. أكّد ما جرى كشفه في الخادم: journalctl -u ollama --no-pager | grep -iE "rocm|inference compute".
2. الانتساب إلى المجموعة — النظام وقت التشغيل يطلب: /dev/kfd + /dev/dri، أي المجموعات render/video :
sudo usermod -aG render,video $USER
# log out and back in, then:
sudo systemctl restart ollama
المجموعة الغائبة هي القضية الأشهر في «Ollama لا تستخدم GPU على Ubuntu» في كل منتدَى — الـdriver لم يكن المشكلة إطلاقاً.
3. بطاقة GPU مدعومة — أو حل بديل. بطاقات RDNA2 الاستهلاكية من غير الدعم (gfx1031, gfx1032) تفشل في الكشف حتى مع مجموعة ROCm تعمل. الحل البديل القياسي هو التمويه كأنك بطاقة مدعومة: sudo systemctl edit ollama، ثم:
[Service]
Environment="HSA_OVERRIDE_GFX_VERSION=10.3.0"
ثم أعد التشغيل. غير مدعوم لكنه مستخدم على نطاق واسع — إن سار سيئاً، أزِله. على Windows دعم AMD أضيق؛ تحقق من قائمة الـGPU المدعومة لدى Ollama قبل أن تفترض أن التثبيت معطّل.
verify: journalctl -u ollama --no-pager | grep -iE "rocm|inference compute" → هدف الـgfx عندك مرصود
التحديثات تغيّر واحداً من ثلاثة أمور، بترتيب الاحتمال:
OLLAMA_LLM_LIBRARY يفرض عدّاء (runner) واحداً (cuda_v11, rocm، بل cpu) ويعتمّ على الكشف الآلي بصمت. إنه مفتاح تصحّح يبقى في ملفات الـprofile والخدمة طويلاً بعد نسيان السبب. ابحث عنه: systemctl show ollama --property=Environment | grep -i llm_library وenv | grep OLLAMA — ثم أزِله.--gpus=all (أو أعلام أجهزة AMD).نهاية الأسباب الخمسة · لم يُجلب أي شيء · كل شيء محلي