Как бенчмаркать ИИ: проблемы стандартных тестов и свой подход в Kodik

Как бенчмаркать ИИ: проблемы стандартных тестов и свой подход в Kodik

Одна из главных сложностей в работе с большими языковыми моделями — понять, какая из них на самом деле способнее. Создатели моделей активно рекламируют свои достижения, но за громкими заявлениями и цифрами часто скрывается хайп. Как выйти за его пределы и получить объективную картину?

Проблема 1: лукавая цифра

В официальных анонсах новых LLM часто приводят впечатляющие цифры, якобы доказывающие превосходство. Но эти данные могут вводить в заблуждение.

Например, в презентации GPT-5 число 52.8 магическим образом оказывалось «лучше», чем 69.1 у предыдущей версии — без пояснений. Даже без таких явных манипуляций графики часто искажаются: ось Y начинается не с нуля, и разница между 81% и 83% выглядит катастрофической.

Кроме того, компании показывают только те бенчмарки, по которым модель выглядит хорошо. Это не ложь, но и не полная картина.

Проблема 2: что они вообще считают?

Часто можно увидеть заявления вроде: «Модель лидирует в Humanity’s Last Exam, TerminalBench и GDPval». Но что эти бенчмарки измеряют?

  • Humanity’s Last Exam — знания по биологии, математике и другим наукам
  • TerminalBench — выполнение задач в терминале
  • GDPval — решение задач из популярных профессий

Если вы используете модель для написания кода, насколько важны её успехи в биологии или бухгалтерии? Такие тесты могут быть нерелевантны и только мешать оценке.

Даже TerminalBench, оценивающий работу в терминале, проверяет конкретные задачи — например, «найди лучший ход за белых» на шахматной доске. Но поможет ли это в реальной разработке?

Проблема 3: data contamination

Популярные бенчмарки со временем попадают в обучающие датасеты. Модели могут «зазубрить» правильные ответы, не понимая сути — как студент, выучивший экзаменационные вопросы.

Создатели бенчмарков пытаются бороться с этим. Например, в GPQA прямо просят не публиковать примеры из датасета. Но гарантировать соблюдение этого невозможно.

Проблема 4: ангажированность

Когда компания представляет новую модель, она часто использует собственный бенчмарк. Cursor, например, тестирует Composer с помощью CursorBench. Это логично, но вызывает вопросы: не «подкручен» ли тест под свою модель?

Ещё хуже — скрытая ангажированность. OpenAI представила результаты в бенчмарке FrontierMath, который позже оказался профинансирован самой OpenAI. Связь не была раскрыта, что вызвало скандал и потерю доверия.

Проблема 5: benchmaxxing

Когда создатели моделей знают, какие бенчмарки будут использоваться, они оптимизируют под них — не ради реального улучшения, а ради высоких цифр.

Это как гонка мегапикселей в камерах: модель становится сильнее в узких задачах, но в реальной работе может «превратиться в тыкву».

В результате, как отметил ИИ-исследователь Андрей Карпатый, доверие к публичным бенчмаркам падает. Но вопрос «какая модель лучше» остаётся.

Что с этим делать?

Решение — внутренние, закрытые бенчмарки. У них есть ключевые преимущества:

  • Модели не оптимизированы под них заранее
  • Оцениваются именно те навыки, которые важны для вашей задачи
  • Датасет не попадает в обучающие выборки
  • Нет давления со стороны крупных компаний

Создание такого бенчмарка — непростая задача, но для компаний, зависящих от ИИ, она оправдана.

KodikBenchmark: наш подход

Мы разрабатываем редактор кода с ИИ, поэтому нам важно понимать, как модели помогают пользователям в реальных сценариях. Вот как мы подошли к созданию KodikBenchmark.

1. Что мы хотим узнать?

Нас интересует не общий кругозор, а способность модели решать практические задачи в контексте разработки. Мы не проверяем знание ареала серой цапли, а смотрим, как ИИ помогает писать, читать и исправлять код.

Кроме того, мы оцениваем не ответы, а действия. Наш бенчмарк тестирует модели в агентском режиме — когда ИИ должен действовать, а не рассуждать.

2. На каких задачах проверять?

