الدرس 2 من 22

لماذا نماذج اللغة المحلية؟

مقايضات المحلي مقابل API

3 دقيقة للقراءة

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

مصفوفة القرار

┌─────────────────────────────────────────────────────────────────┐
│                   مصفوفة قرار المحلي مقابل API                   │
├───────────────────┬──────────────────┬──────────────────────────┤
│ العامل            │ يفضل المحلي      │ يفضل واجهة API السحابية  │
├───────────────────┼──────────────────┼──────────────────────────┤
│ حساسية البيانات   │ عالية/منظمة      │ عامة/غير حساسة           │
│ الحجم             │ عالي (>10 آلاف/يوم)│ منخفض (<1 ألف/يوم)      │
│ احتياجات زمن الاستجابة│ ثابت <500 مللي ثانية│ متغير مقبول         │
│ الميزانية         │ نفقات رأسمالية متاحة│ تفضل النفقات التشغيلية │
│ خبرة الفريق       │ قادر على عمليات ML │ معرفة ML محدودة        │
│ متطلبات النموذج   │ مهام قياسية      │ متطور مطلوب              │
│ النشر            │ محلي/على الحافة   │ سحابي أصلي               │
└───────────────────┴──────────────────┴──────────────────────────┘

مقارنة مفصلة

قدرات النموذج

# المهمة: استدلال معقد متعدد الخطوات
# واجهات API السحابية لا تزال تتصدر هنا

# GPT-4 - ممتاز في الاستدلال المعقد
response = openai.chat.completions.create(
    model="gpt-4-turbo",
    messages=[{
        "role": "user",
        "content": """حلل هذا العقد القانوني من حيث:
        1. المسؤوليات المحتملة
        2. البنود غير العادية
        3. الأحكام القياسية المفقودة
        4. توصيات للتفاوض"""
    }]
)

# Llama 3.2 70B - جيد جداً، لكن قد يحتاج مزيد من التوجيه
response = ollama.chat(
    model="llama3.2:70b",
    messages=[{
        "role": "user",
        "content": """أنت محلل عقود.
        فكر خطوة بخطوة.

        حلل هذا العقد القانوني من حيث:
        1. المسؤوليات المحتملة
        2. البنود غير العادية
        3. الأحكام القياسية المفقودة
        4. توصيات للتفاوض

        العقد: ..."""
    }]
)

متطلبات العتاد

تعيين حجم النموذج للعتاد:
───────────────────────────────────────────────────────
حجم النموذج   │ VRAM المطلوب  │ مثال العتاد
───────────────────────────────────────────────────────
1-3B          │ 2-4 GB       │ أي لابتوب حديث
7-8B          │ 6-8 GB       │ RTX 3060, M1 Pro
13B           │ 10-12 GB     │ RTX 3080, M2 Pro
30-34B        │ 20-24 GB     │ RTX 4090, M2 Max
70B           │ 40-48 GB     │ A100 40GB, 2x RTX 4090
70B (Q4)      │ 35-40 GB     │ M3 Max 64GB, A6000
───────────────────────────────────────────────────────

للرجوع:
- MacBook Air M3: حتى نماذج 8B بشكل مريح
- MacBook Pro M3 Max: حتى 70B مكمم
- كمبيوتر ألعاب (RTX 4090): حتى 30B كامل، 70B مكمم
- GPU سحابي (A100): أي حجم نموذج

تحليل التكلفة عبر الزمن

التكلفة الإجمالية للملكية لـ 5 سنوات:
────────────────────────────────────────────

السيناريو أ: 50,000 استعلام/يوم

واجهة API سحابية (GPT-4 Turbo):
├── السنة 1: $90,000
├── السنة 2: $90,000
├── السنة 3: $90,000
├── السنة 4: $90,000
├── السنة 5: $90,000
└── المجموع: $450,000

نموذج لغة محلي (مجموعة 4x A100):
├── السنة 1: $60,000 (عتاد) + $12,000 (عمليات)
├── السنة 2: $12,000
├── السنة 3: $12,000 + $30,000 (ترقية)
├── السنة 4: $12,000
├── السنة 5: $12,000
└── المجموع: $150,000

