Ollama: إدارة النماذج

النماذج هي الأصول الأساسية للذكاء الاصطناعي المحلي — اختيار النموذج المناسب وإدارة إصداراته بنجاح بأهمية اختيار الشيف للمكونات.

💡 نصيحة: تعليمة FROM في Modelfile تدعم آلية الوراثة — يمكنك إنشاء نماذج مخصصة بناءً على نماذج موجودة. النموذج الجديد يشارك ملفات أوزان النموذج الأساسي ولا يضيف سوى إعدادات موجه النظام والمعلمات والقوالب، دون استهلاك مساحة إضافية. هذا يسمح بإنشاء نماذج متعددة حسب الدور (مثلاً، متخصص الاسترداد، خبير اللوجستيات) بتكلفة شبه صفرية.

📋 المتطلبات المسبقة: يجب أن تتقن ما يلي أولًا

1. ماذا ستتعلم


2. قصة حقيقية من مؤسس SaaS

(1) المشكلة: اختيار النموذج الخاطئ يهدر الموارد

أسست أليس منصة التجارة الإلكترونية GlobalShop وسحبت مبدئيًا نموذج llama3.1:70b لنظام خدمة العملاء SupportBot. النموذج بحجم 40 غيغابايت+ ملأ قرص الخادم وكان الاستنتاج بطيئًا. اكتشفت لاحقًا أن نموذجًا صغيرًا بـ 3 مليارات معلمة يمكنه التعامل مع 80% من الأسئلة الشائعة؛ الـ 70B كانت ضرورية فقط للطلبات المعقدة.

(2) الحل: نشر مدرج حسب الحاجة

بفهم وسوم النماذج ومستويات المعلمات، أقامت أليس استراتيجية مدرجة: 3B للأسئلة الشائعة (سريع)، 8B للتعقيد المتوسط، و70B فقط للطلبات عالية الصعوبة.

BASH
# سحب أحجام مختلفة لمهام مختلفة
ollama pull llama3.2:3b    # سريع، للاستعلامات البسيطة
ollama pull llama3.1:8b    # متوازن
ollama pull llama3.1:70b   # قوي، للحالات المعقدة

3. دليل أوامر إدارة النماذج الكامل

(1) جدول مرجع الأوامر

الأمر الغرض مثال
ollama list عرض النماذج المحلية ollama list
ollama pull سحب نموذج ollama pull llama3.2
ollama rm حذف نموذج ollama rm llama3.2:3b
ollama show عرض تفاصيل النموذج ollama show llama3.2
ollama cp نسخ وسْم نموذج ollama cp llama3.2 my-llama
ollama run تشغيل نموذج ollama run llama3.2

(2) دورة حياة النموذج

100%
stateDiagram-v2
    [*] --> Pulled: ollama pull
    Pulled --> Running: ollama run
    Running --> Idle: Keep alive timeout
    Idle --> Running: ollama run (reload)
    Idle --> Unloaded: Memory pressure
    Unloaded --> Running: ollama run (reload)
    Pulled --> Copied: ollama cp
    Copied --> Running: ollama run copy
    Pulled --> Deleted: ollama rm
    Deleted --> [*]

▶ مثال 1: عمليات الإدارة الأساسية

BASH
# عرض جميع النماذج المحلية
ollama list
# NAME              ID              SIZE      MODIFIED
# llama3.2:latest   a80c4feeb02f    2.0 GB    2 hours ago
# mistral:latest    2b3e5c5f1e3d    4.1 GB    1 day ago

# سحب نموذج محدد
ollama pull llama3.2
# pulling manifest... done
# success

# عرض تفاصيل النموذج
ollama show llama3.2
# Model
#   architecture: llama
#   parameters:    3.2B
#   quantization:  Q4_K_M
#   context length: 131072

# حذف نموذج لتحرير المساحة
ollama rm llama3.2:3b
# deleted 'llama3.2:3b'
⚠️ ملاحظة: ollama rm لا يمكن التراجع عنه — تُحذف ملفات النموذج نهائيًا من القرص. إذا كان النموذج مسحوبًا من مكتبة Ollama، يمكن إعادة تنزيله عبر ollama pull، لكن تنزيل النماذج الكبيرة قد يستغرق وقتًا طويلًا (10-30 دقيقة لأكثر من 40 غيغابايت). تأكد أنك لن تحتاج النموذج قبل الحذف.

