Своя модель

Как собрать датасет для дообучения ИИ из своих оценок

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

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

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

#Почему качество важнее количества

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

Дообучение — это не «закачка знаний», а настройка поведения. Модель учится тому, как отвечать: в каком тоне, с какой структурой, с какими акцентами. Поэтому один отличный пример ценнее десяти посредственных:

  • он показывает желаемый стиль без шума;
  • он не конфликтует с другими примерами;
  • он отражает реальный, а не выдуманный сценарий.

Вывод простой: лучше меньше, да чище.

#В каком формате нужны данные

Почти любое дообучение языковой модели сводится к парам «вход → желаемый выход». Чаще всего встречаются два формата:

  • Вопрос — ответ. Пользователь спросил, модель должна ответить вот так.
  • Инструкция — ответ. Задана задача («перепиши короче», «составь план»), и есть эталонное выполнение.

В виде структуры одна обучающая пара выглядит примерно так:

Поле Назначение
instruction что просили сделать
input контекст или исходный текст (опционально)
output эталонный ответ, который мы считаем правильным

Технически это обычно хранится как строки JSON (формат JSONL — по одной паре на строку). Но важнее не синтаксис, а содержание: каждая пара должна быть примером, который вы действительно хотели бы получить от модели снова.

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

#Как лайки и выделение фрагментов становятся данными

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

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

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

Именно так устроена Persona: оценки и выделенные фрагменты складываются в персональный датасет, из которого позже можно собрать обучающую выборку для своей модели.

#Где этот подход даёт сбой

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

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

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

#Чистка и баланс

Собранные пары — это ещё сырьё, а не готовый датасет. Перед дообучением выборку стоит привести в порядок:

  • Убрать дубли. Одинаковые или почти одинаковые пары перекашивают обучение в сторону повторов.
  • Снять противоречия. Если на похожий вопрос есть два несовместимых «правильных» ответа — оставьте тот, что отражает текущее предпочтение.
  • Выровнять баланс. Не должно быть так, что девять из десяти примеров про один узкий сценарий, а остальные темы почти не представлены. Иначе модель съедет в перекошенную сторону.
  • Проверить длину и формат. Слишком короткие или обрывочные ответы лучше отбраковать — они учат модель лениться.

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

#Сколько примеров нужно

Точной цифры, одинаковой для всех, не существует — она зависит от модели, задачи и того, насколько узкий стиль вы хотите привить. Но ориентир такой: для заметного сдвига поведения компактной модели обычно достаточно сотен-тысяч качественных пар, а не десятков тысяч сырых.

Хорошая стратегия — итеративная:

  1. Накопите первую партию чистых примеров.
  2. Дообучите модель и оцените результат на практике.
  3. Найдите слабые места, доберите примеры именно под них.
  4. Повторите.

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

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

#Можно ли обучать модель прямо на истории переписки, без оценок?

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

#Нужно ли включать в датасет мои собственные сообщения?

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

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

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

#Что делать с отрицательными оценками?

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

#Уходят ли мои оценки куда-то наружу?

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

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

Зависит от интенсивности работы: при ежедневном использовании и осознанной простановке оценок первая рабочая партия в несколько сотен пар набирается за недели, а не за дни. Ускорить это можно только одним честным способом — писать эталоны руками, а не ждать, пока они накопятся сами.

#Вывод

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

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

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

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