Skip to content

قد لا يعمل Ollama في بعض الأحيان كما هو متوقع. أحد أفضل الطرق لمعرفة ما حدث هو الاطلاع على السجلات. يمكنك العثور على السجلات على نظام Mac عن طريق تشغيل الأمر التالي:

shell
cat ~/.ollama/logs/server.log

على أنظمة Linux التي تستخدم systemd، يمكن العثور على السجلات باستخدام الأمر التالي:

shell
journalctl -u ollama --no-pager --follow --pager-end

عند تشغيل Ollama داخل حاوية (container)، تنتقل السجلات إلى مخرجي stdout/stderr داخل الحاوية:

shell
docker logs <container-name>

(استخدم الأمر docker ps للعثور على اسم الحاوية)

إذا قمت بتشغيل الأمر ollama serve يدويًا في طرفية (terminal)، فستظهر السجلات على نفس الطرفية.

عند تشغيل Ollama على نظام Windows، توجد عدة مواقع مختلفة للسجلات. يمكنك عرضها في نافذة المستكشف (explorer) بالضغط على <cmd>+R ثم كتابة ما يلي:

  • explorer %LOCALAPPDATA%\Ollama لعرض السجلات. ستجد أحدث سجلات الخادم في ملف server.log، بينما ستوجد السجلات القديمة في ملفات باسم server-#.log
  • explorer %LOCALAPPDATA%\Programs\Ollama لاستعراض الملفات التنفيذية (binaries) (يضيف المثبت هذا المسار إلى متغير PATH الخاص بالمستخدم)
  • explorer %HOMEPATH%\.ollama لاستعراض موقع تخزين النماذج والملفات التكوينية
  • explorer %TEMP% حيث يتم تخزين الملفات التنفيذية المؤقتة داخل دليل واحد أو أكثر باسم ollama*

لتفعيل تسجيل الأخطاء الإضافي (debug logging) للمساعدة في استكشاف الأخطاء وإصلاحها، قم أولاً بإغلاق التطبيق قيد التشغيل من قائمة علبة النظام (tray menu)، ثم في طرفية PowerShell

powershell
$env:OLLAMA_DEBUG="1"
& "ollama app.exe"

انضم إلى خادم Discord للحصول على مساعدة في تفسير السجلات.

مكتبات نماذج اللغة الكبيرة (LLM)

يتضمن Ollama عدة مكتبات LLM تم تجميعها لوحدات معالجة الرسوميات (GPUs) المختلفة وميزات المتجهات لوحدات المعالجة المركزية (CPU). يحاول Ollama اختيار أفضل مكتبة بناءً على قدرات نظامك. إذا واجهت مشاكل في هذا الكشف التلقائي، أو واجهت مشاكل أخرى (مثل تعطل GPU)، يمكنك تجاوز ذلك عن طريق فرض استخدام مكتبة LLM محددة. ستكون مكتبة cpu_avx2 هي الأفضل أداءً، تليها cpu_avx، وأبطأها ولكن الأكثر توافقًا هي مكتبة cpu. سيعمل محاكي Rosetta تحت نظام MacOS مع مكتبة cpu.

في سجل الخادم، ستظهر رسالة تشبه ما يلي (تختلف من إصدار لآخر):

Dynamic LLM libraries [rocm_v6 cpu cpu_avx cpu_avx2 cuda_v11 rocm_v5]

تجاوز تجريبي لمكتبات LLM

يمكنك تعيين متغير البيئة OLLAMA_LLM_LIBRARY إلى أي من مكتبات LLM المتاحة لتجاوز الكشف التلقائي. على سبيل المثال، إذا كنت تمتلك بطاقة CUDA ولكنك تريد فرض استخدام مكتبة LLM الخاصة بالـ CPU مع دعم متجهات AVX2، استخدم الأمر التالي:

shell
OLLAMA_LLM_LIBRARY="cpu_avx2" ollama serve

يمكنك معرفة الميزات التي يدعمها الـ CPU الخاص بك باستخدام الأمر التالي.

