Fine-tuning и веса · Fine-tuning and weights · урок 1 · 12 мин

Fine-tuning, RAG или prompt: когда что

Fine-tuning vs RAG vs prompting

ТемыFine-tuningRAG

Зачем

После урока ты объяснишь, когда задачу решает prompt, когда RAG, а когда fine-tuning, и защитишь выбор измерением, а не вкусом. Это первый вопрос любого собеседования про «свою модель» и первый спор на работе, когда кто-то предлагает «дообучить модель на наших документах».

Знать и вести себя — разные вещи

LLM (large language model, большая языковая модель) проходит два этапа. На pretraining (предобучение) она читает триллионы tokens (кусочков слов, которыми модель читает текст) и учится предсказывать следующий token; так в неё попадают язык, факты о мире и умение рассуждать. На post-training (обучение после предобучения) её учат быть ассистентом: отвечать по делу, держать формат, отказывать в опасном.

Fine-tuning (дообучение) — продолжение обучения готовой модели на твоих данных. Оно меняет weights (веса, числа внутри модели), а значит меняет поведение: тон, формат, язык ответа, длину, манеру вызывать tools (функции и API, которые модель может вызвать). Главная мысль урока: fine-tuning учит поведению, а не надёжным новым фактам. Авторы LIMA дообучили модель на 65B параметров всего на 1 000 отобранных пар «вопрос → ответ» и пришли к выводу, что «almost all knowledge in large language models is learned during pretraining». Дообучение настраивает форму ответа; знание приходит из предобучения.

Почему факты не вшивают в веса

Банк хочет, чтобы ассистент называл текущую комиссию за перевод. Соблазн — дообучить модель на таблице тарифов. Это плохая идея по четырём причинам: - тариф поменялся — модель надо переобучать, а старая версия ещё долго уверенно называет старую цифру; - модель не может сослаться на источник: нет документа, который можно показать клиенту или аудитору; - веса нельзя отфильтровать по правам доступа: что попало в веса, доступно любому пользователю модели; - факт, выученный из нескольких примеров, воспроизводится ненадёжно, и модель путает его с похожими.

Факты, которые меняются и требуют доказательства, приходят через RAG (retrieval-augmented generation: поиск по документам и подстановка найденного в context, окно текста, которое модель видит при ответе) и через tools (например, вызов API тарифов). Там гарантия живёт в коде: версия документа, фильтр прав, цитата. Гайд OpenAI по точности описывает это как две оси: оптимизация context, когда модели не хватает знаний, и оптимизация самой модели, когда не хватает «consistency of behavior» (стабильности поведения).

Лестница от дешёвого к дорогому

Ступень Что меняет Данные Цена
Prompt и context engineering ничего в весах 0 – десятки примеров часы
RAG и tools что модель видит при ответе документы, API дни – недели
SFT через LoRA формат, тон, язык, вызов tools сотни – тысячи пар часы на одной GPU
Preference tuning (DPO, ORPO) какой из двух ответов лучше сотни – тысячи пар часы
Continued pretraining знание языка или домена миллиарды tokens дни на кластере
Обучение с нуля всё триллионы tokens месяцы

SFT (supervised fine-tuning, обучение на парах «запрос → эталонный ответ»), LoRA (low-rank adaptation, малая обучаемая добавка к замороженным весам), DPO и ORPO (обучение на парах «хороший ответ / плохой ответ») и continued pretraining (продолжение предобучения на сыром тексте) разберём в следующих уроках модуля. Сейчас важен порядок: подниматься на ступень выше только тогда, когда предыдущая измеримо упёрлась в потолок. Большинство прикладных задач останавливается на первых двух строках. Вторая по частоте остановка — LoRA на стиль или формат.

Гайд OpenAI говорит то же: «Prompt engineering is typically the best place to start». Причина практическая: лучший prompt — это baseline (точка отсчёта), с которым ты потом сравнишь любой fine-tune. Без него нельзя доказать, что обучение что-то дало.

Когда fine-tuning — правильный ответ

Законных поводов три. 1. Поведение, которое prompt стабильно не даёт. Строгий JSON для другой системы, тон на диалекте, классификация обращений по 30 категориям: prompt справляется в 90 % случаев, а бизнесу нужно 99 %. 2. Цена и задержка. Большая модель с длинным prompt делает узкую задачу хорошо. Маленькую модель можно дообучить делать то же без длинного prompt: она дешевле, быстрее и помещается на собственное железо. Обучение маленькой модели на ответах большой называют distillation (дистилляция знаний). 3. Язык, который база знает слабо. Никакой prompt не научит модель казахской морфологии; тут нужна работа с весами (урок a6-5).

И пять поводов не обучать: задача про факты; prompt ещё не выжат; нет held-out набора (отложенных примеров, которых модель не видела) и записанного критерия «достаточно хорошо»; данные не очищены от PII (personally identifiable information, персональные данные); нужное поведение можно гарантировать кодом — валидатором формата, фильтром, проверкой суммы.

Условный пример с числами

