AI: النشر المحلي للنموذج

آخر تحديث: 2026-08-26

"البيانات لا تغادر الجهاز أبدًا"—ليست خيالًا علميًا؛ بل هي واقع الذكاء الاصطناعي المحلي. عندما تمنع لوائح الخصوصية تحميل البيانات إلى السحابة، أو تؤثر عدم استقرار الشبكة على الخدمة، أو تصبح رسوم استدعاء واجهة برمجة التطبيقات (API) باهظة التكلفة بشكل مرهق، يصبح نشر نماذج الذكاء الاصطناعي على الموقع خيارًا عمليًا. ستساعدك هذه الفصل على فهم الفروقات بين النشر المحلي وواجهات برمجة التطبيقات السحابية، وتثبيت Ollama لتشغيل نماذج اللغة الكبيرة (LLMs) مفتوحة المصدر، واستدعاء النماذج المحلية باستخدام بايثون، وتجربة فوائد حماية الخصوصية والذكاء الاصطناعي دون اتصال بالإنترنت.

1. ما ستتعلمه



2. قصة: معضلة تشارلي الخاصة

(1) نقطة الضعف: لا يمكن نقل البيانات إلى السحابة

يتطلب مشروع الذكاء الاصطناعي الطبي لتشارلي تحليل السجلات الطبية للمرضى لاستخراج الأعراض الأساسية ومعلومات الأدوية. كان قد خطط في الأصل لاستخدام واجهة برمجة تطبيقات OpenAI لهذا الغرض، لكن فريق الامتثال أثار تحذيرًا:

"تُعتبر السجلات الطبية للمرضى بيانات شخصية حساسة، ووفقًا للائحة العامة لحماية البيانات (GDPR) وقانون حماية المعلومات الشخصية، لا يمكن إرسالها إلى واجهات برمجة تطبيقات سحابية تابعة لجهات خارجية."

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

(2) نهج بوب: تشغيل النموذج محليًا

بعد سماع الموقف، قدم بوب اقتراحًا: "استخدم Ollama لتشغيل Llama 3 محليًا—تبقى البيانات على الجهاز، وهو أمر متوافق مع اللوائح وفعال من حيث التكلفة."

أمر واحد:

BASH
ollama run llama3

تظهر سطر الأوامر >>> على الشاشة—نموذج لغوي كبير يعمل بالكامل محليًا الآن جاهز. لا تحتاج السجلات الطبية لمغادرة حاسوب تشارلي المحمول.

(3) الفوائد: الخصوصية، وتوفير التكاليف، والوصول دون اتصال بالإنترنت — الكل في واحد

بعد الاختبار، وجد تشارلي أنه بينما النموذج المحلي ليس قويًا بقدر GPT-4، إلا أنه كافٍ تمامًا لمهمة تلخيص السجلات الطبية، ويوفر 50 دولارًا في رسوم واجهة برمجة التطبيقات شهريًا، ويعمل حتى بدون اتصال بالإنترنت.


3. النشر المحلي مقابل واجهة برمجة التطبيقات السحابية

(1) الاختلافات الرئيسية

يمثل النشر المحلي وواجهات برمجة التطبيقات السحابية نموذجين متميزين لاستخدام الذكاء الاصطناعي前者 هو "امتلاك وتشغيل" بينما后者 هو "استئجار واستدعاء".

(2) جدول مقارنة: النشر المحلي مقابل واجهة برمجة التطبيقات السحابية

