Своя модель

Как оценить дообученную модель честно

Автор дообучения систематически переоценивает свою работу. Единственное лекарство — слепое сравнение с базовой моделью по заранее написанному протоколу. Форма оценки и список задач для контроля деградации.

Вы потратили неделю на датасет, вечер на настройку и час на обучение. Теперь вы открываете чат с новой моделью, задаёте вопрос, читаете ответ и думаете: «да, стало лучше». Эта мысль почти ничего не стоит.

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

#Зачем это нужно и когда не нужно

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

Проверка занимает час и отвечает на вопрос, ради которого делалась вся работа: стало лучше или вам так кажется. Где этот шаг стоит в общем маршруте — в пилларе про свою модель и дообучение под себя.

#Что понадобится

  • Базовая модель. Та же версия, на которой обучали, в той же квантизации. Сравнение с другой базой ничего не измеряет.
  • Дообученная модель с подключённым адаптером или после слияния — важно, чтобы конфигурация запуска была та же, в которой вы собираетесь пользоваться; что при слиянии меняется, разобрано в статье про слияние адаптера с моделью.
  • Набор вопросов, написанный ДО обучения. Написанный после, он подстроится под то, что получилось.
  • Таблица для записи. Без записи вы через день не вспомните, какая версия чем отличалась.

#Шаг 1. Соберите три набора вопросов

Набор A: стиль (10 вопросов). Из отложенной выборки, которую модель не видела. Именно здесь должно быть видно улучшение.

Набор B: контроль деградации (10 вопросов). Темы, которых в датасете не было вовсе. Здесь ничего меняться не должно; ухудшение — цена, которую вы платите.

Набор C: границы (5 вопросов). Вопросы, на которые правильный ответ — «не знаю» или отказ, и вопросы с ловушкой (ложная посылка внутри вопроса). Дообучение на своих данных повышает уверенность модели, и здесь это видно раньше всего.

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

#Шаг 2. Сгенерируйте ответы обеих моделей

Одинаковые настройки сэмплинга у обеих. Разная температура — и вы сравниваете не модели, а настройки.

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

#Шаг 3. Оцените вслепую

Это и есть суть протокола. Читая пару ответов, вы не должны знать, какой чей.

Форма оценки на каждый вопрос:

Поле Значение
Вопрос текст
Набор A / B / C
Что лучше по стилю 1 / 2 / одинаково
Что лучше по существу 1 / 2 / одинаково
Есть ли брак обрыв, повтор, служебные строки, выдумка
Комментарий одна строка, зачем выбран этот вариант

Разделение «стиль» и «существо» обязательно. Дообучение должно выигрывать по стилю и не проигрывать по существу — если получилось наоборот, вы обучали не тому.

#Шаг 4. Сведите результат

Раскройте соответствие и посчитайте по наборам:

  • Набор A. Дообученная модель должна выигрывать по стилю заметно — не «шесть из десяти», это шум, а с явным перевесом.
  • Набор B. Здесь считается только «существо». Проигрыш на двух-трёх вопросах из десяти — терпимо; на половине — вы переобучили, признаки и лечение в статье про переобучение и его лечение.
  • Набор C. Рост уверенных выдумок — стоп-сигнал независимо от результата на A. Модель, которая красиво врёт вашим голосом, хуже базовой.

#Проверка результата

Оценка проведена корректно, если выполнены все пять условий:

  1. Вопросы написаны до обучения и не менялись после.
  2. Настройки сэмплинга одинаковы у обеих моделей.
  3. Порядок вариантов перемешан, и вы не знали соответствие во время чтения.
  4. Оценки по стилю и по существу поставлены раздельно.
  5. Результат записан рядом с конфигурацией прогона и датасетом.

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

#Что может пойти не так

  • Вопросы написаны после обучения. Самая распространённая и самая незаметная ошибка: вы бессознательно выбираете вопросы, где новая модель хороша.
  • Отложенная выборка попала в обучение. Тогда набор A измеряет память, а не манеру.
  • Сравнение не вслепую. Знание того, где чей ответ, смещает оценку сильнее, чем кажется.
  • Разные настройки запуска. Другая температура, другая квантизация, другой системный промпт — сравниваются не модели.
  • Оценка одним показателем. «Лучше в целом» скрывает случай «стиль выиграл, факты просели», а это разные решения.
  • Набора C нет вовсе. Тогда рост уверенных выдумок вы заметите не на проверке, а в работе.

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

#Отдельно: проверка после обновления базы

Дообученный адаптер привязан к конкретной версии базовой модели. Когда база обновляется, адаптер формально продолжает загружаться, но поведение может измениться непредсказуемо.

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

#Частые вопросы

#Сколько вопросов достаточно для оценки?

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

#Можно ли поручить оценку модели?

Модель-судья годится для грубого отсева и для повторяемости, но плохо оценивает главное — «звучит ли это как я». Стиль оцениваете вы, потому что эталон стиля есть только у вас. Модель может помочь с проверкой фактической части набора B.

#Что делать, если результат «примерно одинаково»?

Считать это отрицательным результатом. Дообучение стоило вам недели, и «примерно одинаково» означает, что неделя не окупилась. Возвращайтесь к датасету: чаще всего дело в недостатке эталонов именно вашего тона, а не в параметрах.

#Нужно ли сравнивать с базой, если базовая модель мне не нравилась?

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

#Как проверить, что модель не заучила датасет?

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

#Вывод

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

Дисциплина здесь нужна не из педантизма. Автор дообучения — самый заинтересованный и самый ненадёжный судья своей работы, и слепое сравнение это единственное, что защищает от вывода «стало лучше» там, где не стало.

Хотите ИИ, который помнит вас?

Persona держит контекст между чатами и работает на вашем железе — если развернуть её у себя и подключить локальную модель.

Создать аккаунт