Свободные рассуждения про оценку качества моделейЗемную жизнь пройдя до половины и очутившись в сумрачном лесу после двух с лишним лет прогона сжатых моделей на бенчах из lm-eval-harness я задался таки вопросом:
а что мы собственно замеряем таким образом?
В нижеприведенных рассуждениях я не планирую погружаться в дебри дискуссий про то, что есть AGI, а чем он не является, а лишь сугубо попытаться соотнести академические бенчмарки применению на практике.
Большинство бенчмарков относятся к одной из 2 категорий:
1️⃣
Likelihood запросы. Есть вопрос, варианты ответа и тот, у которого правдоподобие максимальное выбирается в качестве предсказания модели и сопоставляется с правильным.
2️⃣
Генеративные запросы. На основе некоторого промпта и инструкции модель генерирует ответ. Далее происходит парсинг и то, что удалось вычленить сопоставляется с тем, что надо.
👍
Likelihood запросыК первой категории относится, пожалуй, большинство задач (
ArcEasy, ArcChallenge (не тот Arc!),
HellaSwag,
Winogrande,
MMLU,
MMLU-Pro и многие другие). Достоинством такого подхода является
дешевизна 💲 прогона, так как по сути достаточно одного прогона модели для получения вероятностей токенов ответа. При этом общий префикс можно переиспользовать для разных вариантов, т.к запрос имеет вид:
{условие}{вариант_ответа}
Где вариант ответа - обычно одно слово, а то и одна буква (в случае
MMLU). Кроме того, проверить или истинность ответа можно однозначно.
Существенным недостатком данного подхода же является неочевидная связь между умением модели справляться с данными задачами и генерацией текста в свободной форме.
Например, в MMLU шаблон имеет следующий вид:
{условие}
{вариант ответа - A}
{вариант ответа - B}
{вариант ответа - C}
{вариант ответа - D}
Правильный ответ: [A, B, C, D]То есть бенчмарк проверяет то, насколько хорошо по контексту модель может угадать букву
A, B, C, D. Из этого сложно сделать вывод, насколько адекватно она будет писать ответ в свободной форме на те же самые вопросы. И результат во многом будет определяться тем
сколько теста оказалось в трейне , насколько модель умеет вписываться в шаблон подобного вида.
🧞♂️
Генеративные запросыДанный вид задач (
GSM-8k,
BigBenchHard,
IFEval,
ArenaHard) гораздо ближе к реальным приложениям, так по существу представляет ту же самую авторегрессионную генерацию.
Основная сложность - в оценке ответов модели. В случае
GSM8k/IFEval определены некоторые регулярные выражения, которые вычленяют ответ (скажем, решение математической задачи или выполнена ли требуемая инструкция), но ввиду высокой вариативности возможных ответов не всегда можно гарантировать обнаружение правильного ответа.
В AlpacaEval, ArenaHard судьей выступает
другая LLM 🤖, но здесь приходится полагаться на качество судьи (который не совершенен) и имеет свои biasы,
нюансы и предпочтения при оценке ответа. Кроме того, замеры стоят денег)
И в конце концов -
LMSYS arena (и иные side-by-side comparison), где качество оценивают уже человеки. Такая стратегия оценивает широкий спектр способностей модели, и вроде бы ориентирована на конечного пользователя. Но таким образом можно оценивать уже конечную модель, а для промежуточных экспериментов выходит чрезмерно накладно. Кроме того, даже
LMSYS хакается ввиду предпочтений пользователей к более длинными ответам, удовлетвоояющим некоторому формату.
ВыводОценка качества моделей -
сложный вопрос, и цифры на бенчах могут служить лишь
первым приближением при выборе LLMки для своих нужд. Окончательный выбор стоит делать исходя из целевой задачи, протестировав самому на релевантных примерах. А в идеале собрать собственный бенч и регулярно его обновлять. Рекомендую
отличный пост от Игоря Котенкова на данную тему.