التوفير: $300,000 (تخفيض 67%)

أنماط البنية الهجينة

غالباً ما تجمع أفضل الأنظمة بين الاثنين:

from enum import Enum

class ModelRouter:
    """توجيه الطلبات للمحلي أو السحابي بناءً على المتطلبات."""

    def __init__(self):
        self.local_client = ollama
        self.cloud_client = openai.OpenAI()

    def route(self, task: str, data_sensitivity: str,
              complexity: str) -> str:
        """
        تحديد النموذج الأمثل للطلب.

        Args:
            task: وصف المهمة
            data_sensitivity: "عام", "داخلي", "سري"
            complexity: "بسيط", "معتدل", "معقد"
        """
        # بيانات سرية = دائماً محلي
        if data_sensitivity == "confidential":
            return "local"

        # مهام معقدة مع بيانات غير حساسة = سحابي
        if complexity == "complex" and data_sensitivity == "public":
            return "cloud"

        # كل شيء آخر = محلي (توفير التكاليف)
        return "local"

    def query(self, prompt: str, **kwargs):
        route = self.route(**kwargs)

        if route == "local":
            return self.local_client.chat(
                model="llama3.2:8b",
                messages=[{"role": "user", "content": prompt}]
            )
        else:
            return self.cloud_client.chat.completions.create(
                model="gpt-4-turbo",
                messages=[{"role": "user", "content": prompt}]
            )

أنماط هجينة شائعة

النمط 1: بوابة البيانات الحساسة

┌─────────────────────────────────────────┐
│              طلب المستخدم               │
└───────────────────┬─────────────────────┘
┌─────────────────────────────────────────┐
│            مصنف البيانات                │
│      (كشف PII، الحساسية)                │
└───────────────────┬─────────────────────┘
          ┌─────────┴─────────┐
          │                   │
    ┌─────▼─────┐       ┌─────▼─────┐
    │  بيانات   │       │  بيانات   │
    │  حساسة    │       │  عامة     │
    └─────┬─────┘       └─────┬─────┘
          │                   │
    ┌─────▼─────┐       ┌─────▼─────┐
    │  Llama    │       │  GPT-4    │
    │  محلي     │       │  سحابي    │
    └───────────┘       └───────────┘

النمط 2: تصعيد التعقيد

┌─────────────────────────────────────────┐
│             الطلب الأولي                │
└───────────────────┬─────────────────────┘
┌─────────────────────────────────────────┐
│       نموذج لغة محلي (سريع، رخيص)       │
│              Llama 3.2 8B               │
└───────────────────┬─────────────────────┘
┌─────────────────────────────────────────┐
│            فحص الثقة                    │
│   "هل الإجابة موثوقة بما فيه الكفاية؟"  │
└───────────────────┬─────────────────────┘
          ┌─────────┴─────────┐
      عالية│                   │منخفضة
          ▼                   ▼
┌─────────────────┐  ┌─────────────────┐
│  إرجاع الإجابة  │  │  تصعيد إلى     │
│                 │  │  GPT-4 / Claude │
└─────────────────┘  └─────────────────┘

النقاط الرئيسية

عامل القرار اختيار المحلي اختيار السحابي
البيانات تغادر الشبكة غير مقبول أبداً مقبول
>10 آلاف استعلام/يوم فعال من حيث التكلفة مكلف
تحتاج جودة GPT-4+ استخدم نماذج 70B+ أفضل خيار
اتفاقية مستوى خدمة زمن استجابة <500 مللي ثانية قابل للتحقيق أصعب للضمان
لا فريق ML Ollama يجعلها سهلة أسهل للبدء

الاتجاه واضح: نماذج اللغة المحلية تصبح الافتراضية لمعظم أحمال العمل الإنتاجية، مع حجز واجهات API السحابية للقدرات المتطورة. :::

اختبار

الوحدة 1: لماذا نماذج اللغة المحلية؟

خذ الاختبار
نشرة أسبوعية مجانية

ابقَ على مسار النيرد

بريد واحد أسبوعياً — دورات، مقالات معمّقة، أدوات، وتجارب ذكاء اصطناعي.

بدون إزعاج. إلغاء الاشتراك في أي وقت.