Содержание курса 26 / 37

26 / 37 · Адаптация и эффективные модели

Обучение на инструкциях и выравнивание

Предобученный декодер продолжает текст; ассистент отвечает и останавливается. Заметка разбирает два этапа обучения, которые дают эту разницу, — дообучение с учителем на диалогах «инструкция — ответ» и оптимизацию по предпочтениям людей (модель вознаграждения с PPO или DPO без неё) — и на примере шаблона чата показывает, что архитектура не меняется вовсе.

На этой странице 11

Заметка о GPT показала базовую модель, получившую «Find the value of n in the equation n + 2 = 6.». Она решила уравнение, а потом продолжала выдавать новые уравнения, потому что именно это следует за таким текстом в вебе. Та же модель после двух дальнейших этапов обучения отвечает в несколько строк и останавливается. Эта заметка описывает эти этапы. Архитектуру они не трогают; они меняют веса и формат входа.

Обозначения. Промпт xx и ответ yy; политика πθ(y∣x)\pi_\theta(y \mid x) — обучаемая языковая модель; πref\pi_{\text{ref}} — её замороженная исходная копия; модель вознаграждения rϕ(x,y)r_\phi(x, y) оценивает ответы; yw≻yly_w \succ y_l означает, что человек предпочёл ywy_w ответу yly_l.

Отправная точка: базовая модель и шаблон чата#

Прежде всякого обучения сравним базовую контрольную точку Llama 3.2 1B с её обученной на инструкциях сестрой. Их напечатанные деревья модулей совпадают строка в строку: те же 16 блоков, то же внимание, тот же словарь. Различаются веса и ещё одно: обученная модель ожидает вход, обёрнутый в шаблон чата (chat template). Для разговора в одну реплику токенизатор выдаёт

<|begin_of_text|><|start_header_id|>system<|end_header_id|>

Cutting Knowledge Date: December 2023
Today Date: 13 Nov 2025

<|eot_id|><|start_header_id|>user<|end_header_id|>

Find the value of n in the equation n + 2 = 6.<|eot_id|>

а модель продолжает заголовком ассистента и своим ответом, заканчивая <|eot_id|>. Специальные токены размечают роли и границы реплик; модель научилась останавливаться на <|eot_id|>, а код обслуживания прекращает декодирование там же. Её ответ на уравнение: «Subtract 2 from both sides … n = 4. So, the value of n is 4.» — и она останавливается. Шаблон — часть контракта модели; если подать обученной модели сырой текст без него, она склоняется к поведению базовой модели (продолжает текст вместо ответа, не останавливается вовремя).

Два этапа между этими контрольными точками:

Рисунок

От базовой модели к ассистенту

Этапы SFT, RLHF и DPOБазовая модель через обучение с учителем на демонстрациях становится моделью после SFT. Её ответы ранжируют люди, и по ранжированию обучается модель вознаграждения, а политика оптимизируется PPO по вознаграждению с KL-штрафом и становится выровненной моделью. Пунктирный путь DPO ведёт от модели после SFT прямо к выровненной модели по тем же парам предпочтений, без модели вознаграждения.базовая модельследующий токенмодель после SFTотвечает и стопмодель вознагр.Брэдли–Терривыровненная модельответы, что нравятсядемонстрацииранжированиеPPO: r − β·KLDPO: пары, без модели вознагр.Этапы SFT, RLHF и DPOБазовая модель через обучение с учителем на демонстрациях становится моделью после SFT. Её ответы ранжируют люди, и по ранжированию обучается модель вознаграждения, а политика оптимизируется PPO по вознаграждению с KL-штрафом и становится выровненной моделью. Пунктирный путь DPO ведёт от модели после SFT прямо к выровненной модели по тем же парам предпочтений, без модели вознаграждения.базовая модельследующий токенмодель после SFTотвечает и стопмодель вознагр.Брэдли–Терривыровненная модельответы, что нравятсядемонстрацииранжированиеPPO: r − β·KLDPO
Два этапа после предобучения. Обучение с учителем (SFT) обучает базовую модель на диалогах-демонстрациях обычной функцией потерь следующего токена и учит формату ответа. Затем оптимизация по предпочтениям использует сравнения: в RLHF люди ранжируют ответы модели после SFT, по ранжированию обучается модель вознаграждения, а политика оптимизируется PPO так, чтобы повышать вознаграждение, пока KL-штраф удерживает её возле модели после SFT; DPO (пунктир) приходит к оптимуму той же цели прямо по парам предпочтений, без модели вознаграждения. Архитектура при этом не меняется.

Дообучение с учителем#

Дообучение с учителем (supervised fine-tuning, SFT) — это дообучение из предыдущих заметок с другим набором данных и без нового выходного слоя: цель обучения — цель предобучения,

LSFT=−∑t∈responselog⁡πθ(yt∣x,y<t),\mathcal L_{\text{SFT}} = -\sum_{t \in \text{response}} \log \pi_\theta(y_t \mid x, y_{<t}),

обычно с функцией потерь, ограниченной токенами ответа, чтобы модель не училась воспроизводить промпты. Данные и есть весь метод. В работе InstructGPT (Ouyang et al., 2022) демонстрации писали подрядчики; открытые наборы вроде UltraChat, No Robots и MathInstruct дают от десятков тысяч до миллионов диалогов. Писать их вручную дорого, и стандартных обходных путей два:

  • Self-instruct / Alpaca (Wang et al., 2023; Taori et al., 2023): начать со 175 написанных людьми затравочных инструкций, попросить сильную модель породить новые инструкции и ответы на них (52 000 для Alpaca) и дообучиться на результате. Модель-ученик наследует поведение порождающей модели — это форма дистилляции.
  • Предобучение на инструкциях (instruction pre-training; Cheng et al., 2024): порождать пары «инструкция — ответ» из самих документов предобучения, чтобы данные инструкций были так же широки, как корпус.

SFT с LoRA или QLoRA на модели в 7 млрд параметров помещается на один GPU; весь конвейер этой заметки обычно так и запускают.

После SFT модель отвечает. Чего SFT не хватает, так это сигнала о том, какие альтернативы плохи. Softmax нормирован, поэтому повышение показанного токена понижает остальные: для трёх токенов с равными логитами один шаг градиента размером 1 по −log⁡p1-\log p_1 сдвигает логиты на e1−p=(2/3,−1/3,−1/3)e_1 - p = (2/3, -1/3, -1/3), и вероятности меняются с (1/3,1/3,1/3)(1/3, 1/3, 1/3) на (0.576,0.212,0.212)(0.576, 0.212, 0.212). Логит каждой альтернативы опускается пропорционально её текущей вероятности, будь то гладкий, уверенный и неверный ответ или безобидный пересказ, а демонстрации могут обобщаться и на промпты, которых в них не было. Чего в функции потерь нет никогда — ответа, помеченного как худший, чем другой. Оптимизация по предпочтениям добавляет именно этот сравнительный сигнал.

Оптимизация по предпочтениям#

С моделью вознаграждения: RLHF#

Ouyang et al. (2022) вслед за Christiano et al. (2017) и Stiennon et al. (2020) добавляют этап, использующий сравнения, а не демонстрации:

  1. Для каждого промпта сэмплировать из модели после SFT несколько ответов (разные seed, температуры).
  2. Люди их ранжируют. Ранжирование kk ответов даёт (k2)\binom{k}{2} пар (yw,yl)(y_w, y_l).
  3. Обучить модель вознаграждения rϕr_\phi — обычно модель после SFT со скалярным выходным слоем — согласовываться со сравнениями по модели Брэдли–Терри: P(yw≻yl∣x)=σ(rϕ(x,yw)−rϕ(x,yl)),LRM=−log⁡σ(rϕ(x,yw)−rϕ(x,yl)).P(y_w \succ y_l \mid x) = \sigma\big(r_\phi(x, y_w) - r_\phi(x, y_l)\big), \qquad \mathcal L_{\text{RM}} = -\log \sigma\big(r_\phi(x, y_w) - r_\phi(x, y_l)\big). Вознаграждение определено лишь с точностью до константы и только на том распределении ответов, на котором модель обучалась.
  4. Оптимизировать политику обучением с подкреплением (PPO), чтобы максимизировать вознаграждение, оставаясь рядом с моделью после SFT: max⁡θ  Ex, y∼πθ[rϕ(x,y)]−β DKL(πθ(⋅∣x) ∥ πref(⋅∣x)).\max_\theta\; \mathbb E_{x,\, y \sim \pi_\theta}\big[r_\phi(x, y)\big] - \beta\, D_{\mathrm{KL}}\big(\pi_\theta(\cdot \mid x)\,\|\,\pi_{\text{ref}}(\cdot \mid x)\big).

KL-член делает метод честным: без него политика находит ответы с высокой оценкой rϕr_\phi, которые оказываются бессмыслицей, потому что модель вознаграждения точна только возле виденных ею данных (взлом вознаграждения, reward hacking). β\beta задаёт, насколько далеко может уйти политика.

Эмпирический результат, сделавший метод стандартом: оценщики-люди предпочли ответы модели InstructGPT на 1.3 млрд параметров ответам GPT-3 на 175 млрд (Ouyang et al., 2022, аннотация и рисунок 1). Обучение на предпочтениях изменило поведение модели сильнее, чем стократное увеличение размера.

Без модели вознаграждения: DPO#

PPO дорог (четыре модели в памяти: политика, эталонная модель, модель вознаграждения, функция ценности) и капризен в настройке. Rafailov et al. (2023) показали, что у цели с KL-регуляризацией выше есть оптимум в замкнутом виде,

π∗(y∣x)∝πref(y∣x) exp⁡ ⁣(r(x,y)/β),\pi^*(y \mid x) \propto \pi_{\text{ref}}(y \mid x)\, \exp\!\big(r(x, y)/\beta\big),

который можно обратить: вознаграждение — функция политики, r(x,y)=βlog⁡π∗(y∣x)πref(y∣x)+constr(x, y) = \beta \log \frac{\pi^*(y \mid x)}{\pi_{\text{ref}}(y \mid x)} + \text{const}. Подстановка в правдоподобие Брэдли–Терри исключает rr и даёт функцию потерь только по политике:

LDPO=−log⁡σ ⁣(βlog⁡πθ(yw∣x)πref(yw∣x)−βlog⁡πθ(yl∣x)πref(yl∣x)).\mathcal L_{\text{DPO}} = -\log \sigma\!\Big(\beta \log \frac{\pi_\theta(y_w \mid x)}{\pi_{\text{ref}}(y_w \mid x)} - \beta \log \frac{\pi_\theta(y_l \mid x)}{\pi_{\text{ref}}(y_l \mid x)}\Big).

Прямая оптимизация предпочтений (direct preference optimization, DPO) обучает политику на парах предпочтений функцией потерь в стиле классификации: поднять логарифм отношения у предпочтённого ответа и опустить у отвергнутого, каждый относительно эталонной модели. Ни модели вознаграждения, ни сэмплирования при обучении, две модели в памяти. Вывод точен для этой цели; что даёт лучшую модель на практике — DPO или PPO, — зависит от данных и всё ещё обсуждается, а реализованы оба в библиотеке TRL от Hugging Face.

Как оценивать ассистента#

Перплексия ничего не говорит о полезности, а единственного эталонного ответа не существует. Обычные инструменты, которые подробнее разбирает заметка об оценке LLM:

  • Попарные предпочтения людей в масштабе. Chatbot Arena показывает пользователям два анонимных ответа и спрашивает, какой лучше; по множеству таких голосов считается рейтинг в стиле Эло.
  • Бенчмарки с моделью-судьёй. MT-Bench оценивает многоходовые ответы с сильной моделью в роли судьи; AlpacaEval сравнивает ответы модели с ответами эталонной модели и приводит долю побед.
  • Бенчмарки способностей базовой модели (рассуждения, знания) по-прежнему применимы, и после выравнивания результаты на них могут падать — это налог на выравнивание (alignment tax).

Как выбрать модель для адаптации#

