MLflow لتقييم LLM

مسجلو LLM المدمجون

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

MLflow يوفر مسجلين جاهزين للاستخدام لمهام تقييم LLM الشائعة. هؤلاء المسجلون يستخدمون أنماط LLM-as-Judge داخلياً لتقييم جودة الاستجابة.

المسجلون المدمجون المتاحون

المسجل ما يقيسه
answer_correctness الدقة الواقعية مقابل الإجابة المتوقعة
answer_relevance مدى ملاءمة الإجابة للسؤال
faithfulness هل الإجابة مبنية على السياق
answer_similarity التشابه الدلالي مع الإجابة المتوقعة
toxicity المحتوى الضار أو المسيء

استخدام المسجلين المدمجين

التقييم الأساسي

from mlflow.genai.scorers import (
    answer_correctness,
    answer_relevance,
    faithfulness
)
from mlflow.genai import evaluate

# إعداد بيانات التقييم
eval_data = [
    {
        "inputs": {"question": "ما هي عاصمة فرنسا؟"},
        "outputs": {"answer": "باريس هي عاصمة فرنسا."},
        "expectations": {"expected_answer": "باريس"}
    },
    {
        "inputs": {"question": "من كتب هاملت؟"},
        "outputs": {"answer": "شكسبير كتب هاملت."},
        "expectations": {"expected_answer": "وليام شكسبير"}
    }
]

# تشغيل التقييم مع المسجلين المدمجين
results = evaluate(
    data=eval_data,
    scorers=[
        answer_correctness(),
        answer_relevance(),
        faithfulness()
    ]
)

مسجل الصحة

يتحقق إذا كانت الاستجابة صحيحة واقعياً:

from mlflow.genai.scorers import answer_correctness

# المسجل يقارن outputs.answer مع expectations.expected_answer
scorer = answer_correctness()

# يُرجع درجات مثل:
# {
#     "answer_correctness": 0.95,
#     "reasoning": "الإجابة تحدد باريس بشكل صحيح كعاصمة..."
# }

مسجل الملاءمة

يقيس مدى ملاءمة الإجابة للسؤال:

from mlflow.genai.scorers import answer_relevance

scorer = answer_relevance()

# درجة عالية: الإجابة تعالج السؤال مباشرة
# درجة منخفضة: الإجابة خارج الموضوع أو ثانوية

مسجل الأمانة

لأنظمة RAG—يتحقق إذا كانت الإجابة مبنية على السياق المقدم:

from mlflow.genai.scorers import faithfulness

eval_data = [
    {
        "inputs": {
            "question": "ما هي ساعات عمل المتجر؟",
            "context": "متجرنا مفتوح من الإثنين للجمعة، 9 صباحاً حتى 6 مساءً."
        },
        "outputs": {
            "answer": "المتجر مفتوح أيام الأسبوع من 9 صباحاً حتى 6 مساءً."
        }
    }
]

results = evaluate(
    data=eval_data,
    scorers=[faithfulness()]  # يتحقق من الإجابة مقابل السياق
)

إعداد المسجلين

تخصيص سلوك المسجل:

from mlflow.genai.scorers import answer_correctness

# حدد أي نموذج يستخدم كحاكم
scorer = answer_correctness(
    model="openai:/gpt-4o",  # نموذج الحاكم
    examples=[  # أمثلة few-shot للحكم الأفضل
        {
            "question": "ما هو 2+2؟",
            "answer": "الإجابة هي 4.",
            "expected": "4",
            "score": 1.0,
            "reasoning": "إجابة صحيحة"
        }
    ]
)

دمج عدة مسجلين

تشغيل تقييمات متعددة معاً:

from mlflow.genai.scorers import (
    answer_correctness,
    answer_relevance,
    answer_similarity
)
from mlflow.genai import evaluate

results = evaluate(
    data=eval_data,
    scorers=[
        answer_correctness(),
        answer_relevance(),
        answer_similarity()
    ]
)

# الوصول إلى الدرجات الفردية
print(results.tables["eval_results"])
# يُظهر أعمدة: answer_correctness، answer_relevance، answer_similarity

عرض النتائج

النتائج تتكامل مع تتبع MLflow:

import mlflow

with mlflow.start_run():
    results = evaluate(
        data=eval_data,
        scorers=[answer_correctness()]
    )

    # المقاييس تُسجل تلقائياً
    # اعرض في واجهة MLflow أو الوصول برمجياً
    print(f"متوسط الصحة: {results.metrics['answer_correctness/mean']}")

متى تستخدم المسجلين المدمجين

حالة الاستخدام المسجلون الموصى بهم
أنظمة Q&A answer_correctness، answer_relevance
تطبيقات RAG faithfulness، answer_correctness
التلخيص answer_similarity، faithfulness
مراقبة المحتوى toxicity

نصيحة: ابدأ بالمسجلين المدمجين. أنشئ حكاماً مخصصين فقط عندما تحتاج معايير تقييم خاصة بالمجال.

التالي، سنتعلم كيفية إنشاء حكام مخصصين لاحتياجات التقييم المتخصصة. :::

اختبار

الوحدة 4: MLflow لتقييم LLM

خذ الاختبار