Банк хочет маршрутизатор обращений по трём направлениям: «карты», «споры», «продукты». Сейчас это делает большая модель через API. Цифры ниже учебные, важна форма решения. - Baseline: большая модель, prompt с пятью примерами — 94 % верных маршрутов на 500 новых обращениях, около 1 200 tokens prompt на каждый запрос. - Вариант A: модель на 8B параметров с тем же prompt — 81 %. Не проходит. - Вариант B: та же 8B с LoRA на 3 000 размеченных обращениях — 95 %, prompt 80 tokens, работает на своей GPU.

Вариант B оправдан: поведение узкое и стабильное, размеченные данные есть, prompt короче в 15 раз, и сравнение идёт с честным baseline, а не с голой моделью. Но тарифы маршрутизатор по-прежнему не называет — их даёт tool.

Как это звучит на собеседовании

Вопрос обычно смешан: «ассистент называет неверную комиссию и звучит слишком сухо — дообучать или RAG?». Сильный ответ делит его на две проблемы. Неверная комиссия — сначала смотрим trace (журнал всех шагов одного запроса): нашёлся ли нужный документ и попал ли он в context? Если нет, чиним индекс; если да, чиним генерацию. В обоих случаях fine-tuning — не тот инструмент. Сухой тон — это поведение: сначала system prompt с примерами и замер, LoRA только если prompt упёрся, и выпуск только если LoRA обыграл baseline на новых данных.

Схема

Термины · Key terms

pretraining
предобучение на огромном корпусе: язык и знания
post-training
обучение после предобучения: модель учится быть ассистентом
fine-tuning
дообучение готовой модели на своих данных; меняет веса
weights
веса, числа внутри модели, которые меняет обучение
RAG (retrieval-augmented generation)
поиск документов и подстановка их в context при ответе
SFT (supervised fine-tuning)
обучение на парах «запрос → эталонный ответ»
LoRA (low-rank adaptation)
малая обучаемая добавка к замороженным весам
baseline
точка отсчёта: базовая модель с лучшим prompt
held-out set
отложенный набор примеров, которых модель не видела при обучении
distillation
обучение маленькой модели на ответах большой

Сделай сам

Возьми три задачи и для каждой напиши ступень лестницы, одну фразу «почему» и что будет baseline: 1. Ассистент банка должен называть текущую ставку по депозиту. 2. Ответ модели должен быть валидным JSON с пятью полями для CRM, сейчас prompt даёт ошибку формата в 8 % ответов. 3. Ассистент должен вежливо отвечать по-казахски, а базовая модель пишет по-казахски с грамматическими ошибками.

Обсуди с тьютором: покажи свои три ответа и попроси тьютора защищать противоположный выбор для задачи 2 (например, «валидатор и повтор запроса вместо LoRA»); найди, при каких цифрах прав он, а при каких ты.

Проверь себя · ответ под вопросом

1Почему тарифы банка не учат через fine-tuning?
Тарифы меняются, и модель пришлось бы переобучать, а старая версия продолжала бы называть старую цифру. Веса не дают цитаты для клиента и аудитора и не фильтруются по правам доступа. Факт из немногих примеров воспроизводится ненадёжно, поэтому тарифы приходят через RAG или tool, а сумма проверяется кодом.
2Что такое baseline при решении о fine-tuning и почему это не «голая» модель?
Baseline — базовая модель с лучшим prompt, а для фактических задач ещё и с RAG. Сравнение с голой моделью преувеличивает выигрыш: хороший prompt мог дать то же самое без обучения. Fine-tune оправдан, только если обыграл именно этот baseline на held-out наборе.
3Назови два законных повода для fine-tuning.
Первый — поведение, которое prompt стабильно не даёт: строгий формат, тон, узкая классификация с высокой планкой точности. Второй — цена и задержка: маленькая дообученная модель на своём железе заменяет большую с длинным prompt. Третий, реже, — язык, который база знает слабо.

Interview questions · US / UK

1Our customer assistant sometimes quotes the wrong fee and sounds too stiff. Should we fine-tune the model or use RAG?
Strong answer: Split it into two problems; for the wrong fee, read the trace first (retrieval miss vs generation error); fees belong in a versioned document or a fee tool with the amount checked in code; tone is behaviour, so start with a better system prompt and measure; train a LoRA only if the prompt plateaus and it beats the prompt baseline on held-out data.
2Follow-up: why not just fine-tune the fee table into the model?
Strong answer: Fees change and old weights keep the stale number; no citation for customers or auditors; weights can't be filtered by access rights; facts learned from few examples are recalled unreliably; a tool or retrieval gives freshness and provenance.
3When is fine-tuning the right call? Give one concrete case.
Strong answer: Behaviour the prompt can't deliver reliably (strict format, narrow classification, dialect tone) or cost and latency (a small model replacing a large one); concrete case like a request router on an 8B model with LoRA; preconditions: baseline, held-out set, written pass bar, clean data.

Ключевые фразы · Say it aloud

Материалы