انتقل إلى المحتوى الرئيسي

حل المشكلات الشائعة

دليل شامل لتشخيص وحل المشكلات الشائعة التي قد تواجهها عند تشغيل النماذج اللغوية.

مشكلات الذاكرة​

الذاكرة هي أكثر تحدٍ شائع عند تشغيل النماذج اللغوية:

  • خطأ نفاد الذاكرة (CUDA Out of Memory):

    • الأعراض: رسائل خطأ مثل "CUDA out of memory" أو "RuntimeError: CUDA error: out of memory"
    • الأسباب المحتملة:
      • حجم النموذج أكبر من ذاكرة وحدة معالجة الرسومات المتاحة
      • حجم سياق (context) كبير جدًا
      • تشغيل تطبيقات أخرى تستهلك الذاكرة
    • الحلول:
      • تطبيق تقنيات التكميم (8-bit، 4-bit)
      • تقليل حجم السياق (context size)
      • تقسيم النموذج بين وحدة معالجة الرسومات والمعالج المركزي
      • إغلاق التطبيقات غير الضرورية
      • استخدام مكتبات أكثر كفاءة مثل llama.cpp
  • استخدام ذاكرة عشوائية (RAM) غير كافية:

    • الأعراض: بطء شديد، تجميد النظام، رسائل "MemoryError" في بايثون
    • الأسباب:
      • تشغيل نماذج كبيرة على المعالج المركزي
      • تسرب الذاكرة في التطبيق
    • الحلول:
      • زيادة الذاكرة الافتراضية (swap/paging file)
      • تقليل حجم النموذج أو استخدام نموذج أصغر
      • تنظيف الذاكرة بشكل صريح بعد كل استدلال
      • إعادة تحميل النموذج بعدد معين من العمليات

بطء التوليد​

المشكلات المتعلقة بسرعة توليد النص:

  • سرعة توليد بطيئة:

    • الأعراض: استغراق وقت طويل (أكثر من ثانية) لإنتاج كل رمز (token)
    • الأسباب المحتملة:
      • تشغيل النموذج على المعالج المركزي بدلاً من وحدة معالجة الرسومات
      • إعدادات غير محسّنة (عدم استخدام CUDA، تعطيل KV caching)
      • حجم سياق كبير
    • الحلول:
      • تفعيل تسريع وحدة معالجة الرسومات
      • ضبط معاملات التوليد (الحرارة، top-p/top-k)
      • استخدام CUDA الأصلي بدلاً من PyTorch
      • تجربة نماذج أسرع مثل Mistral-7B أو Phi-2
  • تأخير البدء الأولي:

    • الأعراض: استغراق وقت طويل لبدء التوليد للمرة الأولى
    • الأسباب:
      • تحميل النموذج إلى الذاكرة
      • تهيئة المكتبات والواجهات
    • الحلول:
      • الاحتفاظ بالنموذج محملاً في الذاكرة
      • استخدام واجهات برمجة تطبيقات كخدمة (API as a service)
      • تنفيذ التحميل المسبق (lazy loading) للأجزاء الضرورية فقط

أخطاء التنفيذ​

مشكلات وأخطاء شائعة أثناء تشغيل النماذج:

  • خطأ في تحميل النموذج:

    • الأعراض: رسائل خطأ مثل "Error loading model" أو "Failed to load weights"
    • الأسباب المحتملة:
      • ملفات نموذج غير صالحة
      • عدم توافق الإصدارات (مكتبة مقابل نموذج)
      • مسارات خاطئة
    • الحلول:
      • التحقق من صحة ملفات النموذج وإعادة تنزيلها إذا لزم الأمر
      • التأكد من توافق إصدارات المكتبات
      • استخدام مسارات مطلقة بدلاً من نسبية
  • أخطاء برمجية أثناء التشغيل:

    • الأعراض: استثناءات برمجية، سلوك غير متوقع
    • الأسباب:
      • مشكلات في المرمّز (tokenizer)
      • تعارضات بين المكتبات
      • أخطاء في المدخلات أو المعاملات
    • الحلول:
      • تحديث المكتبات إلى أحدث إصدار
      • التحقق من تنسيق المدخلات
      • إضافة معالجة الاستثناءات المناسبة
  • مشكلات التنسيقات والتوافق:

    • الأعراض: رسائل مثل "Unsupported model format" أو "Incompatible tensor shapes"
    • الأسباب:
      • عدم توافق تنسيق النموذج مع المكتبة
      • إصدارات مختلفة من GGUF/GGML
    • الحلول:
      • تحويل النموذج إلى التنسيق المدعوم (مثل تحويل Safetensors إلى GGUF)
      • استخدام أدوات مثل llama-cpp-python أو transformers مع محولات مناسبة
      • تحديث أدوات التشغيل لدعم أحدث التنسيقات