Три практических правила, все эмпирические и зависящие от времени:

  • Предпочитать контрольную точку, прошедшую SFT и оптимизацию по предпочтениям, если задача — не чистое дополнение текста; её поведение — то, на которое рассчитаны шаблон и стек обслуживания.
  • Не предобучать. Продолжение предобучения на предметной области иногда того стоит; начинать с нуля почти никогда не стоит за пределами нескольких организаций.
  • Свежая небольшая модель (около 1–10 млрд параметров) обычно лучше старой большой на общих задачах, а большой выровненной модели для классификации или суммаризации часто не нужно дообучение — достаточно хорошо написанного промпта с ожидаемым форматом выхода.

Что изменилось#

Предобученная базоваяПосле SFTПосле оптимизации по предпочтениям
Обучена наВеб-текст, следующий токенДиалоги «инструкция — ответ»Пары предпочтений
ПоведениеПродолжает текстОтвечает и останавливаетсяОтвечает так, как предпочитают люди
Учится на отвергнутых ответахНетНетДа
АрхитектураТа жеТа жеТа же
Формат входаСырой текстШаблон чатаШаблон чата

Ограничения#

  • Данные определяют поведение, включая их ошибки и предубеждения; демонстрации, написанные для одной аудитории, обучают модель для этой аудитории.
  • Взлом вознаграждения и угодливость (sycophancy). Вознаграждение, выученное по оценкам людей, поощряет то, что нравится оценщикам, включая уверенный тон и согласие.
  • Налог на выравнивание. Некоторые способности базовой модели ухудшаются.
  • Не источник знаний. Оба этапа предназначены для того, чтобы сформировать поведение — то, как модель отвечает. Обновлённые веса могут усвоить факты из обучающих диалогов, случайно или намеренно, но эти этапы не надёжная замена широкому предобучению или поиску.
  • Оценка — самое трудное. Предпочтения шумны, а судьи — модели; следующие заметки к этому возвращаются.

Что нужно запомнить#

  • Модель, обученная на инструкциях, — это базовая архитектура с другими весами и шаблоном чата из специальных токенов ролей; без шаблона она склоняется к поведению базовой модели.
  • SFT: функция потерь следующего токена на ответах ассистента в оформленных диалогах; данные — от людей или порождённые более сильной моделью (self-instruct, Alpaca).
  • RLHF: ранжировать сэмплы, обучить модель вознаграждения Брэдли–Терри, оптимизировать вознаграждение минус β\beta KL относительно модели после SFT через PPO. Модель с RLHF на 1.3 млрд предпочли GPT-3 на 175 млрд.
  • DPO: оптимум той же цели, записанный как функция потерь по политике, −log⁡σ(βΔlog⁡-ratio)-\log\sigma(\beta\Delta\log\text{-ratio}), без модели вознаграждения.
  • Оценивать ассистентов попарными предпочтениями и бенчмарками с судьёй и следить за налогом на выравнивание.

Ноутбук#

week08_modern_LLM.ipynb. Номера ячеек считают все ячейки, включая текстовые, начиная с 1. Приведённые числа взяты из прогона, сохранённого в курсе; у ячеек, изменённых с тех пор под текущие версии библиотек, сохранённого выхода нет.

  • Ячейки 6–11 запускают базовую контрольную точку Llama 3.2 1B на промпте с уравнением как вопрос и как текст для дополнения; сохранённые выходы — продолжения, описанные в заметке о GPT.
  • Ячейки 13–16 запускают обученную на инструкциях контрольную точку на том же промпте в формате messages и печатают короткий ответ, который останавливается после n=4n = 4.
  • Ячейки 18–20 печатают оба дерева модулей и подтверждают str(pipe_pretrained.model) == str(pipe.model).
  • Ячейка 22 применяет шаблон чата токенизатора с tokenize=False и печатает приведённую выше строку.
  • Ячейки 25–32 описывают SFT, Alpaca, RLHF и DPO со ссылками на тренеры TRL; ячейки 33–37 перечисляют MT-Bench, AlpacaEval и арены и дают изложенные выше советы по выбору модели.

Дальше#

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

Литература#