- تشغيل
ollama psبينما يكون النموذج محملًا — فإن عمود PROCESSOR يُخبرك ما إذا كانت أولاما تستخدم وحدة معالجة الرسومات (GPU) أم وحدة المعالجة المركزية (CPU). - وأكثر إصلاح شائع على أنظمة إنفيديا هو تثبيت أو تحديث برنامج التشغيل المضيف بحيث
nvidia-smiيكتشف البطاقة، ثم إعادة تشغيل خدمة أولاما. - إذا كان حجم النموذج أكبر من سعة الذاكرة المخصصة لوحدة معالجة الرسومات (VRAM)، فإن أولاما تقوم بنقل الطبقات الزائدة إلى وحدة المعالجة المركزية (CPU) — استخدم حاسبة الذاكرة VRAM للتحقق مما إذا كان النموذج يناسب سعة الذاكرة المتوفرة قبل تنزيله.
- وتتطلب بطاقات AMD وحزمة Docker ونظام WSL2 خطوات محددة لكل منصة، وهي موضحة أدناه.
عندما لا تستخدم أولاما وحدة معالجة الرسومات (GPU) الخاصة بك، فإن السبب الأكثر شيوعًا هو غياب برنامج التشغيل أو عدم توافقه. قم بتشغيل الأمر ollama ps — فإذا أظهر عمود PROCESSOR نسبة 100% لوحدة المعالجة المركزية (CPU)، فهذا يعني أن أولاما قد عادت بالكامل إلى استخدام وحدة المعالجة المركزية (CPU). ويعتمد الإصلاح المطلوب على نظام المنصة المستخدمة: فأنظمة إنفيديا تحتاج إلى وقت تشغيل CUDA الصحيح، بينما تتطلب أنظمة AMD دعم ROCm، أما حزمة Docker فتحتاج إلى تمرير خاصية دعم وحدة معالجة الرسومات (GPU passthrough) بشكل صريح.
- الخطوة 1: التأكد مما إذا كانت أولاما تستخدم وحدة معالجة الرسومات (GPU)
- الخطوة 2: لأنظمة إنفيديا — برامج التشغيل ووقت تشغيل CUDA
- الخطوة 3: نموذج كبير جدًّا بالنسبة لسعة الذاكرة المخصصة لوحدة معالجة الرسومات (VRAM)
- الخطوة 4: بطاقات AMD وROCm
- الخطوة 5: حزمة Docker — غياب تمرير دعم وحدة معالجة الرسومات (GPU passthrough)
- الخطوة 6: نظام WSL2 على ويندوز
- نظام macOS — تقنية Metal (لرقائق Apple Silicon وبطاقات AMD)
- التحقق من نجاح الإصلاح والأداء المتوقع
- الأسئلة الشائعة
الخطوة 1: التأكد مما إذا كانت أولاما تستخدم وحدة معالجة الرسومات (GPU)
قبل إجراء أي تغيير، تأكَّد أولًا من السلوك الفعلي لأولاما. قم بتحميل نموذج، وفي أثناء تشغيله افتح نافذة طرفية ثانية:
ollama psمثال على المخرجات:
NAME ID SIZE PROCESSOR UNTIL
llama3.2:8b abc123def456 5.0 GB 100% GPU 4 minutes from nowإن عمود PROCESSOR هو المؤشر الحاسم:
| قيمة PROCESSOR | الدلالة |
|---|---|
| 100% GPU | جميع الطبقات تعمل على وحدة معالجة الرسومات (GPU) — وهو السلوك المتوقع والصحيح |
| XX% GPU / YY% CPU | يناسب النموذج جزئيًّا سعة الذاكرة المخصصة لوحدة معالجة الرسومات (VRAM)، بينما تُنفَّذ الطبقات المتبقية على وحدة المعالجة المركزية (CPU) |
| 100% CPU | عودة كاملة إلى وحدة المعالجة المركزية (CPU) — أي أن وحدة معالجة الرسومات (GPU) لم تُستخدَم إطلاقًا |
على أنظمة إنفيديا، يمكنك التحقق المتقاطع باستخدام الأمر nvidia-smi أثناء تشغيل الاستنتاج (inference). ويجب أن ترتفع قيمة العمود Memory-Usage تدريجيًّا أثناء تحميل النموذج. وإذا ظلت ثابتة دون تغيير، فهذا يعني أن وحدة معالجة الرسومات (GPU) غير نشطة تمامًا، بغض النظر عن التقارير التي قد تُظهرها أدوات أخرى.
الخطوة 2: لأنظمة إنفيديا — برامج التشغيل ووقت تشغيل CUDA
يُعد غياب برنامج تشغيل إنفيديا أو قدمه العامل الوحيد الأكثر شيوعًا الذي يؤدي إلى العودة الكاملة إلى وحدة المعالجة المركزية (CPU). وتضمّن أولاما مكتبات CUDA الخاصة بها، لكنها ما زالت تتطلب وجود برنامج تشغيل مضيف يدعم إصدار CUDA 11.3 أو أحدث.
تحقق أولًا من برنامج التشغيل
nvidia-smiإذا لم يتم العثور على هذا الأمر، فهذا يعني أنه لم يُثبَّت أي برنامج تشغيل. وإذا تم تنفيذه بنجاح، فلاحظ رقم إصدار برنامج التشغيل (Driver Version) وإصدار CUDA (CUDA Version) في العنوان. ويشير إصدار CUDA المذكور هناك إلى أقصى إصدار يدعمه برنامج التشغيل — ولا يعني ذلك أن حزمة أدوات CUDA منفصلة مثبتة بالفعل، كما أن أولاما لا تحتاج إلى مثل هذه الحزمة.
| المنصة | أدنى إصدار مطلوب من برنامج التشغيل |
|---|---|
| لينكس | 525.xx (يدعم CUDA 12.0) |
| ويندوز الأصلي (Windows native) | 527.xx (يدعم CUDA 12.0) |
| WSL2 (مع نظام ويندوز كمضيف) | 525.xx على جانب ويندوز — ولا تقم بتثبيت برنامج تشغيل إنفيديا الخاص بلينكس داخل بيئة WSL2 |
ثبِّت أو حدِّث برنامج التشغيل
أوبونتو / ديبيان:
sudo apt install nvidia-driver-550
sudo rebootنظام ويندوز: نزِّل البرنامج من الموقع nvidia.com/Download أو استخدم تطبيق GeForce Experience، ثم أعد التشغيل. ويجب إجراء إعادة تشغيل كاملة — وليس مجرد إعادة تشغيل الخدمة فقط — بعد تثبيت أو تحديث برنامج التشغيل.
بعد إعادة التشغيل، تأكَّد من أن الأمر nvidia-smi يعرض بطاقتك، ثم أعد تشغيل أولاما:
# لينكس (باستخدام systemd)
sudo systemctl restart ollama
# ماك أو إس
launchctl kickstart -k gui/$(id -u)/com.ollama.ollama
# ويندوز — أعد تشغيل تطبيق أولاما في شريط المهام، أو أعد تشغيل النظام بالكاملشغِّل نموذجًا وتحقق من الأمر ollama ps مرة أخرى. وإذا ظل عمود PROCESSOR يُظهر نسبة 100% لوحدة المعالجة المركزية (CPU)، فانتقل إلى الخطوات التالية.
الخطوة 3: نموذج كبير جدًّا بالنسبة لسعة الذاكرة المخصصة لوحدة معالجة الرسومات (VRAM)
عندما يتجاوز وزن النموذج السعة المتاحة للذاكرة المخصصة لوحدة معالجة الرسومات (VRAM)، فإن أولاما لا ترفض التشغيل — بل تقوم بتقسيم عملية الاستنتاج (inference). فتُحمَّل أكبر عدد ممكن من طبقات المحول (transformer layers) على وحدة معالجة الرسومات (GPU)، بينما تُنفَّذ الطبقات المتبقية على وحدة المعالجة المركزية (CPU). ويظهر هذا التقسيم كنسبة مئوية مقسَّمة في ollama ps وهذا سلوك مقصود وليس عيبًا برمجيًّا.
ويحتاج نموذج ذو 70 مليار معلَّمة (70B parameter model) عند تكميم Q4_K_M عادةً إلى حوالي 40 جيجابايت من سعة الذاكرة المخصصة لوحدة معالجة الرسومات (VRAM)، وهي سعة تفوق أي بطاقة رسوميات استهلاكية واحدة. ولذلك، قبل تنزيل نموذج كبير، تحقَّق مما إذا كان يناسب سعة ذاكرتك باستخدام حاسبة الذاكرة VRAM. وللاطلاع على الأرقام الخاصة بكل نموذج من أكثر نماذج اللغات الكبيرة (LLMs) شيوعًا، راجع متطلبات ذاكرة VRAM لكل نموذج لغوي رئيسي.
إذا لم يتناسب النموذج مع سعة ذاكرتك المخصصة لوحدة معالجة الرسومات (VRAM)، فلديك الخيارات التالية:
- استخدم تكميمًا أقل (مثل Q2_K أو Q3_K_S) — وهذا يقلل من استهلاك سعة الذاكرة المخصصة لوحدة معالجة الرسومات (VRAM) مع خسارة طفيفة في الجودة.
- انتقل إلى نسخة أصغر من النموذج (مثل 8B بدلًا من 70B). وتتناول الصفحة أفضل النماذج المحلية لـ Ollama أي النماذج التي تعمل بكفاءة على الأجهزة الاستهلاكية.
- اقبل عملية التفريغ الجزئي (partial offload) — وسيكون الأداء بين سرعة التشغيل الكامل على وحدة معالجة الرسومات (GPU) وسرعة التشغيل الكامل على وحدة المعالجة المركزية (CPU).
- حدِّث وحدة معالجة الرسومات (GPU) الخاصة بك. وتقدِّم الدليل أفضل وحدات معالجة الرسوميات لتشغيل نماذج اللغة الكبيرة محليًّا مقارنةً بين الخيارات الحالية من حيث سعة الذاكرة المخصصة لوحدة معالجة الرسومات (VRAM) والسعر.
الخطوة 4: بطاقات AMD وROCm
يدعم برنامج Ollama معالجات AMD عبر منصة الحوسبة الرسومية ROCm الخاصة بشركة AMD. ويدعم Ollama رسميًّا بطاقات RDNA 2 (سلسلة RX 6000) وRDNA 3 (سلسلة RX 7000) على نظام لينكس فقط. أما دعم أنظمة Windows لمعالجات AMD فهو محدود — يُرجى الاطلاع على ملاحظات الإصدار الخاصة بالإصدار المثبت من Ollama قبل توقع عمله على نظام Windows.
تحقق من رؤية البطاقة بواسطة ROCm
rocm-smiإذا rocm-smi لم يتم العثور على الأمر، فهذا يعني أن حزمة ROCm غير مُثبَّتة. يُرجى زيارة الموقع amd.com/en/developer/rocm للحصول على تعليمات التثبيت الحالية لتوزيعة النظام الخاص بك، إذ تتغير أسماء الحزم ومتطلبات الإصدارات بين إصدارات ROCm المختلفة.
كانت البطاقة غائبة عن مخرجات الأمر rocm-smi بعد التثبيت:
sudo usermod -aG render,video $USER
# سجّل الخروج ثم الدخول مجددًا لتفعيل تغيير المجموعةلتحديد بطاقة رسوميات معيّنة عند وجود عدة بطاقات:
HIP_VISIBLE_DEVICES=0 ollama serveالخطوة 5: حزمة Docker — غياب تمرير دعم وحدة معالجة الرسومات (GPU passthrough)
لا يمكن للحاويات المُنفَّذة عبر Docker الوصول إلى وحدة معالجة الرسومات ما لم تُمرَّر إليها صراحةً. وهذا السبب الأكثر شيوعًا لاستخدام Ollama وحدة المعالجة المركزية بدلًا من وحدة معالجة الرسومات في البيئات القائمة على الحاويات — فالبطاقة الرسومية على الجهاز المضيف تعمل بشكلٍ جيِّد، لكن الحاوية لا تستطيع رؤيتها.
وحدة معالجة الرسومات NVIDIA في حاويات Docker
ثبِّت أداة NVIDIA Container Toolkit على الجهاز المضيف:
sudo apt install nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart dockerثم مرِّر وحدة معالجة الرسومات عند بدء تشغيل الحاوية:
docker run -d --gpus all
-v ollama:/root/.ollama
-p 11434:11434
ollama/ollamaبدون استخدام الخيار --gpus all (أو --gpus device=0 (لتحديد بطاقة معيّنة)، لن تتمكن الحاوية من الوصول إلى أي وحدة معالجة رسومات، بغض النظر عن إعدادات الجهاز المضيف.
وحدة معالجة الرسومات AMD في حاويات Docker
docker run -d
--device /dev/kfd --device /dev/dri
-v ollama:/root/.ollama
-p 11434:11434
ollama/ollama:rocmالـ :rocm علامة الصورة (image tag) مطلوبة. فصورة ollama/ollama الافتراضية لا تتضمَّن دعم ROCm، وبالتالي ستتراجع تلقائيًّا إلى استخدام وحدة المعالجة المركزية على الأجهزة المزودة بمعالجات AMD.
الخطوة 6: نظام WSL2 على ويندوز
يمكن لنظام WSL2 مشاركة وحدة معالجة الرسومات NVIDIA مع نظام Windows المضيف، لكن هناك قاعدة واحدة لا تقبل الجدل: يجب تثبيت برنامج تشغيل NVIDIA على نظام ويندوزWindows، وليس داخل بيئة WSL2. فتثبيت برنامج تشغيل Linux الخاص بـ NVIDIA داخل بيئة WSL2 يؤدي إلى تعطيل عملية تمرير وحدة معالجة الرسومات بالكامل.
- ثبِّت أو حدِّث برنامج تشغيل NVIDIA على نظام Windows، ثم أعد تشغيل النظام.
- يتطلب نظام WSL2 نواة إصدار 5.10.43 أو أحدث. يمكنك التحقق من ذلك عبر الأمر
uname -rداخل بيئة WSL2؛ وحدِّث النواة باستخدام الأمرwsl --updateفي مُحرِّر أوامر Windows. - يمكن تثبيت حزمة أدوات CUDA داخل بيئة WSL2 إذا كانت سيرتك العملية تتطلب ذلك — وهذا أمر منفصل تمامًا عن برنامج التشغيل ولا يتسبب بأي تعارض.
تحقَّق من ظهور وحدة معالجة الرسومات من داخل بيئة WSL2:
nvidia-smiإذا ظهرت بطاقتك الرسومية في المخرجات، فسيستخدم Ollama هذه البطاقة تلقائيًّا عند التشغيل داخل WSL2. وإذا فشل الأمر، فحدِّث برنامج التشغيل على جانب Windows وأعد تشغيل الأمر. wsl --update.
نظام macOS — تقنية Metal (لرقائق Apple Silicon وبطاقات AMD)
على نظام macOS، يستخدم Ollama تقنية Apple Metal لتسريع العمليات عبر وحدة معالجة الرسومات — فلا حاجة لتثبيت برامج تشغيل، ولا حاجة لتعيين متغيرات بيئية. فإذا كنت تستخدم جهاز Mac مزوَّدًا بمعالج Apple Silicon ويعمل Ollama ببطء، فتأكد من أنك قمت بتثبيت النسخة الأصلية المصممة لمعمارية ARM من الموقع ollama.com، وليس النسخة المصممة لمعمارية x86 التي تعمل عبر Rosetta. وبما أن أجهزة Mac المزودة بمعالجات Apple Silicon تستخدم ذاكرة موحَّدة، فإن كامل سعة الذاكرة العشوائية (RAM) المتاحة للنظام تكون متاحة أيضًا للنماذج — لذا ادخل إجمالي سعة الذاكرة العشوائية لديك كحدٍّ أقصى لسعة VRAM عند استخدام خيار حاسبة الذاكرة VRAM.
التحقق من نجاح الإصلاح والأداء المتوقع
بعد إجراء التغييرات، شغِّل نموذجًا وراقب مؤشرين في الوقت نفسه:
# الطرفية 1 — ابدأ توليد النص
ollama run llama3.2:8b "ما هي عاصمة فرنسا؟"
# الطرفية 2 — أثناء التوليد
ollama ps
# بالنسبة لوحدات معالجة الرسومات NVIDIA: راقب أيضًا استهلاك وحدة معالجة الرسومات كل ثانية
nvidia-smi dmon -s uأداء مرجعي (تقريبي — ويختلف حسب طريقة التكمين، وإصدار برنامج التشغيل، وعرض نطاق ناقل PCIe):
| الأجهزة | النموذج | ~رمز/ثانية |
|---|---|---|
| RTX 4090 (٢٤ جيجابايت) | Llama 3.1 8B Q4 | 120–160 |
| RTX 3080 (10 جيجابايت) | Llama 3.1 8B Q4 | 60–80 |
| Apple M3 Pro (ذاكرة موحَّدة) | Llama 3.1 8B Q4 | 40–60 |
| وحدة المعالجة المركزية فقط (Ryzen 9 7950X) | Llama 3.1 8B Q4 | 5–15 |
تحقيق عدد رموز في خانة الآحاد لكل ثانية رغم توفر وحدة معالجة رسومات قوية هو أوضح مؤشر على أن الحل لم يُطبَّق بعد.
الأسئلة الشائعة
لماذا يُظهر الأمر ollama ps توزيعًا بين وحدة معالجة الرسومات والوحدة المركزية بدلًا من 100% على وحدة معالجة الرسومات؟
حجم النموذج أكبر من سعة الذاكرة المخصصة لوحدة معالجة الرسومات (VRAM) المتاحة لديك. فيقوم Ollama بتحميل أكبر عدد ممكن من الطبقات على وحدة معالجة الرسومات، بينما يُنفَّذ الجزء المتبقي على وحدة المعالجة المركزية. والنتيجة أسرع من التشغيل الكامل على وحدة المعالجة المركزية، لكنها أبطأ من التشغيل الكامل على وحدة معالجة الرسومات. لذا يُوصى بتحميل نموذج أصغر أو التحوُّل إلى مستوى تكمين أقل لنقل المزيد من الطبقات إلى وحدة معالجة الرسومات.
كان Ollama يستخدم وحدة معالجة الرسومات من قبل ثم توقَّف فجأة — ما الذي تغيَّر؟
قد يؤدي تحديث برنامج التشغيل أو تحديث نظام التشغيل أو إصدار جديد من Ollama إلى تعطيل الكشف التلقائي عن وحدة معالجة الرسومات. تحقَّق أولًا من أن الأمر nvidia-smi ما زال يُظهر البطاقة، ثم أعد تشغيل الخدمة بالكامل. وإذا كنت قد حدَّثت مؤخرًا برنامج تشغيل NVIDIA، فقد يتطلَّب الأمر أحيانًا إعادة تشغيل النظام بالكامل بدلًا من مجرد إعادة تشغيل الخدمة.
هل يمكن لبرنامج Ollama استخدام عدة وحدات معالجة رسومات في وقت واحد؟
نعم. يقوم Ollama بتوزيع طبقات النموذج تلقائيًّا عبر جميع وحدات معالجة الرسومات المرئية عند وجود أكثر من وحدة. ولتحديد وحدات معالجة الرسومات التي يسمح لـ Ollama باستخدامها، عيِّن المتغير CUDA_VISIBLE_DEVICES (لأجهزة NVIDIA) أو HIP_VISIBLE_DEVICES (AMD) قبل البدء ollama serve.
هل يعمل Ollama مع بطاقات GeForce الاستهلاكية، أم أنني بحاجة إلى وحدة معالجة رسوميات مخصصة لمراكز البيانات؟
تُدعم بطاقات GeForce GTX 10xx والإصدارات الأحدث دعمًا كاملاً — ولا يلزم وجود وحدة معالجة رسوميات مخصصة لمراكز البيانات. أما الحد العملي لمعظم المستخدمين فهو سعة الذاكرة المخصصة للرسوميات (VRAM): إذ يمكن لبطاقة سعتها ٨ جيجابايت تشغيل نماذج تتراوح معاييرها بين ٧ و٨ مليارات معلَّمة بسلاسل كمية من نوع Q4 بسلاسة. ويُوصى باستخدام حاسبة الذاكرة VRAM للتحقق مما إذا كان النموذج المحدد يناسب موارد جهازك قبل تنزيله.
لماذا يستخدم Ollama وحدة المعالجة المركزية (CPU) رغم امتلاك بطاقتي الرسومية سعة VRAM كافية؟
قد تكون هناك عملية أخرى تشغل الذاكرة الرسومية (VRAM) — تحقق من nvidia-smi للعثور على عمليات أخرى تستهلك هذه الموارد، مثل متصفح ويب مُفعَّل به تسريع الأجهزة أو نموذج آخر قيد التشغيل بالفعل. كما قد يكون النموذج قد تم تحميله قبل أن تكون وحدة التحكم في البطاقة الرسومية (GPU driver) جاهزة للعمل. ولإيقاف النموذج المحمل حاليًّا، استخدم الأمر ollama stop <name>، ثم حرِّر الذاكرة الرسومية (VRAM) في التطبيقات الأخرى، وأعد تحميل النموذج.
أين يمكنني التعرُّف على المزيد حول إعداد Ollama واختيار النماذج المناسبة؟
الـ الدليل الكامل لـ Ollama يغطي هذا الدليل المتغيرات البيئية وإدارة النماذج واستخدام واجهة برمجة التطبيقات (API) بشكل شامل. أما لاختيار النموذج الأنسب لجهازك المحدد، فراجع أفضل النماذج المحلية لـ Ollama.

