Своя модель

Сколько примеров нужно для дообучения

Для стиля хватает сотен примеров, для формата — десятков, для знаний не хватит и десятков тысяч. Разбираем пороги по целям и объясняем, почему единого числа не существует.

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

#Короткий ответ

Формат — десятки примеров. Стиль и манера — сотни. Знания — не хватит и десятков тысяч, потому что это не та задача, которую решает дообучение.

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

#Таблица порогов

Цель дообучения Порядок числа примеров Что реально получите
Строгий формат вывода десятки Модель стабильно держит структуру ответа
Один навык, узкая задача 100–300 Заметный сдвиг на этой задаче, риск просадки в остальном
Тон, манера, характер 300–1000 Устойчивое «звучит как надо» без длинного промпта
Личный стиль конкретного человека 500–2000 разнообразных Узнаваемая манера; чем разнообразнее темы, тем лучше
Предметная терминология сотни, плюс поиск по документам Держит словарь, но факты всё равно из поиска
Фактические знания не решается объёмом Уверенные, но ненадёжные ответы

Последняя строка — самая важная. Увеличение датасета в этой задаче не помогает: проблема не в количестве, а в том, что для хранения фактов нужен индекс с возможностью обновления, а не веса. Разбор границы — в статье RAG или fine-tune: что выбрать.

#Почему сотни, а не тысячи

Интуиция подсказывает: раз базовую модель учили на триллионах токенов, то и дообучение требует чего-то сопоставимого. Это неверно, потому что задачи разные.

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

Отсюда практическое следствие: разнообразие важнее объёма. Триста примеров на тридцать разных тем сдвинут манеру надёжнее, чем три тысячи на одну. Во втором случае модель выучит тему, а не стиль, и на остальных вопросах будет отвечать как раньше.

#Порог снизу: когда данных слишком мало

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

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

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

#Порог сверху: когда данных слишком много

Верхнего предела как такового нет, но есть точка, после которой добавление примеров перестаёт что-либо менять, а иногда ухудшает результат.

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

Практическое правило: если добавление двухсот примеров не меняет поведение на отложенной выборке, проблема не в количестве. Смотрите на качество данных и на гиперпараметры, а не на объём.

#Живой ориентир: наш стартовый набор

Чтобы числа в таблице не выглядели абстракцией — конкретный пример из этого репозитория. Стартовый датасет «второй копии» состоит из 347 обучающих примеров и 18 валидационных. Это заведомо маленький набор, собранный как отправная точка для переноса тона на компактную базу, и в инструкции проекта прямо написан ориентир «300–800 примеров для характера».

Что здесь стоит заметить кроме числа:

  • Валидационная выборка — восемнадцать примеров. Мало, но она есть, и это принципиально: без отложенных данных вы не отличите обучение от заучивания.
  • Порядок — сотни, не тысячи. Ровно то, что предсказывает строка «тон и характер» в таблице.
  • Прогон до конца с замеренным результатом мы не публиковали. Пайплайн в репозитории есть — экспорт датасета, скрипт QLoRA, Colab-ноутбук, инструкция по конвертации; отчёта об обучении нет. В самом ноутбуке обучение названо опциональным усилением к системному промпту.

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

#Как понять, что примеров хватило

Объём — не критерий. Критерий — поведение на данных, которых модель не видела:

  1. Отложите 10–15% примеров до обучения. Не после, не «те, что похуже» — случайную долю.
  2. Обучите и прогоните отложенные вопросы. Сравните ответы с эталонами вслепую, не зная, где какая модель.
  3. Прогоните вопросы из тем, которых в датасете не было вовсе. Если там стало заметно хуже — вы обучали слишком тяжело, и дело не в объёме данных.
  4. Если стиль не сдвинулся, а отложенная выборка не пострадала — вот тогда добирайте примеры. Именно в этом случае объём и является ответом.

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

#Где интуиция подводит

«Возьму открытый датасет на сто тысяч строк — точно хватит». Хватит по объёму и не хватит по цели: чужой датасет учит чужой манере. Для переноса вашего стиля сто своих примеров ценнее ста тысяч чужих.

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

«Длинные примеры считаются за несколько». Не считаются. Один длинный ответ — это один сигнал о манере, а не десять. Зато он перекашивает распределение длин, и модель начинает отвечать длиннее, чем вы хотели.

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

#Хватит ли ста примеров?

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

#Считать примеры или токены?

Для прикидки — примеры, для расчёта времени обучения — токены. Датасет из трёхсот коротких реплик и из трёхсот длинных разборов обучается разное время и по-разному влияет на длину ответов модели. Следите, чтобы распределение длин в датасете было похоже на то, что вы хотите получать.

#Можно ли дополнить датасет синтетикой?

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

#Сколько нужно валидационных примеров?

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

#Нужно ли балансировать темы в датасете?

Да, и это влияет сильнее объёма. Если девять из десяти примеров про одну область, модель съедет в неё и будет тянуть туда ответы на посторонние вопросы. Проверять баланс проще всего вручную: разложите примеры по темам и посмотрите на распределение.

#Вывод

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

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

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

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

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