Вы потратили неделю на датасет, вечер на настройку и час на обучение. Теперь вы открываете чат с новой моделью, задаёте вопрос, читаете ответ и думаете: «да, стало лучше». Эта мысль почти ничего не стоит.
Не потому что вы невнимательны, а потому что вы знаете, какая перед вами модель, знаете, чего добивались, и видите то, что искали. Ровно тот же ответ от базовой модели вы бы прочитали иначе.
#Зачем это нужно и когда не нужно
Нужно всегда, когда вы собираетесь пользоваться результатом. Не нужно, если прогон был учебным и вы заранее знаете, что выбросите адаптер.
Проверка занимает час и отвечает на вопрос, ради которого делалась вся работа: стало лучше или вам так кажется. Где этот шаг стоит в общем маршруте — в пилларе про свою модель и дообучение под себя.
#Что понадобится
- Базовая модель. Та же версия, на которой обучали, в той же квантизации. Сравнение с другой базой ничего не измеряет.
- Дообученная модель с подключённым адаптером или после слияния — важно, чтобы конфигурация запуска была та же, в которой вы собираетесь пользоваться; что при слиянии меняется, разобрано в статье про слияние адаптера с моделью.
- Набор вопросов, написанный ДО обучения. Написанный после, он подстроится под то, что получилось.
- Таблица для записи. Без записи вы через день не вспомните, какая версия чем отличалась.
#Шаг 1. Соберите три набора вопросов
Набор A: стиль (10 вопросов). Из отложенной выборки, которую модель не видела. Именно здесь должно быть видно улучшение.
Набор B: контроль деградации (10 вопросов). Темы, которых в датасете не было вовсе. Здесь ничего меняться не должно; ухудшение — цена, которую вы платите.
Набор C: границы (5 вопросов). Вопросы, на которые правильный ответ — «не знаю» или отказ, и вопросы с ловушкой (ложная посылка внутри вопроса). Дообучение на своих данных повышает уверенность модели, и здесь это видно раньше всего.
Пример состава набора B, если вы обучали на рабочих диалогах: бытовой вопрос, вопрос по школьной программе, арифметическая задача в три действия, просьба переформулировать чужой текст, вопрос про другую предметную область.
#Шаг 2. Сгенерируйте ответы обеих моделей
Одинаковые настройки сэмплинга у обеих. Разная температура — и вы сравниваете не модели, а настройки.
Сохраните ответы в таблицу с перемешанным порядком: для каждого вопроса случайно решите, какая модель будет «вариант 1», а какая «вариант 2». Соответствие запишите отдельно и не смотрите в него до конца оценки.
#Шаг 3. Оцените вслепую
Это и есть суть протокола. Читая пару ответов, вы не должны знать, какой чей.
Форма оценки на каждый вопрос:
| Поле | Значение |
|---|---|
| Вопрос | текст |
| Набор | A / B / C |
| Что лучше по стилю | 1 / 2 / одинаково |
| Что лучше по существу | 1 / 2 / одинаково |
| Есть ли брак | обрыв, повтор, служебные строки, выдумка |
| Комментарий | одна строка, зачем выбран этот вариант |
Разделение «стиль» и «существо» обязательно. Дообучение должно выигрывать по стилю и не проигрывать по существу — если получилось наоборот, вы обучали не тому.
#Шаг 4. Сведите результат
Раскройте соответствие и посчитайте по наборам:
- Набор A. Дообученная модель должна выигрывать по стилю заметно — не «шесть из десяти», это шум, а с явным перевесом.
- Набор B. Здесь считается только «существо». Проигрыш на двух-трёх вопросах из десяти — терпимо; на половине — вы переобучили, признаки и лечение в статье про переобучение и его лечение.
- Набор C. Рост уверенных выдумок — стоп-сигнал независимо от результата на A. Модель, которая красиво врёт вашим голосом, хуже базовой.
#Проверка результата
Оценка проведена корректно, если выполнены все пять условий:
- Вопросы написаны до обучения и не менялись после.
- Настройки сэмплинга одинаковы у обеих моделей.
- Порядок вариантов перемешан, и вы не знали соответствие во время чтения.
- Оценки по стилю и по существу поставлены раздельно.
- Результат записан рядом с конфигурацией прогона и датасетом.
Пятый пункт — про будущее: без записи вы не сможете сравнить третью версию модели со второй, и вся дисциплина предыдущих шагов пропадёт. Складывайте результат проверки в тот же каталог, где лежит конфигурация прогона и хеш датасета. Где этот шаг стоит в общем маршруте — в пилларе про свою модель и дообучение под себя.
#Что может пойти не так
- Вопросы написаны после обучения. Самая распространённая и самая незаметная ошибка: вы бессознательно выбираете вопросы, где новая модель хороша.
- Отложенная выборка попала в обучение. Тогда набор A измеряет память, а не манеру.
- Сравнение не вслепую. Знание того, где чей ответ, смещает оценку сильнее, чем кажется.
- Разные настройки запуска. Другая температура, другая квантизация, другой системный промпт — сравниваются не модели.
- Оценка одним показателем. «Лучше в целом» скрывает случай «стиль выиграл, факты просели», а это разные решения.
- Набора C нет вовсе. Тогда рост уверенных выдумок вы заметите не на проверке, а в работе.
Как строить набор личных тестовых задач, который годится не только для дообучения, — в статье про свой набор тестов для модели. Что делать, когда проверка показала «хуже», и какой параметр менять первым — в статье про гиперпараметры дообучения.
#Отдельно: проверка после обновления базы
Дообученный адаптер привязан к конкретной версии базовой модели. Когда база обновляется, адаптер формально продолжает загружаться, но поведение может измениться непредсказуемо.
Правило: после обновления базы прогоняйте протокол заново, а до этого не считайте связку проверенной. Как вообще подходить к обновлению локальных моделей и почему «свежее» не значит «лучше» — в статье про обновление локальных моделей.
#Частые вопросы
#Сколько вопросов достаточно для оценки?
Двадцать пять по трём наборам — рабочий минимум для решения «пользоваться или переобучать». Меньше — и разница тонет в случайности генерации. Больше имеет смысл, когда вы сравниваете несколько версий между собой, а не версию с базой.
#Можно ли поручить оценку модели?
Модель-судья годится для грубого отсева и для повторяемости, но плохо оценивает главное — «звучит ли это как я». Стиль оцениваете вы, потому что эталон стиля есть только у вас. Модель может помочь с проверкой фактической части набора B.
#Что делать, если результат «примерно одинаково»?
Считать это отрицательным результатом. Дообучение стоило вам недели, и «примерно одинаково» означает, что неделя не окупилась. Возвращайтесь к датасету: чаще всего дело в недостатке эталонов именно вашего тона, а не в параметрах.
#Нужно ли сравнивать с базой, если базовая модель мне не нравилась?
Обязательно, и особенно в этом случае. Без точки отсчёта вы не отличите «дообучение сработало» от «я привык». База — единственный доступный вам ориентир, даже если она вам не нравится.
#Как проверить, что модель не заучила датасет?
Возьмите обучающий вопрос, перефразируйте его и задайте. Дословный эталонный ответ на перефразированный вопрос — признак заучивания. Это самый быстрый тест, и делать его стоит до полного протокола.
#Вывод
Оценка дообученной модели — это не «поговорить и решить», а протокол из четырёх шагов: три набора вопросов, написанных заранее; одинаковые настройки; перемешанный порядок; раздельные оценки стиля и существа.
Дисциплина здесь нужна не из педантизма. Автор дообучения — самый заинтересованный и самый ненадёжный судья своей работы, и слепое сравнение это единственное, что защищает от вывода «стало лучше» там, где не стало.