البُعد النشر المحلي واجهة برمجة التطبيقات السحابية
الخصوصية تبقى البيانات على الجهاز وتكون تحت سيطرتك الكاملة تُرسل البيانات إلى خوادم أطراف ثالثة
التكلفة استثمار أجهزة لمرة واحدة؛ لا رسوم مستمرة لواجهة برمجة التطبيقات يُحسب حسب التوكن؛ تكاليف مرتفعة على المدى الطويل
زمن الاستجابة زمن استدلال ثابت، بدون تقلبات في الشبكة يعتمد على الشبكة؛ يتراوح زمن الاستجابة بين 1 و 5 ثوانٍ
حجم النموذج محدود بالذاكرة المحلية/ذاكرة وحدة المعالجة الرسومية؛ عادة 7B–70B بدون قيود؛ يدعم نماذج كبيرة بمستوى GPT-4
بدون إنترنت متاح بالكامل بدون اتصال بالإنترنت يتطلب اتصالاً بالإنترنت
التشغيل والصيانة يتطلب إدارة الأجهزة والتحديثات بنفسك صفر تشغيل وصيانة؛ جاهز للاستخدام والتكوين
جودة النموذج نماذج مفتوحة المصدر، ليست بمستوى GPT-4 نماذج تجارية، أعلى جودة
التخصيص قابل للضبط الدقيق؛ يمكن التحكم في جميع المعلمات صندوق أسود؛ التعديلات تتم فقط من خلال معلمات واجهة برمجة التطبيقات

(3) كيفية الاختيار؟



4. تثبيت واستخدام Ollama

(1) ما هو Ollama؟

Ollama هو إطار عمل مفتوح المصدر لتشغيل نماذج اللغة الكبيرة (LLMs) محليًا. يقوم بتكريم عمليات تنزيل النماذج، وتقليص حجمها، وتحميلها، وخدمات API في عمليات سطر أوامر بسيطة. يستخدم في جوهره محرك الاستدلال llama.cpp ويدعم الاستدلال المعزز بوحدة معالجة الرسومات (GPU) والمعالج المركزي (CPU).

(2) تثبيت Ollama

macOS / Linux:

BASH
curl -fsSL https://ollama.com/install.sh | sh

Windows:

قم بتنزيل المثبت من ollama.com وانقر مرتين لبدء التثبيت.

التثبيت اليدوي على Linux:

BASH
sudo systemctl start ollama

بعد التثبيت، يبدأ Ollama خدمة REST API على العنوان http://localhost:11434 بشكل افتراضي.

(3) سير عمل Ollama

100%
graph TB
    A["ollama pull llama3<br/>تنزيل النموذج"] --> B["GGUF مقلص الحجم<br/>تقليص تلقائي"]
    B --> C["تحميل إلى الذاكرة/VRAM<br/>تحميل النموذج"]
    C --> D["خادم API :11434<br/>نقطة نهاية REST API"]
    D --> E["Python / CLI / App<br/>استدعاءات العميل"]
    E --> F["الاستدلال<br/>توليد الاستجابة"]
    F --> D

▶ مثال: تنزيل نموذج (الصعوبة: ⭐)

BASH
# تنزيل نموذج Llama 3 8B (حوالي 4.7 جيجابايت)
ollama pull llama3

# تنزيل Qwen2 7B
ollama pull qwen2

# تنزيل Mistral 7B
ollama pull mistral

الإخراج: (قم بتشغيل المثال لرؤية الإخراج الفعلي، أو راجع ملاحظة الإخراج المتوقع في تعليمات الكود أعلاه.)

يعرض شريط التقدم سرعة التنزيل والوقت المتبقي. يتم تخزين النماذج في الدليل ~/.ollama/models.

▶ مثال: الحوار عبر سطر الأوامر (الصعوبة: ⭐)

BASH
# بدء دردشة تفاعلية مع Llama 3
ollama run llama3

# >>> مرحبًا! هل يمكنك شرح ما هي الشبكة العصبية في فقرة واحدة؟
# الشبكة العصبية هي نموذج حسابي مستوحى من طريقة عمل الخلايا العصبية
# البيولوجية في الدماغ البشري. تتكون من طبقات من العقد (الخلايا العصبية)
# المترابطة التي تعالج المعلومات...

# اكتب /bye للخروج
# >>> /bye

