AI Observability

تسلط بر ارزیابی LLMهای چندوجهی: معیارهای سفارشی برای مدل‌های بینایی-زبانی در Braintrust

با تکامل مدل‌های زبانی بزرگ (LLM)، آن‌ها دیگر محدود به متن نیستند. ظهور مدل‌های بینایی-زبانی (VLM) مانند GPT-4V، LLaVA و Gemini Pro قابلیت‌های جدیدی را آزاد کرده و به هوش مصنوعی اجازه می‌دهد تصاویر، نمودارها و اسکرین‌شات‌ها را تفسیر کند. با این حال، ارزیابی این مدل‌ها به‌طور قابل‌توجهی پیچیده‌تر از تولید متن استاندارد است. نمی‌توانید صرفاً از امتیازات BLEU یا تطبیق رشته‌های ساده استفاده کنید. شما به ابزارهای پایش‌پذیری سفارشی و قوی نیاز دارید تا مطمئن شوید که برنامه‌های چندوجهی شما قابل اعتماد و دقیق هستند.

در این راهنما، ما بررسی خواهیم کرد که چگونه Braintrust، یک پلتفرم پیشرو در پایش‌پذیری و ارزیابی هوش مصنوعی، می‌تواند برای ارزیابی VLMها با استفاده از معیارهای سفارشی به کار گرفته شود. ما بر ایجاد معیارهای ارزیابی خاص برای وظایف بینایی، مانند دقت تشخیص اشیاء و کیفیت کپشن‌ها، تمرکز خواهیم کرد تا اطمینان حاصل کنیم که استقرار شما بر اساس داده‌های عملکردی دنیای واقعی استوار است.

چرا معیارهای استاندارد برای مدل‌های بینایی-زبانی شکست می‌خورند

معیارهای سنتی پردازش زبان طبیعی مانند Perplexity یا ROUGE برای وظایف متن‌به‌متن طراحی شده‌اند. وقتی داده‌های بصری را وارد می‌کنید، فضای ورودی عظیم و مبهم می‌شود. برای مثال، یک مدل ممکن است یک شیء را به درستی شناسایی کند، اما در توصیف رابطه فضایی آن با شیء دیگری شکست بخورد. یک بولین ساده «درست» یا «نادرست» کافی نیست.

Braintrust به توسعه‌دهندگان اجازه می‌دهد معیارهای سفارشی را تعریف کنند که با منطق تجاری خاص همخوانی دارند. این موضوع برای VLMها حیاتی است، زیرا «درستی» یک خروجی اغلب به بافت تصویر بستگی دارد. با استفاده از Braintrust، می‌توانید هم ورودی تصویر و هم خروجی متنی مدل را ثبت کنید، سپس از توابع امتیازدهی سفارشی برای ارزیابی ظرافت‌هایی که بنچمارک‌های استاندارد از آن‌ها غافل‌اند، استفاده کنید.

راه‌اندازی معیارهای سفارشی در Braintrust

API Braintrust تعریف ارزیاب‌های سفارشی را ساده می‌کند. شما می‌توانید توابع Python بنویسید که تصویر ورودی، حقیقت مرجع مورد انتظار (در صورت موجود بودن) و خروجی مدل را دریافت کرده و یک امتیاز ساختاریافته برمی‌گردانند. بیایید یک مثال عملی را بررسی کنیم: ارزیابی توانایی یک VLM در شمارش اشیاء در یک تصویر.


import braintrust
from PIL import Image
import re

