Pipeline składa się z czterech komponentów. (1) Verifier — funkcja R(x, y) dająca nagrodę bez uczonego modelu: dla matematyki — porównanie ostatecznej odpowiedzi z ground-truth (boxed{}, LaTeX equality), dla kodu — wykonanie testów (`pytest`), dla logiki — symboliczny solver, dla formatu — regex sprawdzający strukturę `<think>...</think><answer>...</answer>`. Najczęściej kompozycja kilku R: `R = α·R_correct + β·R_format`. (2) Sampler — model π_θ generuje N (zwykle 8–64) niezależnych rolloutów per prompt z temperaturą 0.6–1.0, każdy może mieć inny long-CoT i inną odpowiedź. (3) Optimizer — algorytm RL aktualizujący politykę. GRPO (Group Relative Policy Optimization, DeepSeek): w grupie N rolloutów liczy się względna nagroda Â_i = (R_i - mean(R)) / std(R) jako advantage; brak modelu wartości; loss = -E[π_θ/π_old · Â] z KL-penalty wobec π_ref. PPO i REINFORCE++ to alternatywy. (4) Iteracja — ponowne sampling z aktualnej polityki, fresh rollouty, kolejna aktualizacja. W trakcie treningu długość CoT samoistnie rośnie (od ~500 do 5 000–10 000 tokenów), a model uczy się autorefleksji bez explicit instructions — słynne „aha moments" z DeepSeek-R1-Zero.
RLHF i DPO uczą LLM zgodności z preferencjami człowieka, ale są ograniczone jakością par etykiet i nie skalują się dobrze na zadania, w których człowiek nie umie ocenić poprawności (zaawansowana matematyka, formalne dowody, kompleksowe debugowanie kodu). Klasyczne zadania matematyczne i programistyczne mają jednak naturalny weryfikator (`==`, `pytest`), który daje nagrodę 0/1 bez ludzkiej etykiety. Reasoning RL wykorzystuje tę asymetrię: model rozwiązuje zadanie wieloma rolloutami, otrzymuje rule-based reward, a polityka jest aktualizowana algorytmem RL (GRPO/PPO/REINFORCE++). W trakcie eksploracji emergentnie wyrasta long-CoT z momentami autorefleksji („wait, let me reconsider"), dając jakość rozumowania niedostępną dla SFT/RLHF.
Funkcja zewnętrzna ewaluująca poprawność odpowiedzi y dla promptu x. Bez parametrów uczonych: matematyka → equality check, kod → pytest, logika → solver, format → regex. Najczęściej kompozycja: R = α·R_correct + β·R_format + γ·R_length.
Oficjalna
Engine generujący N (typowo 8–64) niezależnych rolloutów per prompt z polityki π_θ. Wymaga inference engine high-throughput (vLLM, SGLang) z FlashAttention/PagedAttention dla efektywnego batch generation.
Algorytm aktualizujący politykę. GRPO (DeepSeek): advantage względny w grupie rolloutów per prompt, brak modelu wartości. PPO: klasyk, wymaga value model. REINFORCE++ z baseline'em znormalizowanym.
Oficjalna
Zamrożony SFT model używany jako kotwica — KL(π_θ || π_ref) penalizuje ucieczkę polityki, chroni jakość bazowych zdolności. Niektóre warianty (DAPO, SimPO-style) eliminują π_ref całkowicie.
Oficjalna
Najpoważniejszy problem reasoning RL. Przykłady: model wpisuje tylko `\boxed{42}` bez rozumowania (jeśli nie ma format reward), kradnie odpowiedź z testu jednostkowego (`assert answer == ...`), albo generuje krótkie zaszumione odpowiedzi które przypadkiem trafiają. Trening się „udaje" (reward rośnie), ale model jest bezużyteczny.
Zbyt agresywna polityka KL-free + niska temperatura → model produkuje N kopii tego samego rolloutu, advantage = 0, gradient = 0, trening zamiera. Manifestuje się jako brak postępu na benchmarku przy „normalnym" loss'ie.
Jeśli max_tokens ustawiony jest mniejszy niż naturalna długość CoT, model uczy się być sztucznie zwięzły i traci jakość rozumowania. Symptom: jakość pozytywnie skoreluje z pozwolonym budgetem.
W produkcyjnych pipeline'ach (oddzielny cluster vLLM samplujący, oddzielny trener) rolloutry mogą pochodzić z polityki o kilkadziesiąt updates starszej. Przy zbyt dużym lag'u importance ratio π_θ/π_old wybucha i loss się rozjeżdża.
Trening tylko na zadaniach matematycznych daje doskonałego matematyka, który gubi się w reszcie. Reasoning RL działa najlepiej na mieszance domen (math + code + logic + general QA z LLM-as-judge).
CoT prompting pokazuje, że LLM rozwiązują znacznie trudniejsze zadania, gdy myślą „krok po kroku". Otwiera drogę do trenowania modeli, które myślą długo zamiast krótko.
Wrzesień 2024: OpenAI wypuszcza o1-preview. Pierwszy publicznie dostępny LLM trenowany na long-CoT przez RL. Skok jakości na AIME (12% → 74%) i Codeforces (1 258 → 1 891 ELO). Brak publikacji szczegółów algorytmu.
Styczeń 2025: DeepSeek publikuje R1 i R1-Zero z opisem GRPO i pełnym pipeline RL na MoE 671B. R1-Zero pokazuje, że RL działa nawet BEZ SFT cold-start. Otwarte wagi i metoda demokratyzują reasoning RL — w tygodniach powstają reprodukcje TinyZero, OpenR1, Open-R1 (Hugging Face).
Styczeń 2025: Moonshot AI publikuje Kimi k1.5 — niezależnie odkryty pipeline reasoning RL z REINFORCE++ i length penalty. Potwierdza, że metoda jest reprodukowalna poza DeepSeek.
Wiosna 2025: Alibaba publikuje QwQ-32B (open-source, GRPO). OpenAI wypuszcza o3 z reasoning RL na większą skalę. Anthropic dodaje „extended thinking" do Claude 3.7 / 4. Reasoning RL staje się mainstreamem.
ByteDance publikuje DAPO (Decoupled Advantage Policy Optimization) z lepszą stabilnością. Społeczność wprowadza warianty bez π_ref, z token-level rewards, z asynchronicznymi rolloutami. Reasoning RL przestaje być monolitem GRPO i staje się polem badań.
Złożoność czasowa: O(N · L · |θ|) sampling + O(N · L · |θ|) trening per krok (N rolloutów, L = długość CoT). Złożoność przestrzenna: O(2 · |θ|) parametrów + O(N · L · d) aktywacji rolloutów.
Sampling N=16–64 rolloutów po L=8k–32k tokenów dominuje koszt — łącznie 0.1–2M tokenów inferencji per krok treningu. Dlatego produkcyjne pipeline'y (DeepSeek, OpenAI) trzymają osobny cluster vLLM tylko do samplingu.
Najważniejszy element — szczegóły funkcji nagrody. Najlepsze efekty: kompozycja R_correct (binarne) + R_format (binarne) + opcjonalnie R_length (penalty za zbyt długie). Słaby/szumny verifier = reward hacking, model uczy się wykorzystywać dziurę zamiast rozumowania.
Wybór optymalizatora. GRPO (DeepSeek) — bez modelu wartości, używa grupy rolloutów jako baseline'u, znacznie tańszy niż PPO. PPO — klasyk z RLHF, używany w o1 (rumored). REINFORCE++ — uproszczony wariant z normalizacją.
Liczba niezależnych prób per prompt. W GRPO N=8–64 typowo; mniejsze daje wysoki wariancję advantage, większe — wysokie zużycie compute przy diminishing returns.
Siła KL-penalty wobec polityki referencyjnej (zwykle SFT model). Zbyt niska = polityka ucieka, generacje stają się bełkotem. Zbyt wysoka = model nie eksploruje, brak emergencji long-CoT.
Maksymalna długość rolloutu w tokenach. Determinuje compute samplingu i sufit zdolności modelu. W trakcie RL długość CoT samoistnie rośnie — należy zostawić zapas.
Czy model startuje z czystego base/SFT czy z dedykowanego cold-start CoT. DeepSeek-R1-Zero pokazał, że RL bez SFT też działa (R1-Zero), ale R1 produkcyjny robi krótki SFT na ~kilkuset CoT-przykładach przed RL.
Reasoning RL można łączyć z MoE (DeepSeek-R1 = MoE 671B/37B aktywnych) — wtedy aktywacja jest sparse na poziomie modelu, ale sam paradygmat treningu pozostaje gęsty.
Brak routingu uczonego w samym Reasoning RL. Tryb conditional wynika z faktu, że długość CoT zależy od trudności promptu (model „decyduje" w czasie inferencji ile myślenia poświęcić).
Skalowanie produkcyjne (DeepSeek-R1, o1) wymaga osobnych klastrów do samplingu (vLLM, ~50% sprzętu) i treningu (Megatron/FSDP, pozostałe ~50%) z asynchronicznym przekazywaniem rolloutów.
Reasoning RL jest zdominowany przez sampling długich CoT (vLLM/SGLang z FlashAttention/PagedAttention) i trening (FSDP/Megatron). Oba etapy są heavy GPU.
Możliwe ale niestandardowe — większość frameworków RL (verl, OpenRLHF, TRL) ma pierwotną ścieżkę CUDA. Google DeepMind używa TPU w Gemini Thinking.
Algorytmicznie tak — implementacyjnie reasoning RL wymaga wysokiej przepustowości pamięci dla długich rolloutów; CPU jest niewykonalny dla modeli > 1B.