сеньорчикОткрыть в Telegram
← вся теориятеория к собесу · LLM и RAG

Файнтюн и алайнмент моделей

Зачем это спрашивают

Файнтюн и алайнмент - вопрос «что с этим делать в проде»: дообучать, вешать LoRA или строить RAG. Провальный ответ - «зафайнтюним на нашей базе знаний»: он выдаёт непонимание, что куда кладут.

// Правило темы: факты - в retrieval, поведение - в веса.

SFT, RLHF и DPO: лестница алаймента

SFT (supervised fine-tuning) (instruction tuning) - дообучение на парах «инструкция → ответ»: превращает продолжатель текста в ассистента, задаёт формат и стиль ответов.

RLHF (reinforcement learning from human feedback): на человеческих сравнениях ответов учится reward-модель, затем политика оптимизируется против неё (PPO - proximal policy optimization) с KL-штрафом (Kullback-Leibler) - без него начинается reward hacking: политика ломает reward-модель бессмысленными паттернами.

// DPO (direct preference optimization) срезает угол: прямая оптимизация на парах «лучше/хуже» без отдельной reward-модели и RL-петли (reinforcement learning). Проще, стабильнее - стал массовой заменой RLHF.

reward model
модель человеческих предпочтений - цель оптимизации RLHF
DPO
прямая оптимизация на парах предпочтений, без RL

LoRA против полного дообучения

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

Полный файнтюн - максимум качества при сильном доменном сдвиге (другой язык, специфичный код), но дорого и рискует catastrophic forgetting.

// Переобучение на инструкциях видно как заученные шаблоны и потерю разнообразия; лечится качеством и разнообразием SFT-данных, а не числом эпох.

LoRA
низкоранговые адаптеры: доли процента обучаемых весов

Дообучение или RAG

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

Вшивать факты компании в веса - дорого и недолговечно: база знаний обновилась - модель устарела. RAG (retrieval-augmented generation) обновляется переиндексацией за минуты.

// Смешивать можно и нужно: LoRA под тон и формат + RAG под факты - типовая прод-связка.

Как отвечать: «Дообучить модель на нашей документации или сделать RAG?»

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

Критерий «факты против поведения» + практичная связка + дисциплина оценки - ответ архитектора, а не энтузиаста файнтюна.

На чём валят

  • Файнтюнить факты компании в веса вместо RAG - устареет к следующему релизу базы знаний.
  • RLHF без KL-штрафа - reward hacking: политика ломает reward-модель.
  • LoRA на всё подряд - сильный доменный сдвиг может требовать полного дообучения.
  • Оценивать дообучение на обучающих промптах - нужен отложенный сет.

Проверьте себя

