smevals؛ فریمورکی برای ارزیابی مدلهای کوچیک
خلاصهٔ کاملتر
پروژهٔ smevals یه فریمورک متنبازه برای اجرای eval روی مدلهای زبانی کوچیک (و بزرگ). تو مستنداتش اومده که هدف، ساختن یه واژگان مشخص برای سنجش مدلهاست: بالاترین مفهوم Eval ـه، یعنی مجموعهای از Task ها که یه قابلیت سطحبالا مثل text-to-SQL یا بررسی تطابق یه پیادهسازی با مشخصات رو میسنجن. نصبش هم با uv tool install smevals یا pip install smevals انجام میشه.
هر Eval یه پوشهست که فایل eval.yaml داره و کنارش پوشههای tasks/، configs/، graders/ و checkers/ میشینن. یه Config مشخص میکنه هر Task با چه مدل و تنظیماتی اجرا بشه و به یه Runner اشاره میکنه؛ Runner فقط یه برنامهٔ اجرایی CLI ـه که ورودیهاش رو از متغیرهای محیطی مثل SMEVALS_MODEL و SMEVALS_PROMPT میگیره و جواب مدل رو روی خروجی استاندارد چاپ میکنه:
name: default
runner: ../run-llm
model: gpt-4.1-miniهر بار اجرای یه Task با یه Config میشه یه Run، یعنی یه رکورد تغییرناپذیر که روی دیسک میمونه؛ با گزینهٔ -n میشه هر Task رو تا چند Run پر کرد تا اثر ناپایداری خروجی مدل کم بشه. اگه Runner با کد غیرصفر تموم بشه، اون Run «failed» حساب میشه — یعنی خطای زیرساخت، نه شاهدی دربارهٔ خود مدل — پس نمره نمیگیره، تو گزارشها نمیاد و به سقف -n هم حساب نمیشه.
نمرهگذاری با Grader انجام میشه: یه دنبالهٔ Check که هرکدوم یه Checker رو صدا میزنن، از موارد آمادهٔ ساده مثل contains و xml-valid تا اسکریپتهای دلخواه، مثلاً رندر کردن SVG و بعد قضاوت تصویرش با یه LLM. Check ها یه پوشهٔ کاری مشترک دارن، پس فایلی که یکی میسازه برای بعدی هم در دسترسه و به عنوان artifact کنار نمره میمونه. چون Run ها جدا از Grade ذخیره میشن، بعداً میشه Grader رو عوض کرد و بدون اجرای دوبارهٔ مدل، همون Run های قبلی رو دوباره نمره داد.
برای مرور نتیجهها هم سه راه هست: یه گزارش Markdown با ردهبندی مدلها و میانگین بههمراه خطای استاندارد، یه رابط وب زنده که دادههاش رو هر بار از دیسک میخونه، و خروجی گرفتن همون رابط به شکل یه سایت استاتیک خودکفا که میشه Eval های چند مخزن مختلف رو کنار هم توش جمع کرد.
نکات کلیدی:
- smevals واژگان Eval، Task، Config، Run، Grader و Check رو برای ارزیابی مدلها استاندارد میکنه
- Runner و Checker فقط برنامهٔ اجراییان و با متغیرهای محیطی کار میکنن، پس با هر زبونی نوشته میشن
- Run ها تغییرناپذیرن و جدا از نمره ذخیره میشن، پس نمرهگذاری دوباره بدون اجرای مجدد مدل ممکنه
- Run شکستخورده خطای زیرساخت حساب میشه، نمره نمیگیره و از گزارشها کنار میره
- گزارش Markdown، رابط وب زنده و خروجی سایت استاتیک برای دیدن نتایج