الإخراج:

TEXT
NAME                    ID              SIZE    
llama3.2:latest        a80...          2.0 GB  
mistral:latest         61...           4.1 GB

4. نظام وسوم النماذج

⚠️ تحذير: سحب نموذج بـ 70 مليار معلمة يتطلب أكثر من 40 غيغابايت VRAM (متعدد GPU) وأكثر من 40 غيغابايت مساحة قرص. إذا كان hardware لا يدعم ذلك، لا تنفذ ollama pull llama3.1:70b بشكل أعمى — بعد تنزيل 40 غيغابايت، لن تتمكن من تشغيله، ويهدر مساحة القرص. تأكد من hardware قبل السحب.

(1) قواعد تسمية الوسوم

تحدد الوسوم متغيرًا محددًا من النموذج، بالصيغة <name>:<tag>:

صيغة الوسْم المعنى مثال
name:latest أحدث إصدار افتراضي llama3.2:latest
name / عدد المعلمات / التقدير الكمي مستوى المعلمات llama3.1:8b / llama3.1:70b
name:q4_K_M مستوى التقدير الكمي llama3.2:q4_K_M
name:v1.0 رقم الإصدار llama3.2:v1.0
name (بدون وسْم) يكافئ latest llama3.2

(2) مقارنة وسوم التقدير الكمي

الوسْم مستوى التقدير الكمي حجم نموذج 8B تقييم الجودة حالة الاستخدام
q2_K 2 بت ~3 غيغابايت تدهور ملحوظ hardware شديد التقييد
q3_K_M 3 بت ~3.8 غيغابايت تدهور طفيف 4 غيغابايت VRAM
q4_K_M 4 بت ~5 غيغابايت قريب من الأصل 8 غيغابايت VRAM (موصى به)
q5_K_M 5 بت ~5.7 غيغابايت شبه بدون فقدان 8 غيغابايت VRAM
q8_0 8 بت ~8 غيغابايت بدون فقدان 12 غيغابايت+ VRAM
f16 16 بت ~16 غيغابايت دقة كاملة 24 غيغابايت+ VRAM
💡 نصيحة: عند عدم تحديد وسْم تقدير كمي، يختار Ollama التقدير الكمي الأمثل تلقائيًا (عادةً Q4_K_M). حدده صراحةً للتحكم الدقيق.

▶ مثال 2: سحب متغيرات تقدير كمي مختلفة

BASH
# افتراضي: اختيار التقدير الكمي تلقائيًا (عادةً Q4_K_M)
ollama pull llama3.2

# صريح: سحب تقدير كمي محدد
ollama pull llama3.2:q4_K_M     # متوازن (موصى به)
ollama pull llama3.2:q8_0       # جودة أعلى، ملف أكبر

# السحب حسب عدد المعلمات
ollama pull llama3.1:8b         # 8 مليارات معلمة
ollama pull llama3.1:70b        # 70 مليار معلمة (يحتاج أكثر من 40 غيغابايت VRAM)

# عرض جميع المتغيرات المتاحة
ollama show llama3.2 --modelfile

الإخراج:

TEXT
pulling manifest... 
success

5. مكتبة Ollama واختيار النماذج

(1) دليل اختيار النماذج الشائعة

النموذج المعلمات الحجم نقاط القوة الترخيص
llama3.2 3B / 1B 2 غيغابايت محادثة عامة، نشر خفيف Llama Community
llama3.1 8B / 70B 5 / 40 غيغابايت متعدد الأغراض، متعدد اللغات Llama Community
mistral 7B 4.1 غيغابايت اتباع التعليمات، كود Apache 2.0
qwen2.5 7B / 72B 4.7 / 42 غيغابايت مُحسّن للصينية، كود Apache 2.0
codellama 7B / 34B 3.8 / 19 غيغابايت توليد وإكمال الكود Llama Community
phi-3-mini 3.8B 2.3 غيغابايت استنتاج، خفيف MIT
nomic-embed-text 274M 274 ميغابايت تضمين النص (لـ RAG) Apache 2.0

(2) قرار اختيار النموذج حسب السيناريو

