Диагностика Mock-интервью
Главная · LLM: обучение и инференс

Оценка LLM: бенчмарки и LLM-as-judge

У задачи «напиши письмо клиенту» нет единственного правильного ответа — поэтому оценивать LLM сложнее, чем классификатор. Разбираем бенчмарки и их болезни, арены с Elo, LLM-судей с их предвзятостями и то, как строить eval под собственный продукт.

Интуиция: почему это сложно

В классическом ML есть точный ответ: метка класса, число. У генеративной модели ответов-«правильных» — бесконечно много, а «хорошесть» многомерна: фактическая точность, полнота, тон, безопасность, следование формату. Accuracy тут не посчитаешь в лоб, и индустрия выработала целую лестницу компромиссов между дешевизной и достоверностью оценки.

Автоматические бенчмарки и их болезни

Первый этаж — бенчмарки (benchmarks) с проверяемыми ответами: MMLU (тесты с выбором варианта по 57 предметам), GSM8K (школьные математические задачи с числовым ответом), HumanEval (генерация кода, проверяемая юнит-тестами). Дёшево, воспроизводимо, удобно сравнивать. Но у бенчмарков две хронические болезни:

Второй этаж — лидерборды на людских предпочтениях: LMArena показывает пользователю два анонимных ответа, тот голосует за лучший, а из миллионов парных сравнений считается рейтинг Elo (как в шахматах). Это устойчивее к контаминации, но меряет «что нравится людям в чате», а не качество на вашей задаче.

LLM-as-judge и его предвзятости

Люди — дорого и медленно, поэтому ответы всё чаще оценивает сильная LLM: судья (LLM-as-judge) получает вопрос, пару ответов и рубрику, а выдаёт вердикт. Дёшево и масштабируемо, но судья систематически предвзят:

Поэтому судью обязательно калибруют: сравнивают его вердикты с человеческими на размеченном сете, прогоняют каждую пару дважды с переставленными A и B (если вердикт перевернулся — это position bias), проверяют корреляцию вердикта с длиной ответа.

💡 Ключевая мысль LLM-судья — это тоже модель, и его нужно оценивать так же, как основную: меряй agreement с людьми на золотом сете и обязательно проверяй перестановкой A/B. Некалиброванный судья измеряет свои предвзятости, а не качество твоего продукта.

Как строить eval под свой продукт

Публичные бенчмарки не ответят, хорошо ли ваш бот отвечает вашим пользователям. Рабочий рецепт:

Человеческая оценка остаётся золотым стандартом — ею калибруют судью и принимают спорные решения, но целиком на ней жить дорого. И везде нужна статистическая честность: на 20 примерах разница «71% против 68%» — шум; считайте доверительные интервалы или хотя бы держите сеты в сотни примеров.

⚠️ Подводный камень Самая частая ошибка — поверить некалиброванному судье. Команда радуется «+5% качества», а на деле новый промпт просто делает ответы длиннее, и length bias судьи засчитывает это как улучшение. Минимальная защита: замер agreement судьи с людьми на золотом сете и контрольный прогон с переставленными A/B.
🎤 На собеседовании
  • «Как поймёшь, что бенчмарк контаминирован?» — подозрительно высокий результат при слабости на свежих/перефразированных задачах того же типа; проверка n-грамм тренировочного корпуса.
  • «Какие biases у LLM-судьи и как их ловить?» — position (прогон с перестановкой A/B), length (корреляция вердикта с длиной), self-preference (сравнить судей разных семейств).
  • «Как оценивать LLM-фичу в проде?» — золотой сет из реальных запросов, рубрики, LLM-судья, калиброванный по людям, регрессионные прогоны на каждый релиз.
  • «Модель А выиграла у B 6 из 10 сравнений — она лучше?» — нет, выборка ничтожна: доверительный интервал накрывает 50/50.