الإخراج: (قم بتشغيل المثال لرؤية الإخراج الفعلي، أو راجع ملاحظة الإخراج المتوقع في تعليمات الكود أعلاه.)

▶ مثال: عرض النماذج المثبتة (الصعوبة ⭐)

BASH
# قائمة بجميع النماذج التي تم تنزيلها
ollama list

# مثال على الإخراج:
# NAME            ID              SIZE    MODIFIED
# llama3:latest   365c0bd3c000    4.7 GB  2 hours ago
# mistral:latest  2b3e8435e228    4.1 GB  5 days ago
# qwen2:latest    e3d7e5e5e5e5    4.4 GB  1 day ago

الإخراج: (قم بتشغيل المثال لرؤية الإخراج الفعلي، أو راجع ملاحظة الإخراج المتوقع في تعليمات الكود أعلاه.)



5. عائلات النماذج اللغوية الكبيرة مفتوحة المصدر

(1) النماذج مفتوحة المصدر الرئيسية

شهدت منظومة النماذج اللغوية الكبيرة مفتوحة المصدر نموًا متفجرًا في الفترة 2023-2024، مما أدى إلى ظهور عدة عائلات من النماذج:

(2) جدول مقارنة لنماذج LLMs مفتوحة المصدر

النموذج عدد المعلمات المطور طول السياق الميزات
Llama 3 8B / 70B Meta 8K قدرات قوية للاستخدام العام، أغنى نظام بيئي
Mistral 7B / 8x7B Mistral AI 32K استدلال عالي الكفاءة، دعم للسياق الطويل
Qwen2 7B / 72B Alibaba Cloud 32K–128K قدرات ممتازة في اللغة الصينية، قدرات قوية متعددة اللغات
Gemma 2 9B / 27B Google 8K أمان جيد، خفيف الوزن وفعال
Phi-3 3.8B / 14B Microsoft 4K-128K مدمج وأداؤه عالٍ، مناسب للحوسبة الطرفية

(3) كيف تختار نموذجًا؟



6. تكميم النموذج ومتطلبات العتاد

(1) ما هو التكميم؟

التكميم هو عملية ضغط أوزان النموذج من دقة عالية (مثل FP16، حيث يكون كل وزن 16 بت) إلى دقة منخفضة (مثل Q4، حيث يكون كل وزن 4 بت). يقلل بشكل كبير من استخدام الذاكرة بتكلفة فقدان طفيف في الجودة.

يستخدم Ollama نماذج التكميم بتنسيق GGUF (مبني على llama.cpp) بشكل افتراضي. مستويات التكميم الشائعة:

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

مستوى التكميم بت لكل وزن حجم نموذج 7B فقدان الجودة السيناريوهات المناسبة
FP16 16 بت ~14 GB لا يوجد الأولوية للجودة، مع ذاكرة مرئية وفيرة
Q8 8 بت ~7 GB صغير جداً يوازن بين الجودة والحجم
Q5 5 بت ~5 GB طفيف خيار متوازن
Q4 4 بت ~4 GB مقبول مفضل عندما تكون الذاكرة محدودة

(3) جدول مرجعي لمتطلبات العتاد

عدد معلمات النموذج حجم تكميم Q4 الحد الأدنى للذاكرة/الذاكرة المرئية التوصيات التكوينية
3B ~2 GB 4 GB أجهزة حاسوب محمولة مع رسومات مدمجة
7B-8B ~4-5 GB 8 GB وحدة معالجة رسومات بذاكرة مرئية 8 جيجابايت أو ذاكرة وصول عشوائي 16 جيجابايت
13B-14B ~8 GB 16 GB وحدة معالجة رسومات بذاكرة مرئية 16 جيجابايت
70B-72B ~40 GB 48 GB وحدتا معالجة رسومات بذاكرة مرئية 24 جيجابايت لكل منهما أو ذاكرة وصول عشوائي 64 جيجابايت وحدة معالجة مركزية

