Диагностика Mock-интервью
Главная · LLM: обучение и инференс

Fine-tuning: SFT, LoRA, PEFT

Как дообучить готовую LLM под свою задачу: когда это вообще нужно, почему полный файнтюн стоит как самолёт и как LoRA обучает доли процента параметров почти без потери качества.

Интуиция

После претрейнинга модель знает «всё», но говорит как интернет. Дообучение (fine-tuning) — это короткая специализация: научить её нужному стилю, формату, домену или манере отвечать. Аналогия: выпускник университета (base model) проходит стажировку в компании — общие знания уже есть, осталось привить рабочие привычки.

Классический рецепт — SFT (supervised fine-tuning): собираем пары «промпт → эталонный ответ» и учим модель тем же next token prediction, но с одной тонкостью — лосс считается только по токенам ответа. Токены промпта маскируются: мы не хотим учить модель генерировать вопросы пользователей, мы учим её отвечать.

Почему полный файнтюн дорог

При полном файнтюне (full fine-tuning) обновляются все веса. Память при этом — совсем не «размер модели»: для обучения с Adam нужно держать веса, градиенты и два состояния оптимизатора на каждый параметр:

M ≈ веса (2 байта) + градиенты (2) + состояния Adam m, v (8) + мастер-веса fp32 (4) ≈ 16 байт × N

Для 7 млрд параметров это уже ~112 ГБ — не влезает ни в одну одиночную GPU. Вторая беда — катастрофическое забывание (catastrophic forgetting): агрессивно дообучая на узком домене, легко испортить общие способности модели.

PEFT и LoRA: учим мало, получаем много

Идея PEFT (parameter-efficient fine-tuning) — заморозить базовую модель и обучать лишь небольшую добавку. Самый популярный метод — LoRA (Low-Rank Adaptation). Вместо того чтобы менять матрицу весов W размера d×k напрямую, изменение представляют низкоранговым произведением:

W′ = W + ΔW = W + A·B,   A ∈ ℝd×r, B ∈ ℝr×k, r ≪ min(d, k)

Обучаются только A и B: это r·(d+k) параметров вместо d·k. При d = k = 4096 и r = 16 — это 131 тысяча вместо 16,8 миллиона на одну матрицу, меньше процента. После обучения ΔW можно влить в W (просто сложить матрицы) — на инференсе никакого оверхеда, модель неотличима по скорости от исходной. QLoRA идёт дальше: замороженную базу квантуют в 4 бита, а LoRA-адаптеры учат поверх — так 70-миллиардные модели дообучают на одной GPU.

💡 Ключевая мысль LoRA опирается на наблюдение, что сдвиг весов при адаптации имеет низкий эффективный ранг: чтобы «повернуть» поведение готовой модели, не нужно трогать все d×k чисел — хватает узкого моста ранга r.

Поиграй с рангом: даже r = 64 — это меньше процента параметров модели, а типичные r = 8–16 дают на большинстве задач качество, близкое к полному файнтюну. Обрати внимание, как мало меняется память от роста r: почти всю её съедает хранение замороженной базы, поэтому 4-битная квантизация в QLoRA даёт главный выигрыш.

Когда файнтюн не нужен

Любимый вопрос собеседований: «клиент хочет дообучить модель — что уточнишь?» Правильный рефлекс — сначала исчерпать дешёвые варианты. Свежие или приватные факты — это RAG, а не файнтюн: знания в весах быстро устаревают, а SFT на новых фактах провоцирует галлюцинации. Формат и тон часто решаются промптингом и few-shot примерами за час вместо недель. Файнтюн оправдан, когда нужен устойчивый специфический стиль/формат на большом потоке запросов, узкий домен с особым языком, или когда длинный промпт с примерами стал слишком дорогим и его хочется «вжечь» в веса.

⚠️ Подводный камень SFT — плохой способ добавить модели знания. Дообучение на фактах, которых не было в претрейне, учит модель скорее форме уверенного ответа, чем самим фактам, и усиливает галлюцинации. Стиль и формат — да, файнтюн; актуальные факты — ретривал.
🎤 На собеседовании
  • «Промптинг, RAG или файнтюн?» — по порядку стоимости: сначала промпт и few-shot, для фактов — RAG, файнтюн — когда нужен стабильный стиль/формат/домен и есть данные и бюджет на оценку качества.
  • «Как работает LoRA и почему она не замедляет инференс?» — ΔW = A·B ранга r учится отдельно, после обучения складывается с W — архитектура и латентность не меняются.
  • «Сколько памяти на полный файнтюн 7B?» — ~16 байт на параметр с Adam и mixed precision: порядка 112 ГБ, отсюда и популярность PEFT.
  • «Что такое catastrophic forgetting и как смягчить?» — потеря общих навыков при узком дообучении; помогают маленький learning rate, подмешивание общих данных, LoRA вместо полного FT.