def count_accuracy(input, output, ground_truth):
    """
    معیار سفارشی برای ارزیابی اینکه آیا مدل اشیاء را به درستی شمارش کرده است.
    
    Args:
    input: شیء تصویر اصلی.
    output: پاسخ متنی از VLM.
    ground_truth: تعداد شناخته‌شده اشیاء (مثلاً 5).
    
    Returns:
    یک دیکشنری با 'score' و 'reasoning'.
    """
    # استخراج اولین عدد صحیح یافت شده در خروجی مدل
    match = re.search(r'\d+', output)
    if not match:
        return {
            'score': 0,
            'reasoning': 'No number found in output.'
        }
    
    predicted_count = int(match.group())
    
    if predicted_count == ground_truth:
        return {
            'score': 1,
            'reasoning': f'Correctly identified {predicted_count} objects.'
        }
    else:
        # اعتبار جزئی اگر نزدیک بود؟ یا فقط 0 برای سخت‌گیری؟
        # اینجا از 0/1 سخت‌گیرانه استفاده می‌کنیم، اما می‌توانید از 1 - abs(diff)/max استفاده کنید
        return {
            'score': 0,
            'reasoning': f'Model predicted {predicted_count}, expected {ground_truth}.'
        }

# ثبت معیار سفارشی
braintrust.log(
    'VLM_Count_Test',
    metrics={
        'count_accuracy': count_accuracy
    }
)

پیاده‌سازی جریان کاری ارزیابی

پس از تعریف معیار سفارشی، می‌توانید یک ارزیابی را در سراسر مجموعه‌ای از تصاویر اجرا کنید. Braintrust به‌طور خودکار هزینه، تأخیر و مصرف توکن هر درخواست را ردیابی می‌کند و به شما یک نمای جامع از عملکرد VLM خود ارائه می‌دهد. در اینجا نحوه ساختاردهی اجرای ارزیابی آورده شده است:


import base64

def encode_image(image_path):
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode('utf-8')

# ساختار نمونه مجموعه داده
dataset = [
    {
        "input": {
            "image": "path/to/dogs.jpg",
            "prompt": "How many dogs are in this image?"
        },
        "expected": 3
    },
    {
        "input": {
            "image": "path/to/cats.png",
            "prompt": "How many cats are in this image?"
        },
        "expected": 1
    }
]

def model_call(input):
    # فرض بر این است که یک نقطه پایانی VLM سازگار با OpenAI دارید
    image_b64 = encode_image(input['image'])
    
    response = openai.chat.completions.create(
        model="gpt-4-vision-preview",
        messages=[
            {
                "role": "user",
                "content": [
                    {"type": "text", "text": input['prompt']},
                    {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{image_b64}"}},
                ],
            }
        ],
    )
    return response.choices[0].message.content

# اجرای ارزیابی
braintrust.run(
    "VLM_Count_Eval",
    tasks=dataset,
    model=model_call,
    metrics={
        'count_accuracy': count_accuracy,
        'latency': braintrust.latency,
        'cost': braintrust.cost
    }
)

بصری‌سازی نتایج و تکرار

پس از اجرای ارزیابی، داشبورد Braintrust معیار سفارشی count_accuracy شما را در کنار هزینه و تأخیر نمایش می‌دهد. می‌توانید نتایج را فیلتر کنید تا ببینید مدل در چه نوع تصاویری با مشکل مواجه است. شاید عملکرد خوبی در عکس‌های استودیویی واضح داشته باشد، اما در نمای خیابان‌های واقعی و پر از نویز شکست بخورد. این بینش ریزدانه برای بهبود مهندسی پرامپت یا تنظیم دقیق مدل شما بی‌ارزش است.

نتیجه‌گیری

ارزیابی مدل‌های بینایی-زبانی نیازمند عبور از معیارهای عمومی پردازش زبان طبیعی است. با بهره‌گیری از سیستم معیارهای سفارشی انعطاف‌پذیر Braintrust، توسعه‌دهندگان می‌توانند خطوط لوله ارزیابی ایجاد کنند که خاص مورد استفاده آن‌ها هستند. چه در حال شمارش اشیاء باشید، چه استخراج متن از اسکرین‌شات‌ها، یا تفسیر تصاویر پزشکی، معیارهای سفارشی دقت مورد نیاز برای اعتماد به هوش مصنوعی شما در محیط تولید را فراهم می‌کنند. با تعریف معیارهای موفقیت خود شروع کنید، ارزیاب سفارشی خود را کدگذاری کنید و بگذارید داده‌ها بهینه‌سازی شما را هدایت کنند.

Share: