Урок по треку LLM-инженерия 6 мин

Дообучение и LoRA

Когда дообучать, SFT, LoRA и QLoRA, выравнивание через RLHF и DPO, данные и катастрофическое забывание.

Дообучение (fine-tuning) меняет веса модели на ваших примерах. Это мощный, но дорогой инструмент, и первый вопрос на собесе почти всегда: «а точно нужно дообучать?»

Когда дообучать, а когда нет

Порядок, в котором обычно пробуют:

  1. Промпт и few-shot примеры. Дёшево, быстро, обратимо.
  2. RAG, если не хватает знаний: свежих, внутренних, часто меняющихся.
  3. Дообучение, если нужно изменить поведение: стабильный формат, стиль и тон, узкая задача классификации или извлечения, которую модель решает нестабильно, или перенос качества большой модели в маленькую и дешёвую (дистилляция).

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

SFT

Supervised fine-tuning: пары «вход и желаемый выход», модель учится предсказывать выход. Потеря обычно считается только по токенам ответа, а не промпта.

Что важно:

  • Качество данных важнее количества. Сотни-тысячи чистых, разнообразных, согласованных примеров часто лучше десятков тысяч шумных.
  • Формат примеров должен совпадать с тем, как модель будет вызываться в проде: тот же шаблон чата, тот же системный промпт.
  • Отложенная валидационная выборка и оценка на своём наборе до и после.
  • Следить за переобучением: потеря на валидации растёт, ответы копируют обучающие.

Катастрофическое забывание

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

LoRA

Полное дообучение обновляет все веса: нужна память под веса, градиенты и состояния оптимизатора (для Adam ещё два числа на параметр). Для модели на 7 млрд параметров это десятки гигабайт.

LoRA (low-rank adaptation) замораживает исходные веса и учит маленькую добавку низкого ранга:

W' = W + (alpha / r) · B·A
W: d×k (заморожен),  B: d×r,  A: r×k,  r ≪ min(d, k)
  • Обучаемых параметров r·(d + k) вместо d·k: для матрицы 4096×4096 при r = 8 это 65 тысяч вместо 16,7 млн.
  • B инициализируют нулями, поэтому в начале обучения модель совпадает с исходной.
  • alpha масштабирует добавку; часто берут alpha равным r или 2r.
  • Адаптеры весят мегабайты, их можно хранить много и переключать под задачи поверх одной базовой модели. Для инференса добавку можно влить в веса, тогда задержки не будет.

QLoRA: базовая модель квантуется в 4 бита (формат NF4), а LoRA-адаптеры учатся в 16 битах поверх неё. Позволяет дообучать крупные модели на одной GPU.

Какие слои адаптировать: классически проекции внимания (q, v), на практике часто все линейные слои: так качество ближе к полному дообучению.

Выравнивание: RLHF и DPO

После SFT модель учат отвечать так, как предпочитают люди.

  • RLHF: собирают пары ответов с оценкой «какой лучше», обучают модель награды (reward model), затем оптимизируют LLM методом RL (классически PPO) на максимизацию награды со штрафом за отклонение от исходной модели (KL). Сложно и нестабильно.
  • DPO (direct preference optimization): учит модель прямо на парах «лучше и хуже» без отдельной модели награды и RL. Проще и стабильнее, поэтому стал популярен.

Для reasoning-моделей используют RL с проверяемыми наградами: ответ на задачу по математике или код можно автоматически проверить.

Дистилляция

Большая модель-учитель генерирует ответы на ваши задачи, маленькая модель-ученик дообучается на них. Результат: дешёвая и быстрая модель, близкая к учителю на узкой задаче. Проверяйте условия использования модели-учителя: не все провайдеры разрешают учить на выходах своих моделей конкурирующие модели.

Частые ошибки

  • Дообучать, чтобы добавить знания, вместо RAG.
  • Не иметь оценочного набора до начала: непонятно, стало ли лучше.
  • Учить на данных другого формата, чем в проде.
  • Игнорировать забывание: модель лучше на задаче и хуже на всём остальном.

Что спросят на собесе

  • Промпт, RAG или дообучение: как выбрать.
  • Как работает LoRA, сколько параметров обучается, зачем B инициализируют нулями.
  • Чем QLoRA отличается от LoRA.
  • RLHF против DPO.
  • Что такое катастрофическое забывание и как его избежать.

Закрепите за 5 минут

После урока в тренажёре 3-5 проверочных вопросов, дальше модуль уходит в повторения.