الدرس 3 من 23

أساسيات تصميم أنظمة الذكاء الاصطناعي

مفاهيم قابلية التوسع

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

تواجه أنظمة الذكاء الاصطناعي تحديات توسع فريدة. استدعاءات LLM بطيئة ومكلفة ومحدودة المعدل. فهم كيفية التوسع بفعالية أمر حاسم لمقابلات تصميم الأنظمة.

التوسع الأفقي مقابل الرأسي

نوع التوسع كيف يعمل مثال نظام ذكاء اصطناعي
رأسي آلات أكبر GPU أكبر لاستدلال أسرع
أفقي آلات أكثر عدة نسخ API خلف موازن الحمل

لأنظمة الذكاء الاصطناعي، التوسع الأفقي مفضل عادةً لأن:

  • مزودي LLM لديهم حدود معدل لكل مفتاح API
  • يمكنك استخدام مزودين متعددين في وقت واحد
  • الأعطال معزولة في نسخ فردية

المقاييس الرئيسية

زمن الاستجابة

الوقت من الطلب إلى الاستجابة.

طلب المستخدم → بوابة API → استدعاء LLM → المعالجة اللاحقة → الاستجابة
      │              │            │              │            │
      └──────────────┴────────────┴──────────────┴────────────┘
                           إجمالي زمن الاستجابة

تفصيل زمن استجابة AI النموذجي:

  • عبء API: 10-50 مللي ثانية
  • استدلال LLM: 500 مللي ثانية - 5 ثوانٍ (يعتمد على النموذج والرموز)
  • المعالجة اللاحقة: 10-100 مللي ثانية

الإنتاجية

الطلبات المُعالجة في الثانية.

# حساب حدود الإنتاجية
llm_latency_seconds = 2  # متوسط وقت استجابة LLM
concurrent_requests = 10  # الطلبات المتوازية المسموحة

max_throughput = concurrent_requests / llm_latency_seconds
# = 5 طلبات في الثانية لكل نسخة

التكلفة لكل استعلام

غالباً المقياس الأهم لأنظمة الذكاء الاصطناعي.

المكون عامل التكلفة
رموز الإدخال $0.01-0.03 لكل 1000 رمز (GPT-4)
رموز الإخراج $0.03-0.06 لكل 1000 رمز (GPT-4)
التضمين $0.0001 لكل 1000 رمز
قاعدة البيانات المتجهة $0.05-0.20 لكل مليون متجه/شهر

استراتيجيات التوسع

1. تجميع الطلبات

جمع طلبات متعددة في استدعاء LLM واحد.

# بدلاً من 10 استدعاءات منفصلة
for query in queries:
    response = llm.complete(query)

# تجميعها في استدعاء واحد
combined_prompt = "\n---\n".join([
    f"الاستعلام {i}: {q}" for i, q in enumerate(queries)
])
batch_response = llm.complete(combined_prompt)

2. توجيه النموذج

استخدم نماذج أرخص للمهام البسيطة.

def route_to_model(query: str) -> str:
    complexity = estimate_complexity(query)

    if complexity == "simple":
        return "gpt-3.5-turbo"  # سريع، رخيص
    elif complexity == "medium":
        return "gpt-4-turbo"    # متوازن
    else:
        return "gpt-4"          # أفضل جودة

3. التخزين المؤقت

تخزين الاستعلامات المتطابقة أو المتشابهة.

معدلات إصابة التخزين المؤقت في الإنتاج:

  • المطابقة التامة: 20-40% معدل إصابة
  • التخزين المؤقت الدلالي: 40-60% معدل إصابة

4. المعالجة غير المتزامنة

لا تحجب على العمليات البطيئة.

# متزامن (يحجب)
result = await llm.complete(prompt)  # انتظر ثانيتين

# غير متزامن مع طابور
job_id = queue.enqueue(llm.complete, prompt)
return {"status": "processing", "job_id": job_id}
# العميل يستعلم عن النتيجة

تحديد الاختناقات

في المقابلات، حدد الاختناق دائماً:

الاختناق العَرَض الحل
حدود معدل LLM أخطاء 429 مفاتيح API متعددة، احتياطي مزود
زمن استجابة LLM استجابات بطيئة البث، التخزين المؤقت، نماذج أصغر
قاعدة البيانات المتجهة استرجاع بطيء تحسين الفهرس، التجزئة
الذاكرة أخطاء OOM البث، التصفح

بعد ذلك، سنتعلم إطاراً منظماً للتعامل مع أي مشكلة تصميم. :::

اختبار

الوحدة 1: أساسيات تصميم أنظمة الذكاء الاصطناعي

خذ الاختبار