Přeskočit na obsah
11/30Kapitola 11 z 30

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:

TEXT
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:

TEXT
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:

TEXT
<|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|>assistant

Tyto 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?:

TEXT
 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:

TEXT
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šit

SFT 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 ywy_w před yly_l, maximalizujte

P(ywyl)=σ(r(yw)r(yl))P(y_w \succ y_l) = \sigma\big(r(y_w) - r(y_l)\big)

což je v kódu celá tréninková smyčka:

reward_model.pyPYTHON
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átoranaučená váha na užitečnostna správnostna 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.

Tí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 modelskutečná kvalitavytvořená délka
počáteční policy12,5880,9743,365
po optimalizaci31,6960,00012,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ě kupuje

Standardní 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:

objective=E[r(y)]βDKL(πθπref)\text{objective} = \mathbb{E}\big[r(y)\big] - \beta \, D_{\mathrm{KL}}\big(\pi_\theta \,\|\, \pi_{\text{ref}}\big)

Reference πref\pi_{\text{ref}} 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é β\beta:

β\betarewardskutečná kvalitadélkaKL
031,6990,00012,4982,994
131,6970,00012,4972,993
528,3180,28510,7002,163
1512,8601,5422,5520,151
3010,4261,7191,3030,025
609,6321,7690,9080,005
samotný referenční model9,1621,7910,6870

Čtěte poslední řádek proti zbytku. Při β=0\beta = 0 a β=1\beta = 1 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 β=60\beta = 60 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 β\beta vodítko praskne a při vysokém β\beta 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.

Algoritmus, 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:

dpo.pyPYTHON
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 policylossvelikost gradientu
už silně preferuje vítěze0,51300,0401
už ho preferuje, slabě0,66850,0488
totožná s referencí0,69310,0500
preferuje poraženého0,79810,0550
silně preferuje poraženého1,00550,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ě ln2\ln 2, což je kotva pro kontrolu libovolné implementace: policy totožná se svou referencí se nenaučila nic a měla by sedět na ln2\ln 2.)

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ěl

Dvě 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.

Post-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.


Výš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.

  1. 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.

  2. 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.

  3. Schulman, J., Wolski, F., Dhariwal, P., Radford, A. and Klimov, O. Proximal Policy Optimization Algorithms. arXiv:1707.06347 (2017).

  4. 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.

  5. 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.

  6. 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.

  7. Bai, Y. et al. Constitutional AI: Harmlessness from AI Feedback. arXiv:2212.08073 (2022).

  8. Zhou, C. et al. LIMA: Less Is More for Alignment. arXiv:2305.11206 (2023).

  9. Hu, E. J. et al. LoRA: Low-Rank Adaptation of Large Language Models. arXiv:2106.09685 (2021).

  10. Dettmers, T., Pagnoni, A., Holtzman, A. and Zettlemoyer, L. QLoRA: Efficient Finetuning of Quantized LLLMs. arXiv:2305.14314 (2023).

Necháte výběr modelu na LIA?

Tvořte se všemi modely AI na jednom místě – začněte ještě dnes zdarma.