نموذج 7B المكمّم (Q4) يتطلب فقط حوالي 4 جيجابايت من الذاكرة ويمكن تشغيله على معظم أجهزة الحاسوب المحمولة الحديثة. هذا هو المفتاح لخفض حواجز الدخول بشكل كبير للذكاء الاصطناعي على الأجهزة.



7. استدعاء نموذج محلي باستخدام بايثون

(1) تثبيت مكتبة ollama

BASH
pip install ollama

(2) طريقتان للاستدعاء

يدعم Ollama طريقتين لاستدعائه من بايثون:

▶ مثال: استدعاء نموذج محلي في بايثون (الصعوبة: ⭐)

PYTHON
import ollama

# محادثة بسيطة مع نموذج Llama 3 المحلي
response = ollama.chat(
    model="llama3",
    messages=[
        {"role": "user", "content": "Explain quantum computing in one sentence."},
    ],
)

print(response["message"]["content"])

الإخراج: (قم بتشغيل المثال لرؤية الإخراج الفعلي، أو ارجع إلى ملاحظة الإخراج المتوقع في تعليقات الكود أعلاه.)

▶ مثال: مقارنة زمن الاستجابة بين النموذج المحلي وواجهة السحابة (الصعوبة: ⭐⭐)

PYTHON
import time
import ollama
from openai import OpenAI

# زمن استجابة النموذج المحلي
start = time.time()
local_response = ollama.chat(
    model="llama3",
    messages=[{"role": "user", "content": "What is machine learning?"}],
)
local_time = time.time() - start

# زمن استجابة واجهة السحابة
client = OpenAI()
start = time.time()
cloud_response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "What is machine learning?"}],
)
cloud_time = time.time() - start

print(f"النموذج المحلي: {local_time:.2f} ثانية")
print(f"واجهة السحابة: {cloud_time:.2f} ثانية")
print(f"إخراج النموذج المحلي: {local_response['message']['content'][:100]}")
print(f"إخراج السحابة: {cloud_response.choices[0].message.content[:100]}")

الإخراج: (قم بتشغيل المثال لرؤية الإخراج الفعلي، أو ارجع إلى ملاحظة الإخراج المتوقع في تعليقات الكود أعلاه.)

▶ مثال: استدعاء مباشر عبر واجهة REST API (الصعوبة: ⭐⭐)

PYTHON
import requests
import json

# استدعاء واجهة Ollama REST API مباشرة
url = "http://localhost:11434/api/chat"
payload = {
    "model": "llama3",
    "messages": [{"role": "user", "content": "Write a haiku about programming."}],
    "stream": False,
}

response = requests.post(url, json=payload)
result = response.json()
print(result["message"]["content"])

الإخراج: (قم بتشغيل المثال لرؤية الإخراج الفعلي، أو ارجع إلى ملاحظة الإخراج المتوقع في تعليقات الكود أعلاه.)



8. مثال شامل: مترجم ذكاء اصطناعي محلي

▶ مثال: مترجم كامل — من التثبيت إلى التشغيل (الصعوبة: ⭐⭐)

يوضح هذا المثال الشامل: تثبيت Ollama ← تنزيل Llama 3 ← تنفيذ "مترجم ذكاء اصطناعي محلي" باستخدام مكتبة Python ollama ← مقارنة الفروقات في جودة المخرجات مع OpenAI API.

PYTHON
import ollama
from openai import OpenAI

def local_translate(text: str, source: str = "English", target: str = "Chinese") -> str:
    prompt = (
        f"You are a professional {source}-{target} translator. "
        f"Translate the following {source} text to {target}. "
        f"Only output the translation, no explanation.\n\n{text}"
    )
    response = ollama.chat(
        model="llama3",
        messages=[{"role": "user", "content": prompt}],
    )
    return response["message"]["content"]