shell
cat /proc/cpuinfo| grep flags | head -1

تثبيت إصدارات قديمة أو إصدارات ما قبل الإصدار على Linux

إذا واجهت مشاكل على نظام Linux وترغب في تثبيت إصدار أقدم، أو ترغب في تجربة إصدار ما قبل الإصدار قبل إطلاقه رسميًا، يمكنك إخبار نص التثبيت (install script) بالإصدار الذي تريد تثبيته.

shell
curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION=0.5.7 sh

مشكلة عدم تنفيذ المجلد المؤقت (tmp noexec) على Linux

إذا كان نظامك مهيأً باستخدام علامة "noexec" في المكان الذي يخزن فيه Ollama ملفاته التنفيذية المؤقتة، يمكنك تحديد موقع بديل عن طريق تعيين متغير البيئة OLLAMA_TMPDIR إلى موقع يمكن للمستخدم الذي يعمل Ollama باسمه الكتابة فيه. على سبيل المثال: OLLAMA_TMPDIR=/usr/share/ollama/

تشغيل Ollama على حاويات Docker على Linux

إذا كان Ollama يعمل في البداية على GPU داخل حاوية Docker، ولكنه يتحول لاحقًا إلى العمل على CPU بعد فترة من الوقت مع ظهور أخطاء في سجل الخادم تفيد بفشل اكتشاف GPU، يمكن حل هذه المشكلة عن طريق تعطيل إدارة مجموعات cgroup الخاصة بـ systemd في Docker. قم بتعديل الملف /etc/docker/daemon.json على المضيف (host) وأضف السطر "exec-opts": ["native.cgroupdriver=cgroupfs"] إلى تكوين Docker.

اكتشاف بطاقات NVIDIA GPU

عند بدء تشغيل Ollama، يقوم بجرد وحدات معالجة الرسوميات (GPUs) الموجودة في النظام لتحديد مدى التوافق وكمية ذاكرة الفيديو (VRAM) المتاحة. في بعض الأحيان يفشل هذا الاكتشاف في العثور على GPUs الخاصة بك. بشكل عام، يمنحك تشغيل أحدث برنامج تشغيل (driver) أفضل النتائج.

استكشاف أخطاء NVIDIA على Linux

إذا كنت تستخدم حاوية لتشغيل Ollama، فتأكد من أنك قمت بإعداد بيئة تشغيل الحاوية (container runtime) أولاً كما هو موضح في دليل docker

قد يواجه Ollama في بعض الأحيان صعوبات في تهيئة GPU. عند فحص سجلات الخادم، قد يظهر هذا على شكل أكواد أخطاء مختلفة، مثل "3" (غير مهيأ)، "46" (الجهاز غير متاح)، "100" (لا يوجد جهاز)، "999" (غير معروف)، أو غيرها. قد تساعدك تقنيات استكشاف الأخطاء وإصلاحها التالية في حل المشكلة:

  • إذا كنت تستخدم حاوية، هل تعمل بيئة تشغيل الحاوية بشكل صحيح؟ جرب الأمر docker run --gpus all ubuntu nvidia-smi - إذا لم يعمل هذا الأمر، لن يتمكن Ollama من رؤية بطاقة NVIDIA GPU الخاصة بك.
  • هل تم تحميل برنامج التشغيل uvm؟ جرب الأمر sudo nvidia-modprobe -u
  • جرب إعادة تحميل برنامج التشغيل nvidia_uvm - نفذ الأمر sudo rmmod nvidia_uvm ثم sudo modprobe nvidia_uvm
  • جرب إعادة تشغيل النظام
  • تأكد من أنك تستخدم أحدث برامج تشغيل nvidia

إذا لم تحل أي من هذه الخطوات المشكلة، قم بجمع معلومات إضافية وقدم تقرير مشكلة (issue):

  • عيّن المتغير CUDA_ERROR_LEVEL=50 ثم حاول مرة أخرى للحصول على سجلات تشخيصية إضافية
  • افحص سجلات dmesg للبحث عن أي أخطاء باستخدام الأمرين sudo dmesg | grep -i nvrm و sudo dmesg | grep -i nvidia

