36 / 37 · Современные LLM-системы
Оценка LLM
Как измерить систему, чей выход — текст, а части принимают решения: стандартные бенчмарки задач и обвязка, которая их запускает, метрики поиска, модель в роли судьи и эксперимент, показывающий, как мало ей можно доверять по умолчанию, человеческие предпочтения со статистиками согласия и числа задержки, стоимости и надёжности, которые решают, выйдет ли система в работу.
Использование инструментов и агенты · Корпусы и оценка качества
На этой странице 11
Заметка об оценке в начале курса предполагала тестовую выборку с метками и модель, выдающую одну из них. Системы этого раздела ломают оба предположения: выход — текст, «модель» — конвейер из поиска, генерации и вызовов инструментов, а интересующая величина (был ли ответ полезным, достоверным, безопасным, достаточно быстрым и дешёвым) меток не имеет. Эта заметка раскладывает инструменты, существующие для каждого уровня, и то, что каждый может и не может сказать, с одним экспериментом, который калибрует, чего стоит суждение модели.
Обозначения. Промпт , выход системы , оценка ; люди-оценщики ; модель-судья . Корреляция Пирсона между двумя наборами оценок; каппа Коэна для согласия по категориям.
Что чем измеряется в LLM-системе
Бенчмарки уровня задач#
Первый уровень спрашивает, что умеет базовая модель: знания (MMLU), продолжение по здравому смыслу (HellaSwag), научные вопросы (ARC), устойчивость к распространённым заблуждениям (TruthfulQA) и так далее. Каждый бенчмарк — набор данных с фиксированным форматом промпта и правилом подсчёта, и ценность этого уровня в том, что каждая модель проходит через один и тот же формат и правило. lm-evaluation-harness (Gao et al., 2024) это стандартизирует: задача — YAML-файл, который называет набор данных, говорит, как собрать промпт из записи (doc_to_text), как прочитать цель (doc_to_target), какие варианты ответа, если они есть, какая настройка few-shot и какие метрики; каждая модель реализует три вызова, loglikelihood(context, continuation), loglikelihood_rolling(text) и generate(prompt); результаты агрегируются по подзадачам в один отчёт.
Для чтения результатов важны два режима подсчёта. Подсчёт по логарифму правдоподобия (log-likelihood) ничего не порождает: в вопросе с вариантами ответа каждый вариант дописывается к промпту, и побеждает вариант с наибольшей вероятностью по модели (варианты метода нормируют на длину или на безусловную базовую вероятность). Он детерминирован, дёшев и измеряет немного не то, что «может ли модель ответить», а именно «считает ли модель правильное продолжение более вероятным». Порождающий подсчёт (generative) сэмплирует ответ и сравнивает его с целью по точному совпадению, F1, BLEU или ROUGE, а это зависит от настроек декодирования и от того, как ответ извлекается из текста.
Чего балл бенчмарка сказать не может: справится ли модель с конкретной задачей (бенчмарки — заместители), устойчиво ли число к смене промпта (другой шаблон сдвигает MMLU на пункты) и видела ли модель тестовую выборку (загрязнение, contamination: корпусы предобучения веб-масштаба содержат бенчмарки, а заученный ответ — не способность). Балл без версии обвязки, формата промпта, числа примеров в промпте и настроек декодирования невоспроизводим.
Одно лишь правило подсчёта способно сильно сдвинуть число. С одним и тем же промптом (вопрос, четыре варианта с буквами и Answer:) на десяти вопросах MMLU по географии SmolLM2-360M получает 0.4, когда обвязка сравнивает вероятности букв A–D, и 0.1, когда сравнивает вероятности полных текстов вариантов. Десять вопросов дают стандартную ошибку около 0.15, так что это показывает механизм, а не измерение.
Оценка поиска#
Второй уровень — тот, что построила заметка о семантическом поиске: эталонная выборка пар (запрос, релевантный фрагмент) и Hit@ с MRR. Он дёшев и точен, и его измеряют первым. Когда эталонная выборка отмечает каждый фрагмент, которого достаточно как свидетельства, полнота при данном размере контекста ограничивает долю ответов, которые верны и обоснованы найденным текстом; с одним назначенным фрагментом на вопрос это лишь приближение к такой границе, потому что то же свидетельство может содержать другой фрагмент, а модель может ответить из своих параметров.
Модель в роли судьи#
Третий уровень оценивает свободный текст. У открытых ответов нет ни эталона, ни правила; вместо того чтобы спрашивать людей, можно спросить модель с рубрикой (LLM-as-a-judge, Zheng et al., 2023). Это быстро и дёшево, а ценность целиком зависит от того, насколько судья согласен с людьми, и это можно измерить.
Эксперимент#
Набор данных пар вопрос–ответ, у каждой две независимые оценки людей по четырёхбалльной шкале (плохо, можно улучшить, приемлемо, отлично). Модель с инструкциями на 1 млрд параметров выступает судьёй на 28 отобранных парах, где оба человека согласились.
| Сравнение | Примеры | Пирсона |
|---|---|---|
| Оценщик A против оценщика B | все пары набора | 0.563 |
| Судья, наивный промпт (оценка 0–10 дробным числом, без рубрики) против людей | 28 согласованных пар, по 7 на уровень | −0.169 |
| Судья, улучшенный промпт (целая шкала 1–4, текст рубрики на каждый уровень, письменная оценка перед баллом) против людей | те же 28 | 0.192 |
Три вывода в порядке важности.
У наивного судьи нет свидетельств сигнала. На 28 примерах корреляцию −0.17 нельзя отличить от нуля: её 95%-й интервал идёт примерно от −0.51 до 0.22. Эксперимент не даёт надёжных свидетельств положительной связи — что не доказывает, что её нет, — а знак — шум. Если просить маленькую модель о дробном числе по шкале 0–10, получаются числа, похожие на оценки, но ими не являющиеся.
Структуры промпта здесь недостаточно. Небольшая целочисленная шкала с описанным смыслом каждого уровня и обязательная письменная оценка перед числом поднимают корреляцию до 0.19. На 28 примерах это изменение в пределах шума: 95%-й интервал вокруг 0.19 идёт примерно от −0.20 до 0.53, и интервал вокруг −0.17 с ним пересекается. Даже если принять его за чистую монету, это заметно ниже 0.56 между оценщиками, но то число получено на других примерах, так что разрыв не измерен. Модель на 1 млрд параметров для этой задачи не годится в судьи. Со способным судьёй тот же эксперимент выходит иначе: судья Mixtral-8x7B достигал 0.567 с наивным промптом и 0.843 с улучшенным (Roucher). Советы по промпту работают для способного судьи, и главное остаётся в силе: согласие судьи с людьми нужно измерить на своей задаче, прежде чем пользоваться его оценками.
Согласие людей между собой — не потолок. Соблазнительно прочитать 0.56 как лучшее, чего может достичь любой судья, но этому мешают две вещи. Выборки разные: 0.56 — согласие двух оценщиков на всех парах, а судей оценивали на 28 парах, отобранных потому, что оценщики согласились, и уравновешенных по четырём уровням, — это более лёгкая и менее шумная цель. И согласие двух шумных оценщиков не ограничивает согласие с истиной или с их консенсусом. В простейшей модели шума, где каждая оценка — истинный балл плюс независимый шум одинаковой дисперсии, судья, выдающий истинный балл, коррелирует с одним оценщиком на , а со средним двух — примерно на 0.85, и оба числа выше 0.56. Шумные метки действительно ограничивают то, что может показать сравнение, но чтобы назвать предел числом, нужны модель шума и одни и те же примеры для людей и судей: оценить судью и каждого оценщика на одних и тех же отложенных примерах, привести индивидуальные и согласованные метки и дать интервалы.
Практика#
Что повышает качество судьи, по литературе и по эксперименту: небольшая целочисленная шкала (1–4 или 1–5) вместо широкой или непрерывной; рубрика, определяющая каждый уровень; текст оценки перед баллом; эталонный ответ, если он есть; несколько примеров оценённых ответов в промпте; аддитивная рубрика (балл за каждый выполненный критерий), когда суждение раскладывается на части; структурированный вывод, чтобы балл разбирался, а не выковыривался регулярным выражением из прозы; температура 0; и при попарных сравнениях — показ обоих порядков, чтобы погасить смещение по позиции (position bias). Известные систематические смещения моделей-судей — предпочтение более длинных ответов (verbosity bias) и собственного стиля (self-preference); оба описаны у Zheng et al. (2023). Контроль стоимости зависит от того, что оценивается. Оценку релевантности найденных фрагментов можно ограничить лучшими кандидатами после переранжирования — теми, что попадают в контекст; достоверность и качество ответа оцениваются для каждого порождённого ответа, на выборке ответов, достаточной для нужного интервала.
Согласие для категориальных меток#
Когда выход судьи — категория (релевантно / нерелевантно, прошло / не прошло), корреляция Пирсона — неверная статистика. Каппа Коэна (Cohen’s kappa) измеряет согласие двух разметчиков сверх того, что дала бы случайность:
где — наблюдаемая доля совпадений, а — совпадение, ожидаемое по частотам категорий у каждого разметчика. Игрушечный пример: на 100 объектах оценщик A отмечает 60% как релевантные, оценщик B — 70%, и совпадают они на 80 объектах. Тогда и . Сырые 80% совпадений выглядели хорошо; почти половину из них дала бы случайность. — полное согласие, 0 — случайность, ниже 0 — систематическое несогласие; обычная (и произвольная) шкала считает 0.4–0.6 умеренным согласием, а выше 0.8 — почти полным (Landis и Koch, 1977). падает, когда один разметчик пользуется какой-то категорией гораздо чаще другого, даже при высоком сыром согласии, поэтому сообщают оба числа.
Оценка людьми#
Люди — эталон для всего перечисленного выше, и они дороги, так что план оценки людьми сводится к тому, как получить надёжные метки из немногих суждений.
- Попарное предпочтение надёжнее абсолютных оценок: показать два выхода на один промпт и спросить, какой лучше. Chatbot Arena собирает такие голоса пользователей и подгоняет модель Брэдли–Терри (ту же, что у модели вознаграждения в заметке об обучении на инструкциях), чтобы ранжировать модели.
- Рубрики и обучение оценщиков и измеренное согласие между ними ( или корреляция), сообщаемое вместе с результатом; 0.56 выше — типичное число для четырёхбалльной шкалы полезности.
- Выборка. Несколько сотен промптов, стратифицированных по типу, каждый оценён двумя или более людьми, расхождения разбираются. Доверительные интервалы, потому что выборка мала.
- Слепота. Оценщики не должны знать, какая система породила какой выход.
Система, а не модель#
Уровни выше оценивают модель или этап. В работу выходит процесс целиком, и его оценивают ещё по трём осям:
Успех задачи от начала до конца. Получил ли пользователь то, что ему было нужно? Для RAG-ассистента — доля эталонных вопросов, на которые дан правильный и достоверный ответ. Для агента — доля выполненных задач и за сколько шагов. Ошибки приписываются этапу, который их вызвал (промах поиска, плохой контекст, недостоверная генерация, неверный вызов инструмента), поэтому у каждого этапа своя метрика.
Задержка и стоимость. Время до первого токена и токены в секунду для интерактивного использования; полное время для пакетного; входные и выходные токены на запрос — это деньги, и у агентов они растут с каждым шагом (запрос погоды на 9500 токенов из предыдущей заметки). Модель, которая набирает на два пункта больше и вдвое дороже на запрос, не обязательно улучшила продукт.
Надёжность. Доля неразбираемых выходов (ограниченный структурированный вывод сильно сокращает синтаксические сбои у завершившихся ответов, а обрезка, таймауты, отказы, неподдерживаемые возможности схемы и правильно оформленные, но неверные значения остаются отдельными сбоями, которые нужно считать), ошибок инструментов, таймаутов, отказов на законные запросы; разброс между повторными запусками одного промпта при рабочей температуре; поведение на враждебных входах и входах вне распределения, включая попытки инъекции через найденный или возвращённый инструментом текст.
Всё это измеряется на фиксированном регрессионном наборе (regression suite), который запускается при каждом изменении промпта, версии модели, индекса или инструмента с той же дисциплиной, что тесты для кода, и продолжается в работе: часть живого трафика отбирается на проверку людьми или судьёй.
Что изменилось#
| Оценка классификатора | Оценка LLM-системы | |
|---|---|---|
| Истина | метки | эталоны (иногда), рубрики, предпочтения |
| Кто оценивает | точное сравнение | метрики по этапам; модели-судьи, проверенные по людям |
| Единица | одна модель | конвейер; ошибки приписываются этапам |
| Воспроизводимость | разбиение + метрика | + формат промпта, примеры в промпте, декодирование, версия обвязки |
| Оси помимо качества | редко | задержка, стоимость, надёжность, безопасность |
Ограничения#
- Бенчмарки насыщаются и протекают. Балл у потолка или на загрязнённом наборе говорит мало.
- Судьи наследуют слабости генератора. Смещения в пользу длины и собственного стиля и низкое согласие с людьми у маленьких судей, как измерено выше.
- Человеческие метки шумны (здесь 0.56 между оценщиками), и это ограничивает то, что может показать любое сравнение с ними; насколько — зависит от модели шума, а согласие с консенсусом может превышать согласие двух оценщиков.
- Маленькие выборки. 28 примеров дают оценку корреляции с широким интервалом (здесь около ±0.37); корреляции обоих судей неотличимы от нуля, а разрыв до 0.56 у оценщиков — тоже не сопоставленное сравнение.
- Метрики уходят от целей. Система, оптимизированная под балл судьи, оптимизируется под смещения судьи.
Что нужно запомнить#
- Бенчмарки — стандартизированные промпты плюс правила подсчёта; сообщать формат, число примеров в промпте, декодирование и версию обвязки; следить за загрязнением.
- Полнота поиска при размере контекста ограничивает долю верных и обоснованных ответов RAG-системы, когда размечены все достаточные свидетельства (с одним эталонным фрагментом на вопрос это приближение); её измеряют первой.
- Модель-судья хороша ровно настолько, насколько измерено её согласие с людьми: с судьёй на 1 млрд параметров на 28 согласованных примерах наивный промпт с дробной шкалой 0–10 даёт , структурированная рубрика 1–4 — , и оба неотличимы от нуля; между оценщиками на всём наборе — контекст, а не потолок. Брать небольшие целые шкалы, рубрики, сначала рассуждение, эталоны, структурированный вывод, температуру 0, оба порядка для пар.
- Каппа Коэна поправляет согласие по категориям на случайность; сообщать её вместе с сырым согласием.
- Оценивать процесс целиком: успех от начала до конца с приписыванием этапам, задержку, стоимость, надёжность — на регрессионном наборе, который запускается при каждом изменении.
Ноутбук#
Два ноутбука. Номера ячеек считают все ячейки, включая текстовые, начиная с 1. Приведённые числа взяты из прогона, сохранённого в курсе; у ячеек, изменённых с тех пор под текущие версии библиотек, сохранённого выхода нет.
week11_pt1_Evaluation_with_Harness.ipynb: ячейки 1–3 описывают конвейер из шести этапов (набор данных, doc_to_text, doc_to_target, интерфейс модели из трёх вызовов, метрики, агрегация). Все запуски используют SmolLM2-360M с --limit 10 или меньше, так что баллы иллюстрируют механику, а не модель. Ячейки 4–11 определяют задачи BoolQ и CoLA в YAML, группируют их и запускают (запуск BoolQ в ячейке 8 упал по таймауту Hub; CoLA — 0.7). Ячейки 12–24 разбирают шаблоны промптов на Jinja, режимы логарифма правдоподобия и порождения, пользовательские хуки !function и предобработку данных на MMLU по школьной географии: 0.4 при подсчёте по буквам (ячейка 14), 0.1 при подсчёте по текстам вариантов (ячейка 17) и 0.3 с тем же промптом, собранным функцией или предобработкой (ячейки 22 и 24). Ячейки 26–37 строят небольшой набор данных классификации намерений и оценивают его на пяти примерах по логарифму правдоподобия (точность 0.2, ячейка 35) и порождением (точное совпадение 0, ячейка 37).
week11_pt2_LLM_as_a_Judge.ipynb: ячейки 4–5 загружают судью Llama-3.2-1B-Instruct; ячейка 7 загружает набор отзывов и переводит четыре оценки в 1–4; ячейка 9 печатает корреляцию Пирсона между людьми 0.563; ячейка 11 отбирает по 7 согласованных примеров на каждый уровень оценки; ячейки 13–16 запускают наивный промпт 0–10, разбирают дробное число, пересчитывают в 1–4 и печатают ; ячейки 19–24 запускают улучшенный промпт (шкала 1–4, рубрика, оценка перед баллом и обещанная в шутку награда в виде GPU) и печатают ; ячейка 27 перечисляет дальнейшие улучшения (эталонные ответы, примеры в промпте, аддитивные шкалы, структурированная генерация). Комментарии в ячейках 17, 25 и 27 взяты из руководства (Roucher), написаны для его судьи Mixtral-8x7B (0.567 с наивным промптом, 0.843 с улучшенным) и этим числам не соответствуют: они называют наивного судью близким к человеческому уровню согласия, изменение — улучшением «почти на 30%», а оставшиеся расхождения — незначительными, и с судьёй на 1 млрд параметров напечатанные числа не подтверждают ни одного из трёх утверждений.
Определение каппы Коэна и правила экономии на судье — в week09_RAG.ipynb, ячейки 86–88.
Дальше#
Каждый генератор в этом курсе до сих пор писал текст слева направо, по токену за шаг. Последняя заметка курса, о неавторегрессионной генерации и текстовой диффузии, отказывается от этого порядка: начать с полностью замаскированной последовательности, предсказать все позиции сразу двунаправленной моделью, оставить уверенные предсказания и повторить — так последовательный цикл меняется на фиксированное число параллельных шагов уточнения.
Литература#
- L. Gao et al. The Language Model Evaluation Harness. EleutherAI, v0.4, 2024.
- D. Hendrycks et al. Measuring Massive Multitask Language Understanding. ICLR, 2021. MMLU.
- L. Zheng et al. Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena. NeurIPS, 2023. Согласие судей с людьми, смещения по позиции и длине.
- Z. Li, A. Mohammad, B. Jin, S. Guo, S. Wang, J. Zhu, H. Chen, M. Zhang. Leveraging Large Language Models for NLG Evaluation: A Survey. arXiv, 2024.
- J. Cohen. A Coefficient of Agreement for Nominal Scales. Educational and Psychological Measurement, 20(1), 1960.
- J. R. Landis, G. G. Koch. The Measurement of Observer Agreement for Categorical Data. Biometrics, 33(1), 1977.
- Z. Li, X. Wang, et al. FeedbackQA (McGill-NLP). Набор ответов с двумя оценками, используемый в эксперименте с судьёй.
- O. Sainz et al. NLP Evaluation in trouble: On the Need to Measure LLM Data Contamination for each Benchmark. Findings of EMNLP, 2023.
- A. Roucher. Using LLM-as-a-judge for an automated and versatile evaluation. Hugging Face Open-Source AI Cookbook. Руководство, которое адаптирует ноутбук с судьёй.