def cloud_translate(text: str, source: str = "English", target: str = "Chinese") -> str:
    client = OpenAI()
    prompt = (
        f"You are a professional {source}-{target} translator. "
        f"Translate the following {source} text to {target}. "
        f"Only output the translation, no explanation.\n\n{text}"
    )
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": prompt}],
    )
    return response.choices[0].message.content

test_sentences = [
    "The patient presented with persistent cough and mild fever for three days.",
    "Artificial intelligence is transforming healthcare diagnostics.",
    "The stock market rallied after the central bank announced rate cuts.",
]

print("=" * 60)
print("Local AI Translator vs Cloud API Translator")
print("=" * 60)

for i, sentence in enumerate(test_sentences, 1):
    local_result = local_translate(sentence)
    cloud_result = cloud_translate(sentence)
    print(f"\n[{i}] EN: {sentence}")
    print(f"    Local:  {local_result}")
    print(f"    Cloud:  {cloud_result}")
    print(f"    {'--- Match ---' if local_result.strip() == cloud_result.strip() else '--- Different ---'}")

قبل التشغيل، تأكد مما يلي:

BASH
# الخطوة 1: تثبيت وبدء تشغيل Ollama
ollama serve

# الخطوة 2: تنزيل النموذج (في مصطلح آخر)
ollama pull llama3

# الخطوة 3: تثبيت تبعيات Python
pip install ollama openai

# الخطوة 4: تشغيل المترجم
python local_translator.py

مثال للمخرجات المتوقعة:

TEXT 📖 للعرض فقط
============================================================
Local AI Translator vs Cloud API Translator
============================================================

[1] EN: The patient presented with persistent cough and mild fever for three days.
    Local:  المريض يعاني من سعال مستمر وحمى خفيفة منذ ثلاثة أيام.
    Cloud:  المريض أظهر سعالًا مستمرًا وحمى خفيفة لمدة ثلاثة أيام.
    --- Different ---

[2] EN: Artificial intelligence is transforming healthcare diagnostics.
    Local:  الذكاء الاصطناعي يُحدث تحولاً في تشخيص الرعاية الصحية.
    Cloud:  الذكاء الاصطناعي يُحدث ثورة في مجال التشخيص الطبي.
    --- Different ---

كلا الترجمتين دقيقتان، لكن الصياغة والأسلوب يختلفان — النموذج المحلي قادر تماماً على تلبية احتياجات الترجمة اليومية.

❓ أسئلة شائعة

س ما هي المتطلبات العتادية اللازمة لتشغيل نموذج LLM محليًا؟
ج يتطلب تشغيل النموذج المُكمَّم بحجم 7B Q4 (حوالي 4 جيجابايت) حدًا أدنى من 8 جيجابايت من الذاكرة العشوائية (RAM). يُوصى بـ 16 جيجابايت من الذاكرة العشوائية أو وحدة معالجة رسومات (GPU) بذاكرة فيديو (VRAM) تبلغ 8 جيجابايت للحصول على تجربة أكثر سلاسة. يتطلب نموذج 70B 48 جيجابايت على الأقل من ذاكرة الفيديو.
س هل Ollama مجاني؟
ج نعم، Ollama مجاني ومفتوح المصدر بالكامل (بترخيص MIT)، وجميع النماذج المدعومة هي أيضًا مفتوحة المصدر ومجانية، بدون أي رسوم مخفية.
س هل يؤدي التكميم إلى تقليل جودة النموذج؟
ج نعم، لكن التأثير ضئيل. عادةً ما يؤدي التكميم Q4 إلى خسارة تتراوح بين 1-3% فقط في درجات المعايير، والفرق غير ملحوظ عمليًا في معظم المهام. التكميم Q8 شبه خالٍ من الخسائر.
س هل هناك فجوة كبيرة بين النماذج المحلية و GPT-4؟
ج تتخلف نماذج المستوى المحلي بحجم 7B بشكل ملحوظ عن GPT-4 في التفكير المعقد وتوليد النصوص الطويلة، لكنها وصلت بالفعل إلى مستويات قريبة من GPT-3.5 في مهام مثل التلخيص والترجمة والتصنيف. يمكن لنماذج المستوى 70B أن تقترب من أداء GPT-4.
س ما هي النماذج التي يمكن تشغيلها على 8 جيجابايت من الذاكرة العشوائية؟
ج يمكن لذاكرة 8 جيجابايت تشغيل نموذج 3B Q4 (Phi-3 mini) بسلاسة، في حين يمكن تشغيل نموذج 7B Q4 عليه، وإن كان ببطء. نوصي بذاكرة عشوائية لا تقل عن 16 جيجابايت أو وحدة معالجة رسومات بذاكرة فيديو تبلغ 8 جيجابايت لتشغيل نموذج 7B.
س هل يدعم Ollama تسريع وحدة المعالجة الرسومية (GPU)؟
ج نعم. يستخدم macOS تلقائيًا Metal للتسريع، وتستخدم Linux/Windows تلقائيًا تسريع CUDA عند اكتشاف وحدة معالجة رسومات NVIDIA. لا يلزم أي إعداد إضافي.

