MMLU и HumanEval
два разных способа проверить языковую модель
MMLU проверяет выбор ответа по разным предметам, а HumanEval — способность написать небольшую функцию, которая проходит тесты. Обе цифры полезны, если известен протокол, но ни одна не описывает модель целиком.
Коротко
Коротко. MMLU предлагает модели вопросы с четырьмя вариантами ответа по десяткам учебных и профессиональных предметов. HumanEval даёт описание небольшой функции на Python и проверяет сгенерированный код тестами. Первый набор измеряет точность выбора, второй — функциональную корректность коротких программ. Это два отдельных среза, а не общий экзамен на «ум» модели.
Что это такое
MMLU и HumanEval часто стоят рядом в таблицах, хотя устроены совсем по-разному.
MMLU, или Massive Multitask Language Understanding, состоит из 15 908 вопросов по 57 предметам. Среди них есть математика, история, право, медицина, информатика и другие области. У каждого вопроса четыре готовых ответа, правильный — один.
HumanEval состоит из 164 задач на Python. Модель получает сигнатуру функции и описание ожидаемого поведения, затем дописывает реализацию. Ответ запускают и проверяют набором тестов.
Фиксированный размер здесь не признак «свежести» или «устаревания», а часть определения конкретного набора. Со временем меняется не сам исторический тест, а то, насколько хорошо его результат переносится на новые модели и реальные задачи.
Как устроен MMLU
Вопрос MMLU похож на обычное задание из теста:
Вопрос: ...
A) ...
B) ...
C) ...
D) ...
Ответ:
Модель должна выбрать одну букву. Основная метрика — accuracy, то есть доля правильных ответов. При четырёх равновероятных вариантах случайный выбор в среднем даёт 25%, но сам по себе отрыв от этого уровня ещё не говорит, насколько модель полезна в работе.
Итоговую цифру важно читать вместе с разбивкой по предметам. Одинаковый средний балл может скрывать две разные картины: одна модель отвечает ровно по всем областям, другая сильна в нескольких и заметно слабее в остальных.
Формат с готовыми вариантами тоже задаёт границу теста. Выбрать верный ответ проще, чем самостоятельно сформулировать точное объяснение, проверить предпосылки или признать, что данных не хватает. Поэтому MMLU хорошо отвечает на вопрос «как модель справилась с этими заданиями», но не на вопрос «насколько хорошо она рассуждает вообще».
Как устроен HumanEval
Задача HumanEval выглядит примерно так:
def has_close_elements(numbers, threshold):
"""Вернуть True, если в списке есть два числа,
расстояние между которыми меньше threshold."""
Модель дописывает тело функции. Затем код запускают с тестами, которые проверяют ожидаемое поведение, в том числе на случаях, не показанных в описании.
Обычно рядом с HumanEval встречается метрика pass@k. Она оценивает вероятность того, что среди k сгенерированных решений найдётся хотя бы одно прошедшее тесты. Поэтому pass@1 и pass@10 отвечают на разные вопросы:
- pass@1 показывает шанс получить рабочее решение с одной попытки;
- pass@k учитывает несколько независимых вариантов и подходит для сценария, где их можно сгенерировать, выполнить и отобрать.
Значение pass@k зависит не только от модели. На него влияют настройки генерации, число полученных вариантов и способ подсчёта. Сравнивать две цифры без этих деталей рискованно.
Что на самом деле показывают баллы
MMLU показывает, как часто модель выбирает правильный вариант в конкретном наборе предметных вопросов. HumanEval показывает, как часто её короткие функции проходят конкретный набор тестов. Формулировка кажется очевидной, но она защищает от главной ошибки: превращения частной метрики в оценку модели целиком.
Высокий результат MMLU сам по себе не гарантирует:
- точных открытых ответов без подсказок;
- хорошей работы на русском языке;
- знания внутренних правил компании;
- аккуратного обращения с неоднозначными запросами;
- устойчивости в длинном диалоге.
Высокий результат HumanEval сам по себе не гарантирует:
- понимания большого репозитория;
- удачной архитектуры;
- безопасного кода;
- корректной работы с зависимостями и окружением;
- удобства поддержки и ревью.
Короткая функция и изменение в живом проекте требуют разных навыков. Тесты HumanEval полезны именно потому, что проверяют небольшой и чёткий фрагмент, но эта же компактность ограничивает выводы.
Почему одинаковые названия не гарантируют честное сравнение
Два отчёта могут написать «MMLU» или «HumanEval» и получить несопоставимые результаты. На итог влияют:
- точная версия модели и её режим работы;
- шаблон диалога и системная инструкция;
- число примеров перед заданием;
- способ извлечь ответ A–D;
- параметры генерации и число вариантов кода;
- версия данных и порядок их подготовки;
- тестовая среда, тайм-ауты и доступные зависимости.
Хороший отчёт указывает эти детали рядом с числом. Если протокол не описан, балл остаётся ориентиром, но не строгим основанием для сравнения.
Есть и ещё одна проблема — контаминация. Условия задач, ответы или очень близкие примеры могли попасть в обучающие данные. Тогда тест частично измеряет запоминание. По одному итоговому баллу невозможно понять, произошло ли это, поэтому полезны независимые наборы и собственные задания, которые модель заранее не видела.
Как дополнить бенчмарки своими примерами
Для первого отбора MMLU и HumanEval удобны: они дают повторяемые задачи и понятные метрики. Последний этап лучше строить вокруг будущей работы модели.
Если нужен помощник по внутренним документам, проверяют поиск нужного факта, ссылки на источник, отказ при нехватке данных и соблюдение формата. Если нужен генератор кода, добавляют задачи из похожего стека: изменение нескольких файлов, тесты, обработку ошибок, работу с зависимостями и ревью патча.
Полезно заранее зафиксировать:
- Набор типичных запросов и редких сложных случаев.
- Критерии правильного ответа.
- Одинаковые настройки для всех кандидатов.
- Задержку, расход памяти и стоимость запуска.
- Ошибки, которые особенно опасны именно в этом продукте.
Так классический бенчмарк остаётся общей точкой отсчёта, а собственная проверка отвечает на практический вопрос: подходит ли модель для нужного сценария.
MMLU и HumanEval в локальных сценариях
Для локальной языковой модели эти баллы могут сузить список кандидатов, но не предсказывают, как она поведёт себя внутри конкретного приложения или графа ComfyUI.
Например, модель может хорошо отвечать на тестовые вопросы и при этом нарушать требуемую JSON-схему. Или уверенно решать короткие функции, но терять контекст при длинном описании сцены. Поэтому локальную проверку дополняют своими промптами, замером задержки, контролем структуры ответа и наблюдением за расходом памяти.
С чем часто путают
- MMLU и проверка открытых ответов. В MMLU правильный вариант уже находится среди A–D. Самостоятельное объяснение — другой формат задачи.
- HumanEval и разработка в репозитории. HumanEval проверяет небольшие изолированные функции, а не навигацию по проекту и согласованное изменение нескольких модулей.
- pass@1 и pass@k. Первая метрика относится к одной попытке, вторая — к наличию успешного решения среди нескольких.
- Средний балл и равномерное качество. Среднее скрывает различия между предметами, типами задач и языками.
- Бенчмарк и продуктовая приёмка. Общий тест помогает сравнивать, но не заменяет сценарии конкретного продукта.
Частые вопросы
Можно ли напрямую сравнить два результата MMLU?
Только если совпадают набор данных и протокол: шаблон запроса, число примеров, способ выбора ответа и остальные настройки. Иначе сравнение остаётся приблизительным.
Почему в HumanEval используют тесты, а не оценку текста программы?
Один и тот же результат можно получить разными реализациями. Выполнение тестов проверяет поведение функции, не привязываясь к конкретному тексту решения. При этом тесты не оценивают всё качество кода: читаемость, безопасность и удобство поддержки требуют отдельных проверок.
Что важнее: MMLU или HumanEval?
Зависит от задачи. Для предметных вопросов ближе MMLU, для генерации коротких функций — HumanEval. Для большинства продуктов нужны другие проверки в дополнение к обоим.
Подходит ли MMLU для оценки русскоязычной работы?
Лишь частично. Исходный набор англоязычный, поэтому его результат не описывает качество русских формулировок, терминологии и локального контекста. Это лучше проверять отдельным русскоязычным набором и собственными примерами.
Означает ли старый набор данных, что результат бесполезен?
Нет. Фиксированный тест остаётся удобной общей линейкой. Просто со временем растут риск контаминации и разрыв между короткими заданиями и новыми рабочими сценариями, поэтому одной линейки становится недостаточно.
Главное
MMLU проверяет выбор ответа по разным предметам, HumanEval — функциональную корректность небольших программ. Их результаты полезны при одинаковом и подробно описанном протоколе. Но балл относится к тесту, а не ко всей модели: окончательное решение лучше подтверждать задачами, языком, ограничениями и рисками конкретного продукта.