# Fine-tuning: SFT, LoRA, PEFT

> Fine-tuning LLM: когда нужен SFT, чем LoRA/PEFT дешевле полного файнтюна и что ожидают услышать на собеседовании AI-инженера.

Раздел: [LLM: обучение и инференс](https://ml-book.com/s/llm/) · Страница темы: https://ml-book.com/t/finetuning/ · Обновлено: 2026-09-16 · Источник: ml-book.com, учебник делается сообществом

## Интуиция

После [претрейнинга](https://ml-book.com/t/pretraining/) модель знает «всё», но говорит как интернет. Дообучение (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.

> 🎛 Интерактивная визуализация — на странице темы: https://ml-book.com/t/finetuning/

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

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

Любимый вопрос собеседований: «клиент хочет дообучить модель — что уточнишь?» Правильный рефлекс — сначала исчерпать дешёвые варианты. Свежие или приватные факты — это [RAG](https://ml-book.com/t/rag-basics/), а не файнтюн: знания в весах быстро устаревают, а 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.

[Проверить готовность за 5 минут](https://ml-book.com/diag/?utm_source=topic&utm_campaign=rat002&utm_content=finetuning)

## Связанные темы

- [Претрейнинг и scaling laws](https://ml-book.com/t/pretraining/)
- [Alignment: RLHF и DPO](https://ml-book.com/t/alignment/)
- [Инференс: KV-cache, квантизация, спекулятивный декодинг](https://ml-book.com/t/inference/)
- [Сэмплирование: temperature, top-k, top-p](https://ml-book.com/t/sampling/)

---

Интерактив, тест из 12 вопросов и карточки терминов — на странице темы: https://ml-book.com/t/finetuning/
Весь учебник в markdown: https://ml-book.com/llms-full.txt · Оглавление для агентов: https://ml-book.com/llms.txt