📖 ملخص


📝 تمارين

الأساسيات (⭐)

ثبّت Ollama وأنزل نموذجًا، ثم أجرِ محادثة في سطر الأوامر:

BASH
# Step 1: Install Ollama from https://ollama.com

# Step 2: Download a model
ollama pull llama3

# Step 3: Start a chat
ollama run llama3

# >>> Tell me three interesting facts about the planet Mars.

# Step 4: List installed models
ollama list

متقدم (⭐⭐)

استخدم مكتبة ollama في بايثون لاستدعاء نموذج محلي للترجمة وتنفيذ مترجم تفاعلي:

PYTHON
import ollama

def interactive_translator():
    print("Local AI Translator (type 'quit' to exit)")
    print("-" * 40)
    while True:
        text = input("EN> ")
        if text.lower() == "quit":
            break
        response = ollama.chat(
            model="llama3",
            messages=[
                {
                    "role": "user",
                    "content": f"Translate to Chinese, only output the translation:\n\n{text}",
                },
            ],
        )
        print(f"CN> {response['message']['content']}\n")

interactive_translator()

تحدٍّ (⭐⭐⭐)

قارن الفروقات في المخرجات بين النموذج المحلي وواجهة برمجة التطبيقات السحابية لنفس التوجيه، واكتب تقرير تحليل:

PYTHON
import ollama
from openai import OpenAI
import time

PROMPT = """Analyze the following customer review and extract:
1. Sentiment (Positive/Negative/Neutral)
2. Key complaint or praise
3. Suggested action for the company

Review: "The headphones sound amazing but the Bluetooth keeps disconnecting every 10 minutes. I have to restart them constantly. Great audio quality but unusable for calls."
"""

def compare_outputs():
    # Local model
    start = time.time()
    local = ollama.chat(
        model="llama3",
        messages=[{"role": "user", "content": PROMPT}],
    )
    local_time = time.time() - start
    local_text = local["message"]["content"]

    # Cloud API
    client = OpenAI()
    start = time.time()
    cloud = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": PROMPT}],
    )
    cloud_time = time.time() - start
    cloud_text = cloud.choices[0].message.content

    print("PROMPT:", PROMPT[:80], "...")
    print("=" * 60)
    print(f"[Local - {local_time:.1f}s]\n{local_text}")
    print("=" * 60)
    print(f"[Cloud - {cloud_time:.1f}s]\n{cloud_text}")
    print("=" * 60)

    # TODO: Write a brief analysis comparing:
    # - Accuracy of sentiment extraction
    # - Completeness of key points
    # - Actionability of suggestions
    # - Response time difference

compare_outputs()
Web-Tutorial.com

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

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

100%