Dla każdego promptu x polityka π_θ generuje grupę G = {y_1, …, y_N} (N rolloutów, typowo 8–64). Każdy y_i dostaje skalarną nagrodę r_i od verifiera (rule-based: poprawność, format). GRPO liczy advantage każdego rolloutu jako znormalizowaną nagrodę względną w grupie:
Â_i = (r_i - mean(r_1..r_N)) / std(r_1..r_N)
czyli rollout lepszy niż średnia grupy dostaje dodatni advantage, gorszy ujemny — bez żadnego modelu wartości. Następnie aktualizacja polityki używa surrogate loss w stylu PPO z clippingiem importance ratio:
L = E[ min( ρ_i·Â_i, clip(ρ_i, 1-ε, 1+ε)·Â_i ) ] - β·KL(π_θ || π_ref)
gdzie ρ_i = π_θ(y_i|x)/π_old(y_i|x) to importance ratio, ε to clip (typowo 0.2), β·KL to regularyzacja do polityki referencyjnej (SFT). Kluczowe różnice względem PPO: (1) brak sieci value — baseline z grupy, (2) advantage liczone na poziomie całej sekwencji (outcome reward), nie per-token, (3) KL liczone bezpośrednio jako estymator nieobciążony zamiast w nagrodzie. Wariant GRPO z DeepSeekMath był pierwotnie dla matematyki; DeepSeek-R1 użył go do pełnego reasoning RL.
Klasyczny PPO w RLHF wymaga czterech sieci równocześnie: polityki (trenowana), modelu referencyjnego (KL), modelu nagrody i modelu wartości (krytyka estymującego value V(s) jako baseline advantage). Model wartości jest tak duży jak polityka, podwaja zużycie pamięci i jest trudny do trenowania (sam wymaga stabilizacji). W zadaniach z nagrodą tylko na końcu sekwencji (math/code: 0/1 za poprawność) krytyk jest szczególnie problematyczny. GRPO zauważa: jeśli wygenerujemy N odpowiedzi na ten sam prompt, ich średnia nagroda jest naturalnym, bezparametrowym baseline'em — nie trzeba uczyć V(s). To usuwa krytyka, halvuje pamięć i upraszcza pipeline.
Generacja N niezależnych odpowiedzi na ten sam prompt. To podstawa GRPO — grupa zastępuje sieć value jako źródło baseline’u.
Znormalizowana nagroda względna rolloutu w grupie. Zastępuje A = r - V(s) z PPO bez modelu wartości. Rdzeń wkładu GRPO.
Oficjalna
Funkcja straty: min(ρ·Â, clip(ρ,1±ε)·Â) z KL-penalty do polityki referencyjnej. Dziedziczy stabilność PPO bez jego modelu wartości.
Oficjalna
Gdy wszystkie N rolloutów dostają tę samą nagrodę (wszystkie poprawne lub wszystkie błędne), std≈0 i dzielenie (r-mean)/std daje wartości numerycznie niestabilne lub zero gradient. Dr.GRPO wskazuje to jako bias oryginalnego GRPO.
Normalizacja per-sekwencja faworyzuje dłuższe poprawne odpowiedzi (suma per-token grad rośnie z długością), prowadząc do niekontrolowanego puchnięcia CoT. Znany artefakt vanilla GRPO.
Jeśli wiele update'ów wykonuje się na tej samej partii rolloutów, ρ = π_θ/π_old odbiega od 1 i clipping przestaje wystarczać — trening się rozjeżdża.
Proximal Policy Optimization — clipped surrogate objective z modelem wartości jako baseline. GRPO usunie z niego krytyka.
PPO z 4 sieciami (policy, reference, reward, value) staje się standardem RLHF — kosztownym pamięciowo i trudnym do stabilizacji.
Shao i in. (DeepSeek) publikują DeepSeekMath (arXiv:2402.03300) i wraz z nim GRPO — usunięcie modelu wartości, baseline z grupy rolloutów. Pierwsze zastosowanie: matematyczne reasoning na DeepSeekMath 7B.
DeepSeek-R1 (styczeń 2025) używa GRPO na pełną skalę MoE 671B do trenowania long-CoT reasoning. GRPO staje się de-facto standardem open-source reasoning RL.
ByteDance DAPO (clip-higher, dynamic sampling, bez KL), Dr.GRPO (usuwa bias z normalizacji std i długości), GRPO++ — fala ulepszeń adresujących niestabilności i bias'y oryginalnego GRPO.
GRPOTrainer w Hugging Face TRL, natywne wsparcie w verl (ByteDance) i OpenRLHF czynią GRPO jednolinijkowym przepisem na reasoning RL.
Złożoność czasowa: O(N · L · |θ|) sampling + O(N · L · |θ|) update — bez forward modelu value. Złożoność przestrzenna: O(2 · |θ|) (policy + reference) vs O(3-4 · |θ|) w PPO.
Generacja N długich rolloutów per prompt dominuje koszt (jak w reasoning RL). Usunięcie modelu wartości pomaga pamięciowo, ale nie zmienia tego, że sampling jest wąskim gardłem.
Liczba rolloutów per prompt — definiuje jakość baseline'u (średniej grupy). Małe N = wysoka wariancja advantage; duże N = lepszy sygnał kosztem compute. Typowo 8–64.
Granica clippingu importance ratio (jak w PPO). Ogranicza wielkość pojedynczego update'u, zapobiega destabilizacji. Typowo 0.2; DAPO eksperymentuje z asymetrycznym clip.
Siła regularyzacji KL do polityki referencyjnej. DeepSeek-R1 używa bardzo małego β (agresywne RL); część wariantów (DAPO) usuwa KL całkowicie dla większej eksploracji.
Sposób normalizacji nagrody względnej w grupie. Standard: (r - mean)/std. Niektóre warianty pomijają dzielenie przez std (gdy std≈0 dla łatwych promptów daje to niestabilność — Dr.GRPO to adresuje).
Czy advantage stosowany jest do całej sekwencji (outcome reward, vanilla GRPO) czy per-token/per-step (process reward). Process supervision daje gęstszy sygnał ale wymaga PRM.
GRPO można stosować do gęstych i MoE modeli (DeepSeek-R1 = MoE 671B). Sam algorytm jest agnostyczny względem architektury polityki.
Brak routingu — GRPO to algorytm optymalizacji, nie struktura modelu.
W obrębie generacji grupy i w obrębie update’u pełna równoległość per-device. Brak sieci value zmniejsza komunikację i pamięć względem PPO.
GRPO to RL na LLM — dominuje sampling (vLLM/SGLang) i trening (FSDP/Megatron). Brak modelu wartości zmniejsza zapotrzebowanie na VRAM o ~połowę względem PPO.
Algorytmicznie agnostyczny; implementacje TPU istnieją (JAX), choć ekosystem jest CUDA-first.
Sam algorytm jest sprzętowo neutralny, ale skala LLM RL wymaga GPU/TPU; CPU niewykonalny dla modeli > 1B.