100%
graph TD
    A[What do you need?] --> B{Primary use case?}
    B -->|Chat / General| C{Hardware?}
    B -->|Code| D[codellama / qwen2.5-coder]
    B -->|Chinese| E[qwen2.5]
    B -->|Embedding / RAG| F[nomic-embed-text / mxbai-embed-large]
    C -->|8GB RAM| G[llama3.2:3b / phi-3-mini]
    C -->|16GB+ RAM or 8GB VRAM| H[llama3.1:8b / mistral]
    C -->|40GB+ VRAM| I[llama3.1:70b]

▶ مثال 3: اختيار النموذج حسب السيناريو

BASH
# SupportBot لأليس: خدمة عملاء متعددة اللغات
ollama pull qwen2.5:7b          # الأفضل للصينية + متعدد اللغات
ollama pull nomic-embed-text    # لقاعدة معرفة RAG

# GlobalShop لأليس: توليد SQL
ollama pull codellama:7b        # نموذج متخصص في الكود

# SaaS لأليس: تحليل المقاييس
ollama pull llama3.1:8b         # استنتاج عام

# فحص إجمالي استخدام القرص
ollama list | awk '{sum+=$3} END {print "Total: " sum/1024/1024/1024 " GB"}'

الإخراج:

TEXT
NAME                    ID              SIZE    
llama3.2:latest        a80...          2.0 GB  
mistral:latest         61...           4.1 GB

6. إدارة مساحة القرص والترحيل بدون اتصال

ℹ️ معلومة: يستخدم Ollama تخزينًا قائمًا على المحتوى (CAS). تُخزن ملفات النماذج ككائنات blob في ~/.ollama/models/blobs/. مشاركة نماذج متعددة لطبقات الأساس نفسها يعني أن إجمالي أحجام ollama list قد يتجاوز استخدام القرص الفعلي.

(1) مواقع التخزين واستراتيجية التنظيف

المنصة المسار الافتراضي ملاحظات
macOS ~/.ollama/models يتبع دليل المستخدم
Linux /usr/share/ollama/.ollama/models مستخدم خدمة systemd
Windows C:\Users\<user>\.ollama\models دليل المستخدم

(2) خطوات ترحيل النماذج في بيئة بدون اتصال

الخطوة الإجراء الأمر
1 سحب النموذج على جهاز متصل ollama pull llama3.2
2 تحديد موقع ملفات النموذج ls ~/.ollama/models/blobs/
3 حزم دليل blobs tar czf ollama-models.tar.gz blobs/
4 النقل إلى الجهاز بدون اتصال scp ollama-models.tar.gz user@offline:~
5 الاستخراج إلى المسار المستهدف tar xzf ollama-models.tar.gz -C /usr/share/ollama/.ollama/models/
6 التحقق من التوفر ollama list

▶ مثال 4: إدارة مساحة القرص

BASH
# فحص استخدام القرص لكل نموذج
ollama list

# إزالة النماذج غير المستخدمة لتحرير المساحة
ollama rm llama3.1:70b    # تحرير ~40 غيغابايت
ollama rm mistral:latest  # تحرير ~4 غيغابايت

# تغيير مسار تخزين النماذج (إذا امتلأ القرص)
export OLLAMA_MODELS=/data/ollama/models
ollama serve

# التحقق من المسار الجديد
ls $OLLAMA_MODELS/blobs/

الإخراج:

TEXT
NAME                    ID              SIZE    
llama3.2:latest        a80...          2.0 GB  
mistral:latest         61...           4.1 GB

▶ مثال 5: استيراد نموذج مخصص من ملف GGUF

BASH
# تنزيل ملف GGUF من HuggingFace
wget https://huggingface.co/.../model-q4_K_M.gguf

# إنشاء Modelfile يشير إلى GGUF
cat > Modelfile <<EOF
FROM ./model-q4_K_M.gguf
EOF

# البناء والتسجيل مع Ollama
ollama create my-custom-model -f Modelfile

# تشغيله كأي نموذج آخر
ollama run my-custom-model "Hello"

الإخراج:

TEXT
I'm a helpful AI assistant running locally on your machine...

7. مثال شامل: سكربت إدارة النماذج لأليس

BASH
#!/bin/bash
# ============================================
# شامل: لوحة إدارة النماذج
# سحب، فحص، تنظيف، وإعداد تقرير عن النماذج
# ============================================

MODEL_STORE="$HOME/.ollama/models"

