تحسين استخدام نماذج اللغات الكبيرة مع RouteLLM: دليل شامل

يُعدّ RouteLLM إطارًا مرنًا لتقديم وتقييم مُوجِّهات نماذج اللغات الكبيرة (LLM routers)، مصممًا لتعظيم الأداء مع تقليل التكلفة. يُتيح لك هذا الإطار تحقيق التوازن الأمثل بين جودة الاستجابة وتكلفة استخدام نماذج اللغات الكبيرة، سواء كانت مفتوحة المصدر أو تجارية.

الميزات الرئيسية لـ RouteLLM:

  • التكامل السلس: يعمل RouteLLM كبديل مباشر لعميل OpenAI أو كخادم متوافق مع OpenAI، حيث يقوم بتوجيه الاستفسارات البسيطة ذكيًا إلى نماذج أرخص.
  • موجهات مُدرّبة مسبقًا: يُقلل RouteLLM من التكلفة بنسبة تصل إلى 85% مع الحفاظ على 95% من أداء GPT-4 على معايير مقارنة واسعة الانتشار مثل MT-Bench.
  • التميز من حيث التكلفة: يُطابق أداء العروض التجارية الرائدة مع كونه أرخص بنسبة تزيد عن 40%.
  • قابليّة التوسيع والتخصيص: يُمكنك بسهولة إضافة موجهات جديدة، وضبط العتبات، ومقارنة الأداء عبر معايير متعددة.

دليل عملي باستخدام RouteLLM:

1. التثبيت والتكوين:

  • تثبيت التبعيات:
    pip install "routellm[serve,eval]"
  • مفتاح API الخاص بـ OpenAI: احصل على مفتاح API الخاص بك من https://platform.openai.com/settings/organization/api-keys. قد تحتاج إلى إضافة تفاصيل الفوترة وإجراء دفع أولي بقيمة 5 دولارات على الأقل.
  • تحميل ملف التكوين: يُستخدم RouteLLM ملف تكوين لتحديد نقاط فحص المُوجِّهات المُدرّبة مسبقًا ومجموعات البيانات التي تم تدريبها عليها.
    wget https://raw.githubusercontent.com/lm-sys/RouteLLM/main/config.example.yaml

    لا تحتاج إلى تعديل هذا الملف إلا إذا كنت ترغب في تدريب مُوجِّه خاص بك أو استبدال خوارزمية التوجيه.

2. تهيئة مُتحكم RouteLLM:

يُدار توجيه الاستفسارات بين النماذج من خلال مُتحكم RouteLLM. سنستخدم هنا مُوجِّه Matrix Factorization (mf) كمثال:

import os
import pandas as pd
from routellm.controller import Controller

os.environ['OPENAI_API_KEY'] = getpass('Enter OpenAI API Key: ') # أدخل مفتاح API الخاص بك

client = Controller(
    routers=["mf"],  # مُوجِّه Matrix Factorization
    strong_model="gpt-5",  # نموذج قوي (باهظ الثمن)
    weak_model="o4-mini"  # نموذج ضعيف (أرخص)
)

3. معايرة العتبة:

يُحدد هذا الأمر عتبة مثالية لتوجيه الاستفسارات إلى النموذج القوي أو الضعيف بناءً على نسبة مئوية محددة:

python -m routellm.calibrate_threshold --routers mf --strong-model-pct 0.1 --config config.example.yaml

سيُحدد هذا الأمر عتبة مثالية (مثلاً 0.24034) لتحقيق التوازن بين التكلفة والجودة.

4. تعريف الاستفسارات واختبارها:

سنستخدم مجموعة من الاستفسارات ذات مستويات تعقيد مختلفة لاختبار الأداء:

threshold = 0.24034
prompts = [
    # استفسارات بسيطة
    "من كتب رواية الكبرياء والتحامل؟",
    "ما هو أكبر كوكب في نظامنا الشمسي؟",
    # استفسارات متوسطة
    "إذا انطلقت قطار الساعة 3 مساءً بسرعة 60 كم/ساعة، فكم كيلومتراً يقطع بحلول الساعة 6:30 مساءً؟",
    # استفسارات معقدة
    "اكتب مقطع راب مكون من 6 أسطر عن تغير المناخ باستخدام القافية الداخلية.",
    # استفسارات توليد كود
    "اكتب دالة بايثون للتحقق مما إذا كانت سلسلة معينة هي كلمة متناظرة، مع تجاهل علامات الترقيم والمسافات."
]

5. تقييم معدل الفوز:

يُحسب معدل الفوز لكل استفسار باستخدام batch_calculate_win_rate:

win_rates = client.batch_calculate_win_rate(prompts=pd.Series(prompts), router="mf")

هذا يُحدد احتمالية تفوق النموذج القوي على النموذج الضعيف لكل استفسار.

6. توجيه الاستفسارات:

نُوجّه الاستفسارات عبر المُوجِّه المُعايرة باستخدام العتبة المُحددة:

results = []
for prompt in prompts:
    response = client.chat.completions.create(
        model=f"router-mf-{threshold}",
        messages=[{"role": "user", "content": prompt}]
    )
    # ... (حفظ النتائج)

هذا سيوضح لنا أي نموذج (قوي أو ضعيف) تم استخدامه لكل استفسار.

الخاتمة:

يُقدم RouteLLM حلاً فعالاً لتقليل تكلفة استخدام نماذج اللغات الكبيرة مع الحفاظ على جودة الاستجابات. يُمكنك من خلال هذا الدليل تطبيق RouteLLM بفعالية لتحقيق أقصى استفادة من نماذج اللغات الكبيرة. لا تتردد في زيارة صفحة GitHub الخاصة بنا لمزيد من الدروس البرمجية ودفاتر الملاحظات.

المصدر: MarkTechPost