Woher GRPO stammt
GRPO wurde 2024 im DeepSeekMath-Paper als schlankere Version von PPO (Proximal Policy Optimization, 2017) eingeführt – dem Algorithmus hinter den meisten früheren RL-Feinabstimmungen von Sprachmodellen, einschließlich des für InstructGPT verwendeten RLHF. Es wurde weithin bekannt, als DeepSeek-R1 es in großem Maßstab einsetzte, und ist heute die Standard-RL-Methode in Open-Source-Trainern wie Hugging Face TRL sowie in den meisten RFT-Diensten.
Das Value-Modell ist in der Regel etwa so groß wie das zu trainierende Modell und wird parallel dazu trainiert.
Kein Value-Modell, das trainiert oder im Speicher gehalten werden muss. Der Preis dafür ist die Generierung von N Antworten pro Prompt anstelle von einer.
PPO benötigt eine Baseline, um Rohbewertungen in Vorteile umzuwandeln, und erlernt diese: ein Value-Modell (der „Critic“), das Token für Token die voraussichtliche Bewertung der Antwort vorhersagt. Die Autoren von DeepSeekMath weisen darauf hin, dass dieses Value-Modell in der Regel etwa so groß ist wie das zu trainierende Modell, was eine enorme Belastung für Speicher und Rechenleistung darstellt. Zudem ist die Vorhersage eines Wertes bei jedem Token schwierig, wenn die Belohnung erst am Ende erfolgt. GRPO verzichtet darauf. Es zieht eine Gruppe von Antworten für jeden Prompt als Stichprobe und verwendet die durchschnittliche Bewertung der Gruppe selbst als Baseline.
Der Algorithmus
- Prompts als Stichprobe ziehen. Nehmen Sie einen Batch von Prompts aus Ihren Daten.
- Eine Gruppe generieren. Für jeden Prompt schreibt das aktuelle Modell N Antworten, wobei durch zufälliges Sampling Variationen entstehen. Gruppen von 4–16 sind üblich; DeepSeekMath verwendete 64.
- Bewerten. Der Bewerter vergibt für jede Antwort eine Belohnung, hier 0–1.
- Innerhalb der Gruppe normalisieren. Der Vorteil jeder Antwort ist ihre Bewertung abzüglich des Gruppenmittelwerts, geteilt durch die Standardabweichung der Gruppe. Jedes Token der Antwort erhält denselben Vorteil.
- Mit einem Clipped Objective aktualisieren. Machen Sie Antworten mit positivem Vorteil wahrscheinlicher und solche mit negativem Vorteil unwahrscheinlicher, jedoch niemals um mehr als ein festgelegtes Verhältnis in einem Schritt (siehe unten).
- Optional: Abweichungen bestrafen. Subtrahieren Sie β × die KL-Divergenz von einer eingefrorenen Kopie des Ausgangsmodells.
advantage_i = (score_i − mean(group)) / std(group)
answer 1 2 3 4
score 0.8 0.3 0.6 0.3
− mean +0.3 −0.2 +0.1 −0.2 mean = 0.5
÷ std +1.41 −0.94 +0.47 −0.94 std ≈ 0.21- Der Grader bewertet vier Antworten auf einen Prompt: 0,8, 0,3, 0,6 und 0,3.
- Gruppenmittelwert = (0,8 + 0,3 + 0,6 + 0,3) ÷ 4 = 0,5. Abweichungen vom Mittelwert: +0,3, −0,2, +0,1, −0,2.
- Streuung (Standardabweichung der vier) = √((0,09 + 0,04 + 0,01 + 0,04) ÷ 4) = √0,045 ≈ 0,21.
- Vorteile = Abweichungen ÷ 0,21 ≈ +1,41, −0,94, +0,47, −0,94. Antwort 1 wird am stärksten aufgewertet, Antwort 3 ein wenig; die Antworten 2 und 4 werden gleichermaßen abgewertet.
- Einige Bibliotheken teilen bei der Berechnung der Streuung durch n − 1 (hier ≈ 0,24, was +1,22, −0,82, +0,41, −0,82 ergibt). Die Vorzeichen und die Rangfolge, die das Modell steuern, bleiben gleich.
- Gruppe A erzielt 0, 0, 0, 0: Jede Antwort ist fehlgeschlagen. Mittelwert 0, Streuung 0, also ist jeder Vorteil 0 und dieser Prompt trägt nichts bei. (Implementierungen fügen der Streuung eine winzige Konstante hinzu, damit nicht durch null geteilt wird.)
- Gruppe B erzielt 0,61, 0,60, 0,60, 0,59: praktisch identisch. Aber die Streuung ist winzig (≈ 0,007), sodass die Vorteile +1,41, 0, 0, −1,41 betragen – genauso groß wie in einer Gruppe mit echten Unterschieden.
- Die Division durch die Streuung verleiht Prompts mit geringer Streuung ein überproportionales Gewicht und lässt das Rauschen des Graders zu einem vollwertigen Signal werden. Dies ist ein Grund, warum die Dr. GRPO-Variante auf die Division verzichtet und warum ein Grader mit groben, konsistenten Bewertungen einen mit präzise wirkendem Rauschen übertrifft.
Die Clipped-Zielfunktion, in einfachen Worten
Sobald die Vorteile bekannt sind, wird das Modell aktualisiert, oft für einige Mini-Batches mit denselben Antworten. Jedes Mal vergleicht der Trainer, für wie wahrscheinlich das aktuelle Modell eine Antwort hält, im Vergleich zu dem Modell, das sie geschrieben hat. Dieses Verhältnis beträgt zu Beginn des Schritts 1,0. Die Idee von PPO, die GRPO beibehält, besteht darin, keine weitere Anrechnung mehr zu gewähren, sobald sich das Verhältnis weit genug verschoben hat: Beim üblichen Wert von ε = 0,2 erhält eine überdurchschnittliche Antwort keinen weiteren Zuwachs, wenn sie mehr als 1,2-mal so wahrscheinlich wird, und eine unterdurchschnittliche Antwort keinen weiteren Abzug, wenn sie unter 0,8 fällt.
Das Ergebnis ist eine Trust Region: Jeder Schritt kann das Modell nur um eine begrenzte Distanz von dem Modell wegbewegen, das die Daten generiert hat. Dies verhindert, dass ein glücklicher oder unglücklicher Batch zu extremen Schwankungen führt. TRL protokolliert unter clip_ratio, wie oft dieses Limit greift; dauerhaft hohe Werte bedeuten, dass die Aktualisierungen immer wieder an die Grenze stoßen – oft ein Zeichen dafür, dass die Lernrate zu hoch ist.
ratio r = P_new(answer) / P_old(answer) # 1.0 when the step starts
objective min( r × A , clip(r, 1 − ε, 1 + ε) × A ) − β × KL(new ‖ reference)
A = the answer's advantage
ε = 0.2 (how far one step may move an answer's probability)
β = 0 … 0.04 (pull back toward the starting model; 0 = none)Der KL-Penalty
Das ursprüngliche GRPO fügt einen weiteren Term hinzu: β mal die KL-Divergenz zwischen dem zu trainierenden Modell und einer eingefrorenen Kopie seines Ausgangszustands, der Referenz. Die KL-Divergenz misst, wie unterschiedlich zwei Wahrscheinlichkeitsverteilungen sind; hier steigt sie, je weiter sich die Wortwahl des Modells von der Referenz entfernt. Bei einem β über 0 kostet diese Abweichung Belohnung, sodass sich das Modell bei der Aufgabe verbessert, aber gleichzeitig nah an seiner ursprünglichen Sprache und seinem Stil bleibt. DeepSeekMath verwendete β = 0,04 und fügte die Strafe direkt dem Loss hinzu, anstatt sie von der Belohnung abzuziehen.
Spätere Arbeiten ergaben, dass die Strafe bei Aufgaben mit überprüfbaren Antworten oft unnötig ist, und TRL verwendet nun standardmäßig β = 0, was auch Speicherplatz spart, da keine Referenzkopie geladen werden muss. Eine Strafe ist dennoch sinnvoll, wenn ein Judge-Modell als Bewerter fungiert und die Antworten an Qualität verlieren (seltsame Formulierungen, fehlerhafte Formatierung, Sprachwechsel): eine Abweichung, die ein Judge möglicherweise nicht bestraft. Die RFT-Einstellungen erklären, wie man sie konfiguriert.
Bekannte Eigenheiten
- Längen-Bias. In der ursprünglichen Formel wird der Loss jeder Antwort über ihre eigene Länge gemittelt, sodass eine lange falsche Antwort pro Token weniger bestraft wird als eine kurze falsche. Das Dr. GRPO-Paper zeigte, dass dies die Antwortlänge künstlich aufbläht, insbesondere bei falschen Antworten. Der Standard-Loss-Typ von TRL,
dapo, mittelt stattdessen über alle Token im Batch. - Zero-Signal-Gruppen. Einfache Prompts (alle Antworten richtig) und aussichtslose (alle falsch) erzeugen keine Aktualisierung. TRL protokolliert ihren Anteil als
frac_reward_zero_std; das DAPO-Rezept filtert solche Gruppen heraus und zieht neue Stichproben. - Die Generierung dominiert die Kosten. Das Schreiben von N Antworten Token für Token nimmt die meiste Zeit jedes Schritts in Anspruch, was die Gruppengröße und die Antwortlänge zu den wichtigsten Hebeln für Geschwindigkeit und Preis macht.
Häufige Fehler
- Das isolierte Betrachten einer einzelnen Bewertung. Bei GRPO ist die Bewertung einer Antwort nur im Verhältnis zu den anderen Antworten auf denselben Prompt von Bedeutung.
- Die Verwendung von Zweiergruppen, um Zeit zu sparen. Bei zwei Antworten wird absolut jeder Unterschied, selbst das Rauschen des Graders, zu einem vollen +1 / −1 Signal.
- Die Eingabe von Prompts, die viel zu einfach oder viel zu schwer sind. Beide führen zu identischen Bewertungen innerhalb einer Gruppe und liefern kein Signal.
- Unter der Annahme, dass die KL-Strafe aktiviert ist. In vielen aktuellen Bibliotheken ist der Standardwert β = 0.
- Vertrauen in einen präzise wirkenden Bewerter. Kleine, verrauschte Bewertungsunterschiede werden zu vollwertigen Vorteilen hochskaliert.
Quellen und weiterführende Literatur
Externe Quellen werden in einem neuen Tab geöffnet.
- 01DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language ModelsShao et al., 2024 · arXiv · arxiv.orgFührt GRPO ein; sein RL-Schritt steigerte GSM8K von 82,9 % auf 88,2 % und MATH von 46,8 % auf 51,7 %.
- 02Proximal Policy Optimization AlgorithmsSchulman et al., 2017 · arXiv · arxiv.orgDas Clipped Objective und die Trust-Region-Idee, die GRPO übernimmt.
- 03Understanding R1-Zero-Like Training: A Critical PerspectiveLiu et al., 2025 · arXiv · arxiv.orgEntdeckt den Längen-Bias von GRPO und schlägt Dr. GRPO vor, eine unverzerrte Variante.
- 04DAPO: An Open-Source LLM Reinforcement Learning System at ScaleYu et al., 2025 · arXiv · arxiv.orgPraktische Korrekturen für GRPO: Token-Level-Loss, asymmetrisches Clipping, Filtern von Zero-Signal-Gruppen.
- 05GRPO TrainerHugging Face TRL docs · huggingface.coLoss-Varianten, Standardwerte und die Metriken, die ein GRPO-Durchlauf protokolliert.