# دالة: عرض تقرير جرد النماذج
show_inventory() {
    echo "=== Ollama Model Inventory ==="
    echo ""
    ollama list | while read -r name id size modified; do
        if [ "$name" != "NAME" ]; then
            echo "Model: $name"
            echo "  ID:       $id"
            echo "  Size:     $size"
            echo "  Modified: $modified"
            echo ""
        fi
    done
    echo "Total disk: $(du -sh $MODEL_STORE 2>/dev/null | cut -f1)"
}

# دالة: سحب حزمة نماذج SupportBot
pull_support_stack() {
    echo "=== Pulling SupportBot Model Stack ==="
    local models=(
        "qwen2.5:7b"           # Main chat model
        "nomic-embed-text"     # Embedding for RAG
        "llama3.2:3b"          # Fast classifier
    )
    for model in "${models[@]}"; do
        echo "Pulling $model..."
        ollama pull "$model"
    done
    echo "=== Stack Ready ==="
}

# دالة: تنظيف النماذج القديمة/غير المستخدمة
clean_unused() {
    echo "=== Models Available for Cleanup ==="
    ollama list
    echo ""
    read -p "Enter model name to remove (or 'cancel'): " model
    if [ "$model" != "cancel" ] && [ -n "$model" ]; then
        ollama rm "$model"
        echo "Removed: $model"
    fi
}

# القائمة الرئيسية
echo "1. Show inventory"
echo "2. Pull SupportBot stack"
echo "3. Clean unused models"
read -p "Choose: " choice
case $choice in
    1) show_inventory ;;
    2) pull_support_stack ;;
    3) clean_unused ;;
esac

❓ أسئلة شائعة

س تنزيل ollama pull بطيء جدًا، ماذا أفعل؟
ج النماذج مستضافة على ollama.com، وقد يكون بطيئًا في بعض المناطق. يمكنك ضبط OLLAMA_MODELS على مسار مخصص وتنزيل ملفات GGUF من موقع مرآة للاستيراد اليدوي. انظر الدرس 8 Modelfile للتفاصيل.
س لم تُحرر مساحة القرص بعد حذف نموذج؟
ج يستخدم Ollama تخزينًا قائمًا على المحتوى (CAS)؛ قد تكون ملفات blob مشتركة مع نماذج أخرى. ollama rm يزيل المراجع فقط. أعد تشغيل الخدمة لتفعيل التنظيف، أو احذف ملفات blob غير المُشار إليها يدويًا.
س كيف أفحص أقصى طول سياق لنموذج؟
ج شغّل ollama show <model> وابحث عن حقل context length. llama3.2 يدعم 131K رمز، وmistral يدعم 32K رمز.
س هل يمكن تشغيل عدة نماذج في وقت واحد؟
ج نعم، لكن محدود بـ VRAM. اضبط OLLAMA_MAX_LOADED_MODELS=2 للسماح بتحميل نموذجين معًا. نموذج صغير (3B) + نموذج تضمين يمكنهما مشاركة 8 غيغابايت VRAM.
س هل يتحدث وسم latest تلقائيًا؟
ج لا. ollama pull يجلب أحدث إصدار فقط عند التنفيذ يدويًا. النماذج المُنزَّلة لا تتحدث تلقائيًا.
س كيف أحصل على النماذج في بيئة بدون اتصال؟
ج اسحب النماذج على جهاز متصل، ثم حزم دليل ~/.ollama/models/blobs/، وانقل إلى الجهاز بدون اتصال، واستخرجه في نفس المسار. يمكنك أيضًا تنزيل ملفات GGUF من HuggingFace واستيرادها عبر Modelfile.

📖 ملخص


📝 تمارين

  1. أساسي (صعوبة ⭐): اسحب 3 نماذج بأعداد معلمات مختلفة (3B/8B/تضمين)، ثم اعرض التفاصيل عبر ollama list وollama show.
  2. متوسط (صعوبة ⭐⭐): بناءً على إعداد hardware لديك، اختر مجموعة نماذج مناسبة لسيناريو SupportBot (محادثة رئيسية + تضمين) واشرح أسباب اختيارك.
  3. متقدم (صعوبة ⭐⭐⭐): نفّذ سير عمل ترحيل بدون اتصال — اسحب نماذج على جهاز، حزمها وانقلها إلى جهاز آخر بدون اتصال، وتحقق من الوظائف.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%