Задачи максимально приближены к реальности. Мы используем не псевдокод и не отдельные строки, а маленькие, но целостные проекты с реальными ошибками.

Промпты формулируются на живом языке: «Сделай так, чтобы проект успешно собирался». Модель должна сама разобраться, что делать, и итерироваться до успеха или исчерпания ресурсов.

Так мы проверяем не абстрактные умения, а практическую пользу.

3. Что значит «лучше»?

«Лучше» — это не только количество решённых задач. Важны и другие метрики:

  • Success rate — доля задач, которые модель выполнила
  • Iteration score — общая оценка, учитывающая эффективность
  • Время выполнения
  • Количество потраченных токенов
  • Количество вызовов инструментов

Для разных пользователей «лучшая» модель может быть разной: кто-то ценит скорость, кто-то — экономию токенов. Поэтому мы смотрим на всё, а не на одну цифру.

4. Как правильно считать?

Наша оценка учитывает не только успех, но и путь к нему. Если модель быстро находит решение — это плюс. Если «ходит кругами» и тратит ресурсы — баллы снижаются.

Формула не раскрывается, потому что:

  • Нет «единственно верной» формулы — разные веса дают разные результаты
  • Модель не должна знать, как её оценивают, иначе возможен reward hacking — обходные пути к высоким баллам без реального решения

Мы даём модели только задачу, а не критерии оценки. Так мы видим, насколько хорошо её создатели развивают нужные навыки.

Также мы устанавливаем «потолок» наград за действия — чтобы нельзя было, например, тысячу раз вызвать один инструмент и получить максимум баллов.

5. Как правильно запускать?

Все модели тестируются в одинаковых условиях. Мы используем Docker-контейнеры, чтобы избежать влияния различий в железе.

Среда максимально приближена к реальной разработке: в ней есть ОС, рантаймы, менеджеры пакетов, системы сборки и фреймворки тестирования.

Проекты в бенчмарке используют разные технологические стеки — мы не хотим тестировать модели только на одном фреймворке.

Результаты бенчмарка

Мы протестировали актуальные модели, включая свежую GLM-5.1 от Z.ai. Вот ключевые метрики:

Success rate
Iteration score
Average iterations
Time per project
Tokens spent
Tool calls

Модели в тесте:

anthropic/claude-opus-4.6
anthropic/claude-sonnet-4.6
z-ai/glm-5.1
z-ai/glm-5
anthropic/claude-sonnet-4.5
moonshotai/kimi-k2.5
openai/gpt-5.4
openai/gpt-5.3-codex
google/gemini-3.1-pro-preview
openai/gpt-5.2-codex
google/gemini-3-flash-preview
z-ai/glm-4.7
qwen/qwen3.6-plus
minimax/minimax-m2.7
openai/gpt-5.1-codex
openai/gpt-5.1-codex-mini
z-ai/glm-4.6
qwen/qwen3-coder-next
deepseek/deepseek-v3.2
minimax/minimax-m2.5
z-ai/glm-4.5

Нет единого «победителя». Если сортировать по разным метрикам, лидеры меняются. Кто-то эффективнее по токенам, кто-то быстрее, кто-то стабильнее.

Можно, например, посчитать токеноэффективность — какой результат даёт модель на тысячу токенов. Это даёт ещё один полезный взгляд.

Когда выходит новая модель, мы сразу тестируем её в KodikBenchmark и понимаем, насколько она полезна в нашей практике.

Конечно, это не абсолютная истина. Некоторые аспекты кодирования невозможно измерить. А личный опыт — тоже важный источник знаний.

Кроме того, бенчмарк нужно регулярно обновлять. Раньше флагманские модели справлялись не со всеми задачами. Сейчас они проходят всё — и разница в том, «какой ценой». Значит, тесты надо усложнять.

Но даже частичное и временное знание — уже огромный шаг вперёд. Оно помогает не гадать на кофейной гуще, а принимать решения на основе данных. Особенно когда речь идёт о профессиональной разработке, а не просто о вайбе.

Если у вас есть похожий опыт — было бы интересно послушать. Даже «в общих чертах», чтобы не раскрывать детали оценки перед самими моделями.

Читать оригинал