Artikelbild für den Artikel: EFFICIENT GRPO AT SCALE

EFFICIENT GRPO AT SCALE

Liger ist ein optimierter Trainer für Group Relative Policy Optimization (GRPO), der den Speicherbedarf um 40 % reduziert und Unterstützung für FSDP und PEFT hinzufügt.

Einführung

Die Feinabstimmung von Sprachmodellen mithilfe von Reinforcement Learning (RL) ist ein entscheidender Schritt im Trainingszyklus eines Modells, um es in Richtung wünschenswerter Verhaltensweisen zu lenken, die komplexer sind als das, was durch typisches überwacht Lernen erreicht werden kann. Traditionell wurde RL verwendet, um große Sprachmodelle (LLMs) mithilfe des Proximal Policy Optimization (PPO)-Algorithmus zu optimieren. Dieser Ansatz, der oft mit Reinforcement Learning from Human Feedback (RLHF) assoziiert wird, nutzt ein separat trainiertes Belohnungsmodell, um die Feinabstimmung des Hauptmodells zu steuern.

Allerdings ist RLHF mit PPO ein sehr ressourcenintensiver Ansatz – PPO erfordert das Laden mehrerer Modelle im Speicher (Politik-, Wert-, Belohnungs- und Referenzmodelle) und benötigt mehrere Iterationen der Feinabstimmung von Belohnungs- und Basis-Modellen, um die gewünschten Ergebnisse zu erzielen. Der Erfolg von RLHF hängt auch von der Fähigkeit des Belohnungsmodells ab, zwischen wünschenswertem und unerwünschtem Verhalten unseres Modells effektiv zu unterscheiden.

Was ist GRPO?

Group Relative Policy Optimization (GRPO) hat in letzter Zeit an Popularität gewonnen, insbesondere in Verbindung mit dem R1-Modell von DeepSeek. GRPO verzichtet auf das vortrainierte Belohnungsmodell und die Wertmodelle, die in RLHF verwendet werden, und verlässt sich stattdessen auf überprüfbare Belohnungsfunktionen, die die Korrektheit der Ausgabe eines Modells in geschlossener Form überprüfen können, ohne ein externes Belohnungsmodell zu benötigen. Dies hat zu erheblichen Verbesserungen bei der Verwendung von GRPO anstelle von PPO für die Feinabstimmung in Bereichen geführt, die leicht überprüfbar sind, wie z. B. das Lehren eines Modells, zu schlussfolgern und gut bei Mathematik- und Programmieraufgaben abzuschneiden.

Optimierung des Speichers mit Liger

Wir haben den Liger Chunked Loss-Ansatz auf den GRPO Loss erweitert, was es uns ermöglicht, die vollständigen Logits im Speicher für jeden Trainingsschritt zu vermeiden. Die Berechnung der Logits, die den Ausgabekopf des Modells umfasst, trägt erheblich zur maximalen Speicherauslastung bei, insbesondere bei großen Vokabularen, langen Sequenzlängen oder großen Batch-Größen. Wir adressieren dies, indem wir den Input zum lm_head über den Batch aufteilen und den Vorwärtsdurchlauf chunkweise ausführen.

Wenn man es jedoch einfach auf eine unkomplizierte Weise implementiert, kann man die maximale Speicherauslastung nicht tatsächlich reduzieren, da man immer noch alle Logits im GPU-Speicher für den Rückwärtsdurchlauf behalten müsste. Um dies zu umgehen, berechnen wir die Gradienten für jeden Verlustchunk (in Bezug auf den Input-Chunk und das Gewicht des lm_head) während des Vorwärtsdurchlaufs und akkumulieren sie, während wir durch jeden Chunk gehen.

Integration mit TRL

Wir haben Liger GRPO kürzlich in TRL integriert, sodass Sie den Liger GRPO Loss einfach aktivieren können, indem Sie use_liger_loss auf True in Ihrer GRPOConfig setzen und von den Speicherersparnissen profitieren! Beachten Sie, dass diese Funktionen derzeit noch nicht in der neuesten TRL-Version enthalten sind, sodass Sie TRL vorerst aus dem Quellcode installieren müssen:

pip install "trl[liger] @ git+https://github.com/huggingface/trl.git"

Benchmarks und Ergebnisse

Wir haben eine Reihe von GRPO-Experimenten mit und ohne den Liger GRPO Loss durchgeführt, um die Unterschiede zu vergleichen. Für das Politikmodell verwendeten wir Qwen3-0.6B und experimentierten mit verschiedenen Batch-Größen. Alle Experimente wurden mit dem gsm8k-Datensatz unter Verwendung seiner Belohnungsfunktionen durchgeführt. Die Ergebnisse zeigen, dass die Speichereinsparungen mit größeren Batch-Größen zunehmen, da wir entlang der Batch-Dimension chunkieren. Bei größeren Batch-Größen verwenden wir bis zu 40 % weniger Speicher im Vergleich zur regulären (nicht-Liger) Version.

Fazit

Mit der Integration von Liger-GRPO in TRL, zusammen mit der Unterstützung von FSDP und PEFT, ist die Feinabstimmung von Sprachmodellen mit GRPO jetzt speichereffizienter und skalierbarer als je zuvor. Wir ermutigen die Community, diese neuen Funktionen auszuprobieren und ihr Feedback zu teilen, um das RL-Training für LLMs weiter zu verbessern.

Quellenliste:

Dieser Artikel wurde mithilfe von KI verfasst und basiert auf automatisch gesammelten Informationen.
0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar