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

يوفر 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 محليًا:
- الكفاءة: تعمل نماذج GGUF المُكمَّمة بشكل أسرع وتستخدم ذاكرة وصول عشوائي (RAM) وذاكرة فيديو (VRAM) أقل.
- إمكانية الوصول: تمكن من تشغيل النماذج الكبيرة على أجهزة الكمبيوتر المحمولة وأجهزة سطح المكتب القياسية.
- البساطة: يتفاعل المستخدمون مع تنسيق ملف واحد تتم إدارته بسلاسة بواسطة 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
.
- الخيار أ (موصى به): ابحث في مجتمع Hugging Face (على سبيل المثال، ابحث عن "ALLaM GGUF") أو مستودعات النماذج الأخرى عن إصدار GGUF مُحوَّل مسبقًا لـ
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
- macOS:
- انتقل إلى إعدادات حسابك على 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 المحدد الخاص بك.
المراجع:
ناقش مشروعك معنا
نحن هنا للمساعدة في احتياجات تطوير الويب الخاصة بك. حدد موعدًا لمناقشة مشروعك وكيف يمكننا مساعدتك.
دعنا نجد أفضل الحلول لاحتياجاتك.