اكتشاف بطاقات AMD GPU

على نظام Linux، يتطلب الوصول إلى بطاقات AMD GPU عادةً عضوية في مجموعة video و/أو render للوصول إلى الجهاز /dev/kfd. إذا لم يتم إعداد الأذونات بشكل صحيح، سيكتشف Ollama ذلك ويبلغ عن خطأ في سجل الخادم.

عند التشغيل داخل حاوية، قد لا يتمكن عملية Ollama من الوصول إلى GPU في بعض توزيعات Linux وبيئات تشغيل الحاويات. استخدم الأمر ls -lnd /dev/kfd /dev/dri /dev/dri/* على نظام المضيف (host) لتحديد معرّفات المجموعات الرقمية على نظامك، ومرر وسائط إضافية --group-add ... إلى الحاوية حتى تتمكن من الوصول إلى الأجهزة المطلوبة. على سبيل المثال، في المخرجات التالية crw-rw---- 1 0 44 226, 0 Sep 16 16:55 /dev/dri/card0 يمثل العمود رقم 44 معرّف المجموعة.

إذا كنت تواجه مشاكل في جعل Ollama يكتشف أو يستخدم GPU بشكل صحيح للاستدلال (inference)، قد تساعدك الخطوات التالية في عزل سبب الفشل.

  • AMD_LOG_LEVEL=3 لتفعيل مستويات سجل المعلومات في مكتبات AMD HIP/ROCm. يمكن أن يساعد هذا في عرض أكواد أخطاء أكثر تفصيلاً تسهل استكشاف الأخطاء وإصلاحها.
  • OLLAMA_DEBUG=1 أثناء اكتشاف GPU، سيتم الإبلاغ عن معلومات إضافية.
  • افحص سجلات dmesg للبحث عن أي أخطاء من برامج تشغيل amdgpu أو kfd باستخدام الأمرين sudo dmesg | grep -i amdgpu و sudo dmesg | grep -i kfd

عدم تطابق إصدار برامج تشغيل AMD

إذا لم يتم اكتشاف بطاقة AMD GPU الخاصة بك على نظام Linux وظهرت في سجلات الخادم رسائل مثل:

msg="failure during GPU discovery" ... error="failed to finish discovery before timeout"
msg="bootstrap discovery took" duration=30s ...

يعني هذا عادةً أن برنامج تشغيل AMD GPU الخاص بالنظام قديم جدًا. يتضمن Ollama مكتبات ROCm 7 لـ Linux التي تتطلب برنامج تشغيل نواة متوافق مع ROCm 7. إذا كان النظام يعمل ببرنامج تشغيل أقدم (ROCm 6.x أو إصدار أقدم)، ستتوقف تهيئة GPU أثناء اكتشاف الأجهزة وتنتهي بإنهاء المهلة، مما يتسبب في عودة Ollama إلى استخدام CPU.

لحل هذه المشكلة، قم بالترقية إلى برنامج تشغيل ROCm v7 باستخدام أداة amdgpu-install من توثيق ROCm من AMD. بعد الترقية، أعد تشغيل النظام ثم أعد تشغيل Ollama.

استخدام بطاقات AMD GPU المتعددة

إذا حصلت على ردود غير مفهومة عند تحميل النماذج عبر بطاقات AMD GPU المتعددة على نظام Linux، راجع الدليل التالي.

أخطاء طرفية Windows

من المعروف أن الإصدارات القديمة من Windows 10 (مثل 21H1) تحتوي على خطأ حيث لا يعرض برنامج الطرفية القياسي أحرف التحكم بشكل صحيح. قد ينتج عن هذا ظهور سلسلة طويلة من السلاسل مثل ←[?25h←[?25l، وأحيانًا يظهر خطأ The parameter is incorrect. لحل هذه المشكلة، يرجى التحديث إلى Windows 10 22H1 أو إصدار أحدث.