Od základního modelu k asistentovi: SFT, RLHF, DPO a GRPO
Požádejte základní model o haiku: opakuje větu. Pak sledujte, jak se reward model naučí upřednostnit délku před správností.
Na této stránce
Požádejte GPT-2 — schopně předtrénovaný jazykový model — aby napsal haiku o moři:
prompt: Write a haiku about the sea.
The sea is a beautiful place.
The sea is a beautiful place.
The sea is a beautiful place.
The sea is a beautiful place.
The sea is a beautiful place.Není zmatený a ve své práci neselhal. Dělá přesně to, k čemu ho kapitola 10 vytrénovala: dostane nějaký text a vytvoří pravděpodobné pokračování. Na internetu po řádku jako Napište haiku o moři. často následuje próza o moři a věta, která se právě objevila, se s nezvykle vysokou pravděpodobností objeví znovu. Model je vynikající prediktor next-token a nepoužitelný asistent.
Teď stejný požadavek na model postavený stejným způsobem — Qwen2.5, půl miliardy parametrů, čtyřikrát větší než GPT-2 výše a přesto podle jakéhokoli měřítka roku 2026 pořád drobný — po tréninkových fázích, o kterých je tato kapitola:
Whispers of the ocean,
Silent depths where waves meet,
Mysteries in the vast blue.Čtyřnásobek parametrů model nenaučí přestat mluvit. Rozdíl mezi těmito dvěma výstupy není škálování, architektura ani objem dat. Je to post-training: druhá fáze, o řády menší než pretraining, která vezme prediktor textu a promění ho v něco, co odpovídá.
První fáze: ukázat mu, jak vypadá odpověď
Odkaz na sekci: První fáze: ukázat mu, jak vypadá odpověďPrvní krok je nejméně efektní a odvede většinu práce. Shromáždíte příklady instrukcí spárovaných s dobrými odpověďmi a pokračujete v tréninku se stejnou loss jako v kapitole 8 — predikovat další token — ale pouze na části s odpovědí. To je supervised fine-tuning, neboli SFT.
O jazyce se neučí nic nového. Učí se formát: že po textu tohoto tvaru následuje text tamtoho tvaru a pak se zastaví. Podívejte se znovu na selhání base model. Na otázku odpověděl v první větě a pak nedokázal přestat, protože nic v jeho tréninku nikdy neoznačilo konec odpovědi. Zastavení je naučené chování.
Proto také model potřebuje vědět, kde jsou hranice, což je právě chat template:
<|im_start|>system
You are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>
<|im_start|>user
What is the capital of France?<|im_end|>
<|im_start|>assistantTyto značky <|im_start|> a <|im_end|> jsou skutečné tokeny ve slovníku, přidané před fine-tuning, a model je viděl milionkrát přesně v těchto pozicích. Díky nim ví, kdo je na řadě a kde tah končí.
Vynechejte template a dejte modelu holou otázku — tím mu předkládáte sekvenci, kterou v tréninku neviděl. Změřeno: stejný model, stejná otázka, stejné greedy decoding:
Bez template — surový řetězec What is the capital of France?:
The capital of France is Paris.
To verify this, I will use a simple
Python code snippet to confirm that
Paris is indeed the capital city of
France.
[...and then it starts writing a
Python script to check its own answer]S template:
The capital of France is Paris.Odpověď je v obou případech správná, ale bez značek model sklouzne k psaní Pythonu, aby se sám ověřil, protože prompt, který dostal, nepřipomíná nic, na čem byl fine-tuned. Tohle je nejčastější příčina tvrzení „model zhloupl, když jsem ho zavolal přímo“: template není ozdoba kolem modelu, je součástí modelu, a špatný template je tichá degradace bez připojené chyby.
Druhá fáze a problém, který má vyřešit
Odkaz na sekci: Druhá fáze a problém, který má vyřešitSFT má strop a tím stropem jsou data. Chcete-li provést fine-tuning na ukázce, potřebujete, aby někdo napsal ideální odpověď — a u většiny zajímavých otázek je napsat dobrou odpověď těžké, pomalé, drahé a výsledkem je přesně jedna odpověď, jejíž kvalitu neumíte ověřit.
V čem jsou lidé dobří, je porovnávání. Když anotátor vidí dvě odpovědi, dokáže během několika sekund spolehlivě říct, která je lepší, i když by nedokázal vytvořit ani jednu z nich. Na této skutečnosti stojí celá druhá fáze a právě tuto část většina vysvětlení obrací naruby:
Lidé nepíšou odpovědi. Řadí dvojice.
Data jsou tedy dvojice — prompt, dvě odpovědi a informace, která vyhrála. To nelze zapojit do next-token loss, protože neexistuje cílová sekvence. Potřebuje to jiný stroj.
Reward model a co se opravdu učí
Odkaz na sekci: Reward model a co se opravdu učíNemůžete se během tréninku ptát člověka na skóre každé odpovědi — šlo by o miliony úsudků. Vytrénujete tedy model, aby lidi napodoboval: reward model, který vezme odpověď a vrátí skalár.
Trénink z porovnání používá výsledek z roku 1952. Model Bradley–Terry2 říká, že pokud mají dvě položky latentní síly, pravděpodobnost, že jedna porazí druhou, je logistická funkce jejich rozdílu. Otočte to a vznikne loss: když člověk upřednostnil před , maximalizujte
což je v kódu celá tréninková smyčka:
loss = -F.logsigmoid(reward(chosen) - reward(rejected)).mean() Všimněte si, co model nikdy nevidí: absolutní skóre. Učí se jen rozdíly, což je přesně to, co data obsahují.
Teď část, kterou stojí za to změřit. Reward model se učí, co anotátoři odměňovali, a anotátoři jsou lidé. Tady je simulace, v níž skutečná kvalita odpovědi závisí jen na užitečnosti a správnosti — délka nemá žádnou hodnotu — ale simulovaný anotátor má mírnou preferenci delších odpovědí, když je vše ostatní podobné, což je dobře zdokumentované lidské zkreslení. Vytrénujte reward model na 2000 porovnáních a přečtěte jeho váhy:
| délkový bias anotátora | naučená váha na užitečnost | na správnost | na délku |
|---|---|---|---|
| 0,0 | +1,00 | +1,00 | +0,01 |
| 0,3 | +0,98 | +1,00 | +0,15 |
| 0,6 | +0,97 | +1,00 | +0,27 |
| 1,2 | +1,00 | +0,99 | +0,59 |
Reward model funguje dokonale. Věrně se naučil preference, které mu byly ukázány — včetně té části preferencí, která nemá s kvalitou nic společného. Reward model není mírou dobra; je mírou toho, co anotátoři vybrali, a každý bias v anotační skupině je nyní koeficient v diferencovatelné funkci, proti níž bude optimalizovat mnohem větší model.
Reward hacking, změřeno
Odkaz na sekci: Reward hacking, změřenoTím se dostáváme k tomu, co se stane, když to optimalizujete. Dejte policy pevný rozpočet úsilí, který může rozdělit mezi vlastnosti odpovědi, s realistickou asymetrií: být užitečný a správný je drahé a být delší je levné — prostě pokračujete v psaní.
Reward na jednotku úsilí pro výše trénovaný model: užitečnost 8,26, správnost 8,31, délka 31,70. Délka se vyplácí skoro čtyřikrát lépe než správnost, ne proto, že by reward model byl rozbitý, ale protože je levná.
Optimalizujte proti tomuto reward a sledujte obě čísla:
| skóre reward model | skutečná kvalita | vytvořená délka | |
|---|---|---|---|
| počáteční policy | 12,588 | 0,974 | 3,365 |
| po optimalizaci | 31,696 | 0,000 | 12,497 |
Reward vzrostl 2,5krát. Věc, kterou měl reward měřit, klesla na nulu. Policy objevila, že může získat obrovské skóre tím, že bude psát dlouze a neřekne nic, a žádná část tréninkové smyčky si toho nemohla všimnout, protože reward model je uvnitř smyčky definicí dobra.
To je reward hacking, a pokud jste někdy přemýšleli, proč jsou chatovací modely tak mnohomluvné, tato tabulka je velká část odpovědi.
Co KL penalizace skutečně kupuje
Odkaz na sekci: Co KL penalizace skutečně kupujeStandardní obranou je penalizovat policy za přílišný odklon od výchozího bodu, přičemž vzdálenost se měří pomocí KL divergence z kapitoly 4:
Reference je SFT model — policy před fází reinforcement. Tvrzení zní, že to brání modelu zatoulat se do degenerovaného chování. Zjistěme, kolik z tohoto tvrzení přežije měření. Stejné nastavení, proměnné :
| reward | skutečná kvalita | délka | KL | |
|---|---|---|---|---|
| 0 | 31,699 | 0,000 | 12,498 | 2,994 |
| 1 | 31,697 | 0,000 | 12,497 | 2,993 |
| 5 | 28,318 | 0,285 | 10,700 | 2,163 |
| 15 | 12,860 | 1,542 | 2,552 | 0,151 |
| 30 | 10,426 | 1,719 | 1,303 | 0,025 |
| 60 | 9,632 | 1,769 | 0,908 | 0,005 |
| samotný referenční model | 9,162 | 1,791 | 0,687 | 0 |
Čtěte poslední řádek proti zbytku. Při a penalizace nedělá vůbec nic: reward má oproti KL takovou hodnotu, že optimalizátor zaplatí pokutu a stejně hackuje. Mezi 5 a 15 se chování prudce zlomí. A při se skutečná kvalita vyšplhala zpět na 1,769 — což je pořád méně než 1,791, které měl referenční model předtím, než to celé začalo.
Jedna výhrada, než to číslo někdo začne citovat: 1,791 v posledním řádku a 0,974, které první tabulka dává počáteční policy, jsou dvě různá měření téhož pre-RL modelu, provedená v obou experimentech odděleně. Porovnávejte řádky uvnitř jedné tabulky, nikdy napříč tabulkami — závěr každé tabulky stojí na jejích vlastních řádcích a ani jeden nezávisí na baseline té druhé.
Poctivé shrnutí tedy není „KL penalizace brání reward hacking“. Je to:
KL penalizace reward hacking nebrání. Omezuje, jak daleko se policy může vzdálit od reference — a protože selhání vyžaduje pohyb, pomáhá to. Je to ale vodítko, ne náprava: při nízkém vodítko praskne a při vysokém dostanete zpět referenční model a celá drahá fáze nekoupila nic.
Užitečné pásmo je úzké, jeho poloha závisí na reward model a neexistuje způsob, jak ho najít jinak než pohledem. Proto musí být referenční model dobrý — KL je podlaha na kvalitě reference, ne strop nad selháním — a z velké části proto je tato fáze obtížná v praxi, nikoli v principu.
PPO a proč ho DPO vytlačilo
Odkaz na sekci: PPO a proč ho DPO vytlačiloAlgoritmus, který umožnil, aby to fungovalo ve velkém měřítku, je Proximal Policy Optimization.3 V jednom odstavci: odhaduje advantage každé odpovědi, aktualizuje policy tak, aby zvýšila pravděpodobnost odpovědí nad baseline, a ořezává velikost každé jednotlivé aktualizace, aby velký odhad advantage nemohl policy zničit v jednom kroku. Aplikováno na jazykové modely4 to znamená držet ve hře čtyři modely najednou — policy, reference, reward model a critic — přičemž policy během tréninku průběžně generuje nové vzorky.
Funguje to, vytvořilo to InstructGPT a všechno, co z něj vzešlo, a je to opravdu obtížné: čtyři modely v paměti, sampling v tréninkové smyčce a zasloužená pověst nestability. Předstírat, že to lze implementovat v blogovém článku, by bylo nepoctivé, takže tato kapitola to nedělá.
To, co ho pro většinu účelů nahradilo, vzniklo z jednoho postřehu. Výše uvedený cíl regularizovaný KL má optimální policy v uzavřeném tvaru a tento výraz lze invertovat: reward lze zapsat pomocí optimální policy a reference. Dosazení zpět do Bradley–Terry loss způsobí, že reward model zcela zmizí. Zůstane supervised loss na preferenčních dvojicích — žádný sampling, žádný critic, žádný reward model, dva modely v paměti místo čtyř.
To je Direct Preference Optimization,5 a jsou to dva řádky:
def dpo_loss(pi_w, pi_l, ref_w, ref_l, beta=0.1):
"""pi_* and ref_* are summed log-probabilities of a full response."""
logits = beta * ((pi_w - ref_w) - (pi_l - ref_l))
return -F.logsigmoid(logits) Přečtěte si, co říká. Nahoru se tlačí veličina, o kolik více policy preferuje vítěze oproti referenci, minus o kolik více preferuje poraženého. Reference není penalizace přišroubovaná dodatečně — je uvnitř loss, a proto DPO nepotřebuje samostatný KL člen.
Vlastnost, na které nejvíc záleží, je v gradientu. Vyhodnoťte loss a její gradient na stejné dvojici v pěti různých stavech policy:
| stav policy | loss | velikost gradientu |
|---|---|---|
| už silně preferuje vítěze | 0,5130 | 0,0401 |
| už ho preferuje, slabě | 0,6685 | 0,0488 |
| totožná s referencí | 0,6931 | 0,0500 |
| preferuje poraženého | 0,7981 | 0,0550 |
| silně preferuje poraženého | 1,0055 | 0,0634 |
Gradient roste, jak se policy více mýlí. Dvojice, které model už zvládá, nepřispívají téměř ničím; dvojice, které má obráceně, dominují aktualizaci. DPO váží každý příklad podle toho, jak moc se policy právě mýlí, automaticky, bez plánování — a právě toto samovážení je mechanismus, který dělá práci, již u PPO dělal odhad advantage a critic. (Loss ve třetím řádku je přesně , což je kotva pro kontrolu libovolné implementace: policy totožná se svou referencí se nenaučila nic a měla by sedět na .)
GRPO6 volí jinou cestu ven ze stejného problému. Zachovává sampling smyčku, ale maže critic: místo aby trénovalo model k predikci baseline, vzorkuje skupinu odpovědí na stejný prompt a přímo používá průměrný reward skupiny jako baseline. Advantage odpovědi je to, o kolik byla lepší než její sourozenci. Tím vymění celý model za větší batch, a právě to učinilo praktickým trénink s ověřitelným reward — téma kapitoly 12.
Zobrazit podrobnosti
Ještě tři části krajiny post-training, stručně.
RLAIF a Constitutional AI.7 Anotátor nemusí být člověk. Dejte modelu psaný soubor principů a požádejte ho, aby kritizoval a revidoval vlastní výstupy nebo aby si vybral mezi dvěma kandidáty, a máte preferenční dataset vyrobený rychlostí a cenou stroje. Zřejmá námitka — model si známkuje vlastní domácí úkol — je skutečná, a poctivá odpověď zní, že to funguje lépe, než to zní, protože posuzování je snazší než generování, což je stejná asymetrie, na níž stojí celá kapitola.
LIMA a jak málo dat to potřebuje.8 Tisíc pečlivě kurátorovaných demonstrací vytvořilo konkurenceschopného asistenta. Navrhované vysvětlení je, že pretraining už nainstaloval znalosti i formát a post-training má pouze vybrat, které z existujících chování modelu se mají dostat na povrch. Pokud je to správně, kvalita dat pro post-training dominuje kvantitě — a chování oboru od té doby naznačuje, že tomu lidé věří.
LoRA a QLoRA.910 Fine-tuning všech vah velkého modelu vyžaduje paměť pro váhy, jejich gradienty a stav optimalizátoru — šestnáct bajtů na parametr z kapitoly 10, přes dva průměry, které kapitola 6 ručně vybudovala — v měřítku, které potřebuje cluster. LoRA zmrazí původní váhy a vedle nich trénuje dvojici matic s nízkou hodností, čímž snižuje počet trénovatelných parametrů o řády; QLoRA navíc kvantizuje zmrazený základ na 4 bity. Obojí je zde popsáno jako technika. Zda je fine-tuning vůbec správná věc, za kterou utrácet peníze, je jiná otázka, a ta patří kapitole 20.
Alignment tax a otázka, na kterou nikdo neodpověděl
Odkaz na sekci: Alignment tax a otázka, na kterou nikdo neodpovědělDvě věci, které si vzít dál.
První je, že tato fáze má cenu, a ta se projevuje jako schopnost. Modely se po alignment tréninku často měřitelně zhorší v některých benchmarkových úlohách — alignment tax — protože se změnil cíl: odpověď, která je bezpečná, opatrná a dobře formátovaná, není vždy odpověď, která maximalizuje přesnost. Část tohoto rozdílu se podařilo technicky odstranit a část je skutečný trade-off, nikoli chyba k opravě.
Druhá je otázka, kterou slovo aligned skrývá. Alignment s kým? Řetězec je tento: firma napíše pokyny, kontraktoři je interpretují, jejich porovnání trénují reward model, reward model tvaruje policy a policy odpovídá na otázku od někoho, kdo z toho nic neviděl. Každý článek je volba konkrétních lidí a žádný z algoritmů v této kapitole nemá názor na to, zda jsou tyto volby dobré.
To není rétorická ozdoba. Je to konkrétní důvod, proč dva frontier modely odmítají různé požadavky, proč tentýž model mezi verzemi mění názor a proč „aligned“ popisuje proces, ne vlastnost artefaktu. Matematika v této kapitole je vyřešená. Tato část ne.
Kam to vede dál
Odkaz na sekci: Kam to vede dálPost-training naučil model odpovídat. Nenaučil ho přemýšlet před odpovědí, a tyto dvě věci se liší způsobem, který se ukazuje jako trénovatelný.
Kapitola 12 je o tom, co se stane, když modelu dovolíte utratit více výpočtu na těžkou otázku v době odpovídání, nikoli v době tréninku — chain of thought, reinforcement learning z ověřitelných rewards a důvod, proč model, který ukazuje svůj postup, sám sebe nejen vysvětluje, ale počítá jinak. Také splácí dluh z této kapitoly: GRPO v ní existuje, dělá práci, kterou dříve dělal critic PPO, na rewards, které vůbec nepotřebují anotátora, protože důkaz buď projde kontrolou, nebo ne.
Zdroje a metoda
Odkaz na sekci: Zdroje a metodaVýše uvedené generace pocházejí z gpt2 a Qwen/Qwen2.5-0.5B-Instruct s greedy decoding, takže se reprodukují přesně. Kapitola 11 kurzu Hugging Face LLM Course prochází SFT a DPO s trl a peft, pokud si chcete spustit skutečnou věc místo simulace; kapitola 7 knihy Sebastiana Raschky Build a Large Language Model (From Scratch) implementuje instruction fine-tuning od začátku do konce bez knihovny.
Reference
Odkaz na sekci: Reference-
Sutton, R. S. and Barto, A. G. Reinforcement Learning: An Introduction, 2nd edition (MIT Press, 2018). Delegování je záměrné: slovníkový rámeček výše je nejmenší použitelná podmnožina a skutečné téma je kniha. ↩
-
Bradley, R. A. and Terry, M. E. Rank Analysis of Incomplete Block Designs: I. The Method of Paired Comparisons. Biometrika 39(3/4), pp. 324–345 (1952). Model párového porovnávání, na němž dnes stojí každý používaný reward model. ↩
-
Schulman, J., Wolski, F., Dhariwal, P., Radford, A. and Klimov, O. Proximal Policy Optimization Algorithms. arXiv:1707.06347 (2017). ↩
-
Ouyang, L. et al. Training language models to follow instructions with human feedback. arXiv:2203.02155 (2022). InstructGPT — článek, který z třífázového receptu udělal standard. Předcházel mu Christiano et al. (arXiv:1706.03741), který představil učení reward model z lidských porovnání, a Stiennon et al. (arXiv:2009.01325), který ho aplikoval na sumarizaci. ↩
-
Rafailov, R., Sharma, A., Mitchell, E., Ermon, S., Manning, C. D. and Finn, C. Direct Preference Optimization: Your Language Model is Secretly a Reward Model. arXiv:2305.18290 (2023). Odvození, které odstraňuje reward model, je v oddílu 4 a stojí za přečtení celé; je kratší než jeho pověst. ↩
-
Shao, Z. et al. DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models. arXiv:2402.03300 (2024). Představuje GRPO v oddílu 4.1. ↩
-
Bai, Y. et al. Constitutional AI: Harmlessness from AI Feedback. arXiv:2212.08073 (2022). ↩
-
Zhou, C. et al. LIMA: Less Is More for Alignment. arXiv:2305.11206 (2023). ↩
-
Hu, E. J. et al. LoRA: Low-Rank Adaptation of Large Language Models. arXiv:2106.09685 (2021). ↩
-
Dettmers, T., Pagnoni, A., Holtzman, A. and Zettlemoyer, L. QLoRA: Efficient Finetuning of Quantized LLLMs. arXiv:2305.14314 (2023). ↩