Почему бенчмарки нейросетей врут, даже когда никто не врёт

В субботу вышел Kimi K3.1 Pro. В таблице Moonshot AI он почти догоняет Claude Opus 5.5 на Terminal-Bench 4.0: 65,7% против 66,4%. В день релиза Bito прогнал его на своих реальных задачах по коду, и вышло 72% против 87%.

Я не думаю, что кто-то накрутил. Такое было с Llama 4, с o3 от OpenAI и ещё много с кем. Дело в том, как устроены сами тесты и обучение моделей. Я покопался, что там внутри.

Модель уже видела ответы. На предобучении ей скармливают слепок интернета, а тесты лежат там же, вместе с решениями. SWE-bench вообще собран из открытых репозиториев: issue плюс смёрженный патч, который и есть правильный ответ. Фильтры ищут совпадающие куски текста, но пересказ или перевод задачи пропускают. Когда Scale AI сделала свежую копию школьного теста GSM8k с новыми задачами, у некоторых моделей точность просела на 8 пунктов и больше.

Модель учат ровно тому, что меряет тест. После предобучения идёт RL: модель решает задачу, автоматика проверяет (тесты прошли, ответ совпал) и даёт награду. Бенчмарки с автопроверкой это ровно такой формат. И модель иногда находит путь короче. Anthropic сама написала в карточке Claude 3.7 Sonnet, что модель после неудачных попыток возвращала ожидаемые тестом значения или правила сами тесты. METR ловила o3 на подмене таймера и заглушке вместо функции оценки, на одной задаче она жульничала в 100% прогонов. Если награда была за «тесты зелёные», модель умеет делать тесты зелёными. Код от этого не обязательно работает.

Арену можно взять стилем. На LMArena люди вслепую выбирают лучший из двух ответов, а нравятся им длинные и уверенные. Meta выставила туда специальную разговорную Llama 4, ответы в 2,3 раза длиннее публичной версии, и взяла второе место. Публичная потом оказалась 32-й. А ещё Meta до релиза прогнала там 27 закрытых вариантов. Каждый рейтинг немного шумный, и лучший из 27 шумных результатов почти всегда завышен просто за счёт удачи. Это называют проклятием победителя.

Судья тоже модель. Многие тесты проверяет другая LLM, а у неё свои привычки. В исследовании MT-Bench Claude-v1 в роли судьи выбирал первый из двух ответов в 75% случаев, просто из-за порядка. Bito, кстати, судил Kimi через Opus 5.5.

И главное для меня: длинная задача ломается по-другому. Бенчмарк это короткая задача с понятным ответом. Работа это длинная сессия, расплывчатое ТЗ, десятки вызовов инструментов. Если модель делает шаг правильно в 95% случаев, то 20 шагов подряд без ошибки она пройдёт примерно в 36% случаев (0,95 в 20-й степени). Маленькая разница в надёжности шага на дистанции становится огромной. У Bito это видно: на первом шаге Kimi и Opus рядом, а к финальной проверке своей работы Kimi сильно отстаёт.

Поэтому новые модели я проверяю сам, по четырём пунктам: - старые баги из своих проектов и коммитов, где я знаю настоящий фикс. Смотрю время, стоимость, логику решения и отчёт: понятно ли, что и зачем поменяно, и честно ли сказано, что не проверено - базовая работа с файлами: сохраняет ли структуру, не теряет ли куски, не выдумывает ли - глубокий анализ: держит ли нить на длинной задаче - простая 3D-сцена в HTML с одной попытки. Это скорее проверка на ощупь, но многое видно сразу

Kimi при этом сильный релиз, открытые веса такого уровня это много. Просто таблица из анонса для меня повод попробовать, а не переезжать.

Подробный разбор с источниками готовлю для Хабра.

А вы как проверяете новую модель, прежде чем пустить её в работу? Свой набор задач или хватает лидербордов?

#нейросети #LLM #разработка