Пять вопросов из банка по этой подтеме. Всего их 10, остальные разбираются в тренажёре.

  1. #finetune_align1 / 5
    Зачем предобученную LLM дополнительно выравнивают через RLHF?
    A)Чтобы модель следовала инструкциям и человеческим предпочтениям, а не просто продолжала текст
    B)Чтобы уменьшить число параметров модели
    C)Чтобы ускорить инференс на GPU
    D)Чтобы модель выучила принципиально новые фактические знания о мире, которых не было в предобучении
    показать ответ и разбор
    +A)Чтобы модель следовала инструкциям и человеческим предпочтениям, а не просто продолжала текст

    // разбор: Предобученная (base) модель лишь продолжает текст по вероятности, она не «помощник». RLHF/выравнивание учит её отвечать полезно, безопасно и в нужном формате: собирают человеческие сравнения ответов, обучают reward-модель, затем оптимизируют политику (PPO и т.п.) под эти предпочтения. Это про поведение и предпочтения, а не про новые факты (их даёт предобучение/RAG) и не про размер/скорость.

  2. #finetune_align2 / 5
    Чем DPO привлекателен как альтернатива классическому RLHF с PPO?
    A)DPO обучает модель вообще без каких-либо данных о человеческих предпочтениях и сравнениях
    B)DPO увеличивает контекстное окно модели
    C)DPO оптимизирует предпочтения напрямую, без отдельной reward-модели и нестабильного RL
    D)DPO убирает необходимость в размеченных людьми парах предпочтений
    показать ответ и разбор
    +C)DPO оптимизирует предпочтения напрямую, без отдельной reward-модели и нестабильного RL

    // разбор: RLHF с PPO требует обучить отдельную reward-модель, а затем гонять нестабильный RL с KL-штрафом — дорого и капризно по гиперпараметрам. DPO (Direct Preference Optimization) переписывает задачу так, что предпочтения оптимизируются прямым лоссом на парах (winner, loser) без reward-модели и без RL. Данные предпочтений (человеческие сравнения) DPO по-прежнему нужны — он лишь убирает RL-обвязку.

  3. #finetune_align3 / 5
    Бот должен отвечать по постоянно меняющейся базе внутренних документов. Файнтюн или RAG?
    A)Файнтюн: зашить все документы прямо в веса модели — это надёжный и точный способ и не требует внешнего поиска по документам во время ответа
    B)RAG: свежие/меняющиеся факты держат во внешней базе; файнтюн на них дорог и устаревает
    C)Few-shot: вставить все документы в промпт при каждом запросе
    D)Обязательно и то, и другое сразу, иначе вообще не работает
    показать ответ и разбор
    +B)RAG: свежие/меняющиеся факты держат во внешней базе; файнтюн на них дорог и устаревает

    // разбор: Меняющиеся факты — вотчина RAG: обновил базу — ответы свежие, без переобучения. Файнтюн на фактах дорог, вшивает знание в веса намертво и устаревает с каждой правкой документа, плюс рискует галлюцинациями поверх забытого. Файнтюн берут для устойчивого поведения/формата/стиля/домена. Эмпирика: prompt → RAG → fine-tune, по возрастанию стоимости и специфичности.

  4. #finetune_align4 / 5
    После файнтюна на узком наборе модель просела в общих задачах. Как это называется и почему?
    A)Катастрофическое забывание: узкий файнтюн сдвигает веса и портит ранее выученные общие умения
    B)Переобучение по числу эпох, лечится увеличением размера батча
    C)Утечка данных из теста в трейн на этапе подготовки
    D)Это просто случайность начальной инициализации весов — достаточно перезапустить обучение с другого сида
    показать ответ и разбор
    +A)Катастрофическое забывание: узкий файнтюн сдвигает веса и портит ранее выученные общие умения

    // разбор: Catastrophic forgetting: дообучение под узкую задачу тянет веса к новой цели, и представления, отвечавшие за общие умения, деградируют — модель специализируется ценой широты. Смягчают: PEFT/LoRA (базовые веса заморожены — забывать нечему), подмешивание общих данных, меньший learning rate и меньше эпох, регуляризация к исходным весам. Это не про сид и не про размер батча.

  5. #finetune_align5 / 5
    Что критичнее для качества instruction-файнтюна (SFT) при прочих равных?
    A)Максимально возможное число обучающих примеров, включая шумные и противоречивые
    B)Как можно больший learning rate ради скорости обучения
    C)Чем длиннее каждый отдельный обучающий пример, тем стабильно лучше результат
    D)Качество и разнообразие примеров: немного чистых репрезентативных инструкций бьют гору шумных
    показать ответ и разбор
    +D)Качество и разнообразие примеров: немного чистых репрезентативных инструкций бьют гору шумных

    // разбор: Для SFT решает не объём, а качество и покрытие: несколько тысяч чистых, разнообразных, репрезентативных пар инструкция→ответ обычно дают больше, чем сотни тысяч шумных (эффект LIMA и практика). Шум и противоречия в разметке модель послушно впитает. Разнообразие задач важнее длины примера; завышенный lr сорвёт дообучение в забывание. Отсюда упор на курирование данных.

дальше

Теорию прочитали. Навык ставится повторением

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