دمج ALLaM-7B-Instruct-preview مع Ollama

AI Bot
بواسطة AI Bot ·

جاري تحميل مشغل تحويل النص إلى كلام الصوتي...

يوفر Ollama طريقة ملائمة لتشغيل نماذج اللغة الكبيرة محليًا. بينما تتوفر العديد من النماذج مباشرة عبر ollama pull، يمكنك أيضًا استيراد نماذج مخصصة، مثل ALLaM-AI/ALLaM-7B-Instruct-preview، عن طريق إنشاء Modelfile.

فهم تنسيقات النماذج: Safetensors مقابل GGUF

قبل الغوص في عملية الاستيراد، من المفيد فهم تنسيقات النماذج المختلفة المعنية:

  • تنسيق Safetensors / PyTorch:

    • ما هو: هذه التنسيقات (.safetensors, .bin, .pth) قياسية لتوزيع النماذج المستخدمة في التدريب وضمن أطر عمل مثل Hugging Face Transformers. عادةً ما تخزن أوزان النموذج عالية الدقة (مثل النقطة العائمة 16 بت أو 32 بت). يستخدم نموذج ALLaM-AI/ALLaM-7B-Instruct-preview الرسمي تنسيق Safetensors.
    • حالة الاستخدام: بشكل أساسي لتدريب النماذج، والضبط الدقيق (fine-tuning)، وتشغيل الاستدلال (inference) باستخدام مكتبات Python (transformers, torch) التي تتطلب غالبًا أجهزة قوية (خاصة وحدات معالجة الرسومات GPUs).
  • GGUF (GPT-Generated Unified Format):

    • ما هو: تنسيق ثنائي تم تصميمه خصيصًا بواسطة مشروع llama.cpp للاستدلال الفعال (تشغيل النموذج) على مجموعة واسعة من الأجهزة، بما في ذلك وحدات المعالجة المركزية (CPUs) و Apple Silicon (Metal).
    • الميزة الرئيسية - التكميم (Quantization): تحتوي ملفات GGUF عادةً على أوزان مُكمَّمة. يقلل التكميم من دقة الأوزان (على سبيل المثال، إلى أعداد صحيحة 4 بت أو 5 بت)، مما يقلل بشكل كبير من حجم ملف النموذج ومتطلبات الذاكرة، مما يجعل النماذج الكبيرة متاحة على أجهزة المستهلك.
    • مكتفي ذاتيًا: يجمع أوزان النموذج وتفاصيل البنية ومعلومات المُرمِّز (tokenizer) والبيانات الوصفية الأخرى اللازمة للاستدلال في ملف واحد.

لماذا يفضل Ollama تنسيق GGUF

يستفيد Ollama من مكتبة llama.cpp داخليًا. GGUF هو التنسيق الأصلي لـ llama.cpp، مما يوفر العديد من المزايا لهدف Ollama المتمثل في تسهيل تشغيل LLMs محليًا:

  1. الكفاءة: تعمل نماذج GGUF المُكمَّمة بشكل أسرع وتستخدم ذاكرة وصول عشوائي (RAM) وذاكرة فيديو (VRAM) أقل.
  2. إمكانية الوصول: تمكن من تشغيل النماذج الكبيرة على أجهزة الكمبيوتر المحمولة وأجهزة سطح المكتب القياسية.
  3. البساطة: يتفاعل المستخدمون مع تنسيق ملف واحد تتم إدارته بسلاسة بواسطة Ollama.

التحدي مع ALLaM و Ollama

يعمل Ollama بشكل أفضل مع النماذج بتنسيق GGUF. يوفر مستودع ALLaM-AI/ALLaM-7B-Instruct-preview الرسمي على Hugging Face الأوزان بشكل أساسي بتنسيق Safetensors/PyTorch.

نقطة أساسية: غالبًا ما يكون استيراد Safetensors مباشرة إلى Ollama باستخدام Modelfile غير مباشر وقد يتطلب تحويلاً يدويًا إلى GGUF أولاً. يمكن لأدوات مثل llama.cpp إجراء هذا التحويل، لكنها عملية متقدمة.

يحدد هذا الدليل الخطوات باستخدام Modelfile، بافتراض أنك إما: أ) تجد إصدار GGUF مُحوَّل مسبقًا للنموذج (تساهم به المجتمعات أحيانًا). ب) قمت بنجاح بتحويل أوزان النموذج الأصلية إلى تنسيق GGUF بنفسك.

استيراد ALLaM إلى Ollama (يتطلب GGUF)

1. الحصول على ملف نموذج GGUF

  • تثبيت Ollama: تأكد من تشغيل Ollama على نظامك. قم بزيارة ollama.com للحصول على إرشادات التثبيت.
  • ملف GGUF: نظرًا لأن Ollama يعمل بشكل أفضل مع GGUF، فأنت بحاجة إلى نموذج ALLaM بهذا التنسيق.
    • الخيار أ (موصى به): ابحث في مجتمع Hugging Face (على سبيل المثال، ابحث عن "ALLaM GGUF") أو مستودعات النماذج الأخرى عن إصدار GGUF مُحوَّل مسبقًا لـ ALLaM-7B-Instruct-preview. قم بتنزيل مستوى تكميم مناسب (مثل q4_K_M).
    • الخيار ب (متقدم): قم بتنزيل أوزان Safetensors الأصلية من المستودع الرسمي وقم بتحويلها إلى GGUF بنفسك باستخدام برامج التحويل النصية الخاصة بـ llama.cpp (مثل convert.py و quantize). هذه عملية تقنية تتطلب الإلمام بـ Python وتجميع llama.cpp.

2. إنشاء Modelfile

أنشئ ملفًا باسم Modelfile (بدون امتداد) في دليل من اختيارك. يخبر هذا الملف Ollama بكيفية تكوين النموذج وتشغيله.

# Modelfile for ALLaM-7B-Instruct-preview (GGUF)
 
# هام: استبدل './path/to/your/allam-7b-instruct-preview.gguf'
# بالمسار الفعلي لملف GGUF الذي تم تنزيله أو تحويله.
FROM ./path/to/your/allam-7b-instruct-preview.gguf
 
# تحديد قالب الدردشة بناءً على التنسيق المتوقع للنموذج.
# يعكس هذا الهيكل المستخدم بواسطة apply_chat_template في Hugging Face
# للنماذج التي تتوقع أدوار المستخدم/المساعد. تحقق من بطاقة النموذج إذا كانت هناك حاجة إلى رموز خاصة.
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
{{ .Response }}<|im_end|>
"""
 
# تعيين معلمات النموذج (راجع بطاقة النموذج للحصول على تفاصيل إذا كانت متوفرة)
PARAMETER stop "<|im_start|>"
PARAMETER stop "<|im_end|>"
PARAMETER temperature 0.6
PARAMETER top_k 50
PARAMETER top_p 0.95
# حجم السياق من بطاقة النموذج
PARAMETER num_ctx 4096
 
# اختياري: تعيين توجيه نظام افتراضي (يمكن تجاوزه أثناء الدردشة)
SYSTEM """You are ALLaM, a helpful bilingual English and Arabic AI assistant developed by SDAIA."""
 
# اختياري: معلومات الترخيص (راجع الترخيص الفعلي للنموذج)
LICENSE """
Apache License 2.0
(Verify the exact license from the Hugging Face repository)
"""

الشرح:

  • FROM: يحدد المسار إلى ملف نموذج GGUF الخاص بك. من الضروري تحديث هذا المسار.
  • TEMPLATE: يحدد كيفية تنسيق التوجيهات والاستجابات للنموذج. يستخدم هذا المثال تنسيق دردشة شائعًا مع رموز <|im_start|> و <|im_end|>، والتي غالبًا ما تستخدمها نماذج التعليمات. قد تحتاج إلى تعديل هذا بناءً على تحويل GGUF المحدد أو متطلبات النموذج.
  • PARAMETER: يضبط معلمات التوليد الافتراضية مثل رموز الإيقاف، ودرجة الحرارة (temperature)، وحجم نافذة السياق (num_ctx)، وما إلى ذلك.
  • SYSTEM: يضبط شخصية أو تعليمات افتراضية للنموذج.
  • LICENSE: قم بتضمين معلومات ترخيص النموذج.

3. إنشاء نموذج Ollama

افتح الطرفية (terminal)، وانتقل إلى الدليل الذي يحتوي على Modelfile وملف GGUF، وقم بتشغيل أمر ollama create:

ollama create allam-instruct-preview -f Modelfile
  • allam-instruct-preview: هذا هو الاسم الذي ستستخدمه للإشارة إلى النموذج في Ollama. يمكنك اختيار اسم مختلف.
  • -f Modelfile: يحدد Modelfile المراد استخدامه.

سيقوم Ollama بمعالجة Modelfile واستيراد نموذج GGUF إلى مكتبته. قد يستغرق هذا بعض الوقت حسب حجم النموذج.

4. تشغيل النموذج

بمجرد اكتمال عملية الإنشاء، يمكنك تشغيل النموذج باستخدام:

ollama run allam-instruct-preview

يمكنك الآن الدردشة مع النموذج مباشرة في الطرفية. جرب التوجيهات باللغة الإنجليزية أو العربية:

>>> كيف أجهز كوب شاهي؟
 
>>> Explain the concept of Large Language Models.
 
>>> /bye (للخروج)

نشر نموذجك المخصص على سجل Ollama

بمجرد إنشاء نموذج Ollama محلي بنجاح من ملف GGUF (مثل allam-instruct-preview)، يمكنك مشاركته على سجل ollama.com ليتمكن المستخدمون الآخرون من استخدامه.

1. إنشاء حساب Ollama

إذا لم تكن قد فعلت ذلك بالفعل، فقم بالتسجيل للحصول على حساب على ollama.com/signup. سيتم استخدام اسم المستخدم الخاص بك كجزء من الاسم العام للنموذج (على سبيل المثال، <your_username>/allam-instruct-preview).

2. إضافة مفتاحك العام

  • ابحث عن مفتاح Ollama العام المحلي الخاص بك. عادة ما يكون الموقع:
    • macOS: ~/.ollama/id_ed25519.pub
    • Linux: /usr/share/ollama/.ollama/id_ed25519.pub أو ~/.ollama/id_ed25519.pub
    • Windows: C:\\Users\\<username>\\.ollama\\id_ed25519.pub
  • انتقل إلى إعدادات حسابك على ollama.com/settings/keys.
  • انقر فوق "Add Ollama Public Key" والصق المحتوى الكامل لملف .pub الخاص بك.

3. وسم (Tag) نموذجك المحلي

قبل الدفع (push)، تحتاج إلى وسم نموذجك المحلي باسم مستخدم Ollama الخاص بك. استخدم أمر ollama cp (نسخ):

# ollama cp <local_model_name> <your_username>/<new_model_name>
ollama cp allam-instruct-preview your_ollama_username/allam-instruct-preview

استبدل your_ollama_username باسم مستخدم Ollama الفعلي الخاص بك.

4. دفع النموذج

الآن، قم بدفع النموذج الموسوم إلى السجل:

ollama push your_ollama_username/allam-instruct-preview

سيؤدي هذا إلى تحميل نموذجك. بمجرد الانتهاء، يمكن للآخرين سحبه (pull) وتشغيله باستخدام:

ollama pull your_ollama_username/allam-instruct-preview
ollama run your_ollama_username/allam-instruct-preview

هام: يمكنك فقط نشر النماذج التي قمت بإنشائها محليًا بنجاح، والتي تتطلب عادةً البدء بملف GGUF للنماذج غير القياسية مثل ALLaM. تأكد من أن لديك الحقوق لإعادة توزيع أوزان النموذج وفقًا لترخيص النموذج الأصلي (يستخدم ALLaM ترخيص Apache 2.0، والذي يسمح عمومًا بإعادة التوزيع).

الخلاصة

يتطلب دمج النماذج المخصصة مثل ALLaM-7B-Instruct-preview في Ollama ملف Modelfile والأهم من ذلك، أوزان النموذج بتنسيق GGUF. بينما لا يوفر المستودع الرسمي إصدار GGUF، فإن العثور على تحويل مجتمعي أو تحويله بنفسك يتيح لك الاستفادة من هذا النموذج القوي باللغتين العربية والإنجليزية داخل بيئة Ollama المحلية الخاصة بك. تذكر تعديل مسار FROM وربما TEMPLATE في Modelfile بناءً على ملف GGUF المحدد الخاص بك.


المراجع:


هل تريد قراءة المزيد من الدروس التعليمية؟ تحقق من أحدث درس تعليمي لدينا على 6 أساسيات Laravel 11: الطلبات.

ناقش مشروعك معنا

نحن هنا للمساعدة في احتياجات تطوير الويب الخاصة بك. حدد موعدًا لمناقشة مشروعك وكيف يمكننا مساعدتك.

دعنا نجد أفضل الحلول لاحتياجاتك.