Erfahren Sie alles über Reinforcement Learning (RL) und wie Sie die Untuch im Gesang antworten GRPO Trainieren Sie selbst. DeepSeek-R1 Reasoning-Modelle. Ein vollständiger Leitfaden vom Einstieg bis zur Beherrschung.
🦥 Was Sie lernen werden
- Was ist RL?RLVR?PPO?GRPO?RLHF?RFT?Ist Reinforcement Learning wirklich **"Luck is all you need?" **
- Was ist ein Umfeld? Intelligenz? Handlungen? Belohnungsfunktionen? Belohnungen?
Dieser Artikel behandelt alles, was Sie über GRPO, Reinforcement Learning (RL) und Belohnungsfunktionen wissen müssen (von einführend bis fortgeschritten), sowie einige Tipps und Tricks und die Grundlagen von GRPO mit Unsloth. Wenn Sie eine Schritt-für-Schritt-Anleitung zur Verwendung von GRPO suchen, lesen Sie unseren Leitfaden hier.
❓ Was ist Reinforcement Learning (RL)?
Das Ziel von RL ist:
- Erhöhen Sie die Wahrscheinlichkeit, "gute" Ergebnisse zu erzielen.
- Verringern Sie die Wahrscheinlichkeit, "schlechte" Ergebnisse zu erzielen.
**Das war's! **Was "gut" und "schlecht" bedeutet, oder wie wir "addieren" oder "subtrahieren" können, ist sehr komplex. Auch bei der Frage, was "Ergebnisse" bedeuten, gibt es einige Komplexitäten.
Zum BeispielPacman-Spiele (Pacman-Spiel):
- Matrix (Umgebung) ist die Spielwelt.
- Sie können dieBewegung (Aktionen) sind oben, links, rechts und unten.
- Wenn Sie eine Bohne essen.Anreize (Belohnungen) ist gut; wenn du diese sich windenden Feinde triffst, sind die Belohnungen schlecht.
- Im RL kann man den "besten Zug" nicht kennen, aber man kann die Zwischenschritte oder den Endzustand des Spiels (Sieg oder Niederlage) beobachten.
Ein weiteres Beispiel: Stellen Sie sich vor, Ihnen wird eine Frage wie diese gestellt:"Was ist 2 + 2 gleich?" (4) Ein nicht ausgerichtetes Sprachmodell spuckt 3, 4, C, D, -10, alles aus.
- Besser eine Zahl als ein C oder ein D, richtig?
- Besser drei als acht, oder?
- 4 zu bekommen ist absolut richtig.
Wir haben gerade eineBelohnungsfunktion (Belohnungsfunktion)!
🏃 Von RLHF, PPO zu GRPO und RLVR
OpenAI fördert das Konzept des RLHF (Reinforcement Learning from Human Feedback), bei dem wir einen **"Agenten "** (Intelligenz) darauf trainieren, auf eine Frage zu antworten (d. h.Stand der Dinge (state)) erzeugt Ausgaben, die von Menschen als nützlicher bewertet werden.
Zum Beispiel können die Likes und Taps in ChatGPT für den RLHF-Prozess verwendet werden.
PPO-Formel
clip(..., 1-e, 1+e)
wird verwendet, um das PPO zu zwingen, sich nicht zu sehr zu verändern. Außerdem gibt es einen KL-Term mit Beta > 0, um das Modell zu zwingen, nicht zu weit abzuweichen.
Um das RLHF zu implementieren, muss diePPO (proximal policy optimization) entwickelt. In diesem Fall ist dieintelligenter Körperist das Sprachmodell. Genau genommen besteht es aus 3 Systemen:
- Generierungsstrategie (aktuell trainiertes Modell)
- Referenzstrategie (ursprüngliches Modell)
- Wertmodellierung (Schätzer der durchschnittlichen Belohnung)
Wir verwendenAnreizmodellierungum die Belohnungen der aktuellen Umgebung zu berechnen, ist unser ZielMaximieren Sie diese Belohnung!
Die Formel für PPO scheint recht komplex zu sein, da sie auf Stabilität ausgelegt ist. Besuchen Sie unseren KI-Ingenieur-Talk über RL im Jahr 2025, um mehr über die detaillierte mathematische Herleitung von PPO zu erfahren.
DeepSeek entwickelt GRPO (group relative policy optimisation), um ihr R1-Inferenzmodell zu trainieren. Der Hauptunterschied zu PPO ist:
- **Das Wertmodell wurde entfernt** und durch Statistiken ersetzt, die aus mehreren Aufrufen des Belohnungsmodells abgeleitet wurden.
- Belohnungsmodell entferntund ersetzen sie durch etwas, das verwendet werden kann RLVR der benutzerdefinierten Belohnungsfunktion.
Das bedeutet, dass GRPO sehr effizient ist. Früher mussten für PPO mehrere Modelle trainiert werden - jetzt, da die Belohnungs- und Wertmodelle entfernt wurden, können wir Speicherplatz sparen und alles beschleunigen.
RLVR (Reinforcement Learning with Verifiable Rewards) Ermöglicht es uns, Modelle auf der Grundlage von Aufgaben mit leicht überprüfbaren Lösungen zu belohnen. Beispiel:
- Mathematische Gleichungen können leicht überprüft werden. Zum Beispiel 2+2 = 4.
- Die Codeausgabe kann auf korrekte Ausführung überprüft werden.
- Die Entwicklung von überprüfbaren Belohnungsfunktionen kann schwierig sein, daher sind die meisten Beispiele mathematisch oder codebasiert.
- Die Einsatzmöglichkeiten von GRPO beschränken sich nicht auf Code oder Mathematik - sein Denkprozess kann Aufgaben wie E-Mail-Automatisierung, Datenbankabfragen, Recht und Medizin verbessern und die Genauigkeit auf der Grundlage Ihres Datensatzes und Ihrer Belohnungsfunktion drastisch erhöhen - der Trick ist, eineBewertungsschema (Rubrik), d. h. eine Reihe kleinerer überprüfbarer Belohnungen anstelle einer ultimativen, allumfassenden einzelnen Belohnung. OpenAI zum Beispiel fördert dies in seinem Reinforcement Learning Fine-Tuning (RFT) Service.
Warum Gruppenrelativität?
GRPO beseitigt das Wertmodell vollständig, aber wir müssen immer noch die **"durchschnittliche Belohnung "** angesichts des aktuellen Zustands schätzen.
Der Trick besteht darin, große Sprachmodelle zu testen! Wir haben dann die durchschnittliche Belohnung berechnet, indem wir den Stichprobenprozess für mehrere verschiedene Fragen gezählt haben.
Zum Beispiel für die Frage "Was ist 2+2 gleich?" Bei der Frage "Wie oft ist 2+2 gleich?" wird die Frage zum Beispiel 4 Mal gestellt. Wir könnten 4, 3, D, C erhalten. Dann berechnen wir die Belohnung für jede dieser Antworten, und dann berechnen wir die Belohnung fürDurchschnittlicher Anreizim Gesang antworten(Statistik) Standardabweichungund dann weiter zu Z-Score-Standardisierung!
Dadurch wird dieVorteil A (Vorteil A), das wir anstelle des Wertmodells verwenden werden. Das spart eine Menge Speicherplatz!
Berechnung der GRPO-Stärken
🤞 Glück (oder Geduld) ist alles, was du brauchst!
Der Trick bei RL ist, dass man nur zwei Dinge braucht:
- Eine Frage oder Anweisung, z. B. "Was ist 2+2 gleich?" "Erstelle ein Flappy Bird Spiel in Python".
- Eine Belohnungsfunktion und ein Validator zur Überprüfung, ob die Ausgabe gut oder schlecht ist.
Allein mit diesen beiden können wir im GrundeUnbegrenzte Anrufe bei einem SprachmodellBis wir eine gute Antwort erhalten. Zum Beispiel auf die Frage "Was ist 2+2 gleich?" würde ein untrainiertes schlechtes Sprachmodell ausgeben:
0, cat, -10, 1928, 3, A, B, 122, 17, 182, 172, A, C, BAHS, %$, #, 9, -192, 12.31 und dann plötzlich 4.
Das Belohnungssignal lautet 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 und dann plötzlich 1.
So gelang es RL durch Glück und Zufall, in vielen **"Rollouts "** (Rollouts) die richtige Antwort zu finden. Unser Ziel ist es, mehr von den guten Antworten zu sehen 4 und viel weniger vom Rest (schlechte Antworten).
Das Ziel von RL ist es also, geduldig zu sein - im Limit, wenn die Wahrscheinlichkeit der richtigen Antwort zumindest eine kleine Zahl (nicht Null) ist, ist es nur ein Wartespiel - Sie werden 100% sicher die richtige Antwort im Limit finden.
Deshalb nenne ich Verstärkungslernen gerne "Glück ist alles, was man braucht".
Besser ausgedrückt: "Geduld ist alles, was Sie brauchen" für das Verstärkungslernen.
RL bietet uns im Wesentlichen einen Trick - anstatt einfach bis ins Unendliche zu warten, erhalten wir "schlechte Signale", d.h. schlechte Antworten, und wir können das Modell effektiv "booten", so dass es versucht, keine schlechten Lösungen zu erzeugen. Wir können das Modell effektiv "steuern", so dass es versucht, keine schlechten Lösungen zu erzeugen. Das heißt, auch wenn Sie lange auf eine "gute" Antwort gewartet haben, hat sich das Modell bereits verändert und wird sein Bestes tun, um keine schlechte Antwort zu erzeugen.
Im Beispiel "Was ist 2+2 gleich?" Beispiel:
0, cat, -10, 1928, 3, A, B, 122, 17, 182, 172, A, C, BAHS, %$, #, 9, -192, 12.31 und dann plötzlich 4.
Wenn wir schlechte Antworten erhalten, beeinflusst RL das Modell so, dass es versucht, keine schlechten Antworten auszugeben. Das bedeutet, dass wir im Laufe der Zeit die Ausgabeverteilung des Modells sorgfältig "beschneiden" oder von den schlechten Antworten wegbewegen. Das bedeutet, dass RL nicht ineffizient ist, weil wir nicht einfach auf die Unendlichkeit warten, sondern aktiv versuchen, das Modell so weit wie möglich in den "richtigen Antwortraum" zu "schieben".
Wenn die Wahrscheinlichkeit immer 0 ist, dann wird RL nie funktionieren!. Deshalb zieht man es vor, RL mit einem Modell zu beginnen, das durch die Anweisungen feinabgestimmt wurde und das die Anweisungen teilweise und vernünftig befolgen kann - dies wird die Wahrscheinlichkeit auf über 0 erhöhen.
🦥 Was Unsloth dem RL bietet
- Mit nur 15 GB VRAM können Sie mit Unsloth jedes beliebige Modell mit bis zu 17B Parametern, wie z.B. Llama 3.1 (8B), Phi-4 (14B), Mistral (7B) oder Qwen2.5 (7B), in ein Inferenzmodell umwandeln.
- **Mindestanforderungen:** Nur 5 GB VRAM reichen aus, um Ihr eigenes Inferenzmodell lokal zu trainieren (für jedes Modell mit 1,5 B Parametern oder weniger).
⚡ Tutorial: Trainieren Sie Ihre eigenen Inferenzmodelle mit GRPO
GRPO Notizbuch
- Qwen3 (4B) - hohes Niveau
- DeepSeek-R1-0528-Qwen3-8B - neu
- Llama 3.2 (3B) - Prämie
- Gemma 3 (1B)
- Phi-4 (14B)
- Qwen2.5 (3B)
- Mistral v0.3 (7B)
- Llama 3.1 (8B)
**Neue Funktion! **Wir unterstützen jetzt Dr. GRPO und die meisten anderen neuen GRPO-Technologien. Sie finden dies in der GRPOConfig
Verwenden Sie die folgenden Parameter, um sie zu aktivieren:
eine Kopie machen von
epsilon=0.2,
epsilon_high=0.28, # one sided
delta=1.5, # two sided
loss_type='bnpo',
# or:
loss_type='grpo',
# or:
loss_type='dr_grpo',
mask_truncated_completions=True,
- Wenn Sie keine Inferenzergebnisse erhalten, stellen Sie sicher, dass Sie genügend Trainingsschritte haben und dass Ihre Reward-Funktion/Validator richtig funktioniert. Wir haben hier Beispiele für Reward-Funktionen bereitgestellt.
- Frühere Demos haben gezeigt, dass Sie Ihre eigenen Erleuchtungsmomente mit Qwen 2.5 (3B) erreichen können - aber das erfordert eine 2xA100 GPU (160GB VRAM). Jetzt, mit Unsloth, können Sie den gleichen Aha-Moment mit nur einer 5 GB VRAM-GPU erreichen.
- Zuvor unterstützte GRPO nur die vollständige Feinabstimmung, aber wir haben es möglich gemacht, es mit QLoRA und LoRA zu verwenden.
- Zum Beispiel20K KontextlängeMit 8 generierten Antworten pro Prompt benötigt Unsloth nur 54,3 GB VRAM für Llama 3.1 (8B), während die Standardimplementierung (+ Flash Attention 2) 510.8GB (Unsloth reduziert um 90%).
- Beachten Sie, dass es sich hierbei nicht um eine Feinabstimmung des R1-Destillationsmodells von DeepSeek oder um eine Abstimmung mit den Destillationsdaten von R1 handelt, die bereits von Unsloth unterstützt werden. Dies ist die Umwandlung eines Standardmodells mit GRPO in ein vollwertiges Inferenzmodell.
In einem Testbeispiel haben wir Phi-4 zwar nur 100 Schritte lang mit GRPO trainiert, aber die Ergebnisse sind bereits deutlich. Das Modell, das GRPO nicht verwendet hat, hat nicht an das Token gedacht, während das mit GRPO trainierte Modell dies tat, und die Antwort war richtig.
💻 Ausbildung mit GRPO
Eine Anleitung, wie man ein beliebiges offenes großes Sprachmodell mit Unsloth und GRPO in ein Inferenzmodell umwandelt, finden Sie hier.
Wie GRPO Modelle ausbildet
- Für jedes Quizpaar erzeugt das Modell mehrere mögliche Antworten (z. B. 8 Varianten).
- Jede Antwort wird mit einer Belohnungsfunktion bewertet.
- Ausbildungsschritte:
- Wenn Sie 300 Datenzeilen haben, sind das 300 Trainingsschritte (900 Schritte, wenn Sie 3 Epochen trainieren).
- Sie können die Anzahl der pro Frage generierten Antworten erhöhen (z. B. von 8 auf 16).
- Das Modell lernt, indem es seine Gewichte bei jedem Schritt aktualisiert.
Wenn Sie Schwierigkeiten haben, Ihr GRPO-Modell zu erlernen, empfehlen wir Ihnen dringend, unser fortgeschrittenes GRPO-Notizbuch zu verwenden, da es eine bessere Belohnungsfunktion hat und Sie schneller und häufiger Ergebnisse sehen sollten.
Grundlagen/Tipps
- Zumindest warten. 300 Schrittekönnen sich die Belohnungen erst richtig summieren. Um anständige Ergebnisse zu erzielen, müssen Sie wahrscheinlich mindestens 12 Stunden lang trainieren (so funktioniert GRPO), aber denken Sie daran, dass dies nicht zwingend erforderlich ist und Sie jederzeit aufhören können.
- Die besten Ergebnisse erzielen Sie, wenn Sie mindestens 500 DatenzeilenSie können es sogar mit 10 Datenzeilen versuchen, aber mehr wäre besser. Sie können es sogar mit 10 Datenzeilen versuchen, aber mehr Daten wären besser.
- Jeder Trainingslauf hängt von Ihrem Modell, den Daten, der Belohnungsfunktion/dem Validator usw. ab. Obwohl wir also mindestens 300 Schritte vorgesehen haben, können manchmal 1000 oder mehr nötig sein. Es hängt also von mehreren Faktoren ab.
- Wenn Sie Unsloth lokal für GRPO verwenden, sollten Sie bei Auftreten eines Fehlers auch
pip install diffusers
. Bitte verwenden Sie auch die neueste Version von vLLM. - Es wird empfohlen, GRPO auf mindestens folgende Bereiche anzuwenden 1.5B ParameterModell, um Think Token korrekt zu erzeugen, da kleinere Modelle dazu möglicherweise nicht in der Lage sind.
- GRPO'sGPU-VRAM-Anforderungen (QLoRA 4-Bit)Die allgemeine Regel lautet, dass die Modellparameter = die Menge an VRAM sind, die Sie benötigen (Sie können weniger VRAM verwenden, aber das ist nur zur Sicherheit). Je länger Sie die Kontextlänge einstellen, desto mehr VRAM benötigen Sie. loRA 16-Bit wird mindestens das Vierfache an VRAM benötigen.
- Kontinuierliche Feinabstimmung istMöglicherweise können Sie GRPO die ganze Zeit im Hintergrund laufen lassen.
- Im Beispiel-Notizbuch verwenden wir dieGSM8K-DatensatzDies ist bei weitem die beliebteste Wahl für das Training im R1-Stil.
- Wenn Sie das Basismodell verwenden, stellen Sie sicher, dass Sie eine Chatvorlage haben.
- Je mehr Sie mit GRPO trainieren, desto besser... Das Tolle an GRPO ist, dass Sie nicht einmal viele Daten benötigen. Alles, was Sie brauchen, ist eine gute Reward-Funktion/ein guter Validator, und je länger Sie trainieren, desto besser wird Ihr Modell werden. Erwarten Sie, dass Ihr Reward mit der Zeit im Verhältnis zur Anzahl der Schritte ansteigt, wie unten dargestellt:
Die GRPO-Trainingsverlustverfolgung ist jetzt direkt in Unsloth integriert, so dass keine externen Tools wie wandb mehr benötigt werden. Sie enthält vollständige Protokollierungsdetails für alle Reward-Funktionen, einschließlich der aggregierten Reward-Funktion selbst.
📋 Bonusfunktionen / Validierer
In Intensives Lernen.Belohnungsfunktion (Belohnungsfunktion) undPrüfer (Verifier) spielt eine andere Rolle bei der Bewertung der Modellausgabe. Im Allgemeinen kann man sie als dasselbe verstehen, aber technisch sind sie nicht dasselbe, aber das spielt keine Rolle, weil sie normalerweise in Kombination verwendet werden.
Prüfer (Prüfer):
- Bestimmt, ob die erzeugte Antwort richtig oder falsch ist.
- Sie vergibt keine numerischen Punktzahlen, sondern überprüft lediglich die Korrektheit.
- Beispiel: Wenn ein Modell "5" für "2+2" erzeugt, prüft der Validator dies und markiert es als "falsch" (weil die richtige Antwort 4 ist).
- Der Validator kann auch Code ausführen (z. B. in Python), um Logik, Syntax und Korrektheit ohne manuelle Auswertung zu überprüfen.
Belohnungsfunktion (Belohnungsfunktion):
- Konvertieren Sie Validierungsergebnisse (oder andere Kriterien) in numerische Punktzahlen.
- Beispiel: Eine falsche Antwort kann mit einem Punktabzug versehen werden (-1, -2 usw.), während eine richtige Antwort eine positive Bewertung erhält (+1, +2).
- Es kann auch nach anderen Kriterien als der Korrektheit bestraft werden, z. B. nach übermäßiger Länge oder schlechter Lesbarkeit.
Der Hauptunterschied::
- PrüferPrüfen Sie die Korrektheit, aber geben Sie keine Punkte.
- BelohnungsfunktionVergabe von Noten, aber nicht unbedingt Überprüfung der Korrektheit an sich.
- BelohnungsfunktionmöglichEs werden zwar Validatoren verwendet, aber sie sind technisch nicht dasselbe.
Die Belohnungsfunktion verstehen
Das Hauptziel von GRPO ist es, die Belohnungen zu maximieren und zu lernen, wie die Antworten abgeleitet werden, anstatt sich nur die Antworten aus den Trainingsdaten zu merken und zu reproduzieren.
- Bei jedem Trainingsschritt wird GRPO Anpassung der Modellgewichteum die Belohnungen zu maximieren. Durch diesen Prozess wird das Modell schrittweise verfeinert.
- Routinemäßige Feinabstimmung (nur ohne GRPO)Maximierung der Vorhersagewahrscheinlichkeit des nächsten Worteswird aber nicht für Belohnungen optimiert.GRPO Optimieren für eine Belohnungsfunktionund nicht nur das nächste Wort vorhersagen.
- Sie können dies in mehreren Epochen tunWiederverwendung von Daten.
- Standard-Belohnungsfunktionkönnen für verschiedene Anwendungsfälle vordefiniert werden, oder Sie können sie von ChatGPT/native models für Sie generieren lassen.
- Es gibt keinen einzig richtigen Weg, eine Belohnungsfunktion oder einen Validator zu entwerfen - die Möglichkeiten sind endlos. Sie müssen jedoch gut konzipiert und sinnvoll sein, da schlecht konzipierte Belohnungen die Leistung des Modells ungewollt beeinträchtigen können.
🪙 Beispiel für eine Belohnungsfunktion
Sie können sich an dem folgenden Beispiel orientieren. Sie können Ihre generierten Ergebnisse in eine Datei wie die folgende eingeben ChatGPT 4o oder in einem großen Sprachmodell wie Llama 3.1 (8B), und entwerfen Sie eine Belohnungsfunktion und einen Validator, um sie zu bewerten. Geben Sie zum Beispiel Ihre generierten Ergebnisse in das große Sprachmodell Ihrer Wahl ein und legen Sie eine Regel fest: "Wenn die Antwort zu sehr wie ein Roboter klingt, ziehe 3 Punkte ab." Dies hilft bei der Optimierung der Ausgabe anhand von Qualitätskriterien.
Beispiel #1: Einfache Arithmetikaufgabe
- Frage:
"2 + 2"
- Antworten:
"4"
- Belohnungsfunktion 1:
- Wenn eine Zahl erkannt wird → +1
- Wenn keine Nummer erkannt wird → -1
- Belohnungsfunktion 2:
- Wenn die Zahl mit der richtigen Antwort übereinstimmt → +3
- Wenn falsch → -3
- Belohnungen insgesamt: Summe aller Belohnungsfunktionen
Beispiel #2: Aufgaben zur E-Mail-Automatisierung
- Frage: eingehende E-Mail
- Antworten: ausgehende E-Mail
- Belohnungsfunktion:
- Wenn die Antwort die erforderlichen Schlüsselwörter enthält → +1
- Wenn die Antwort genau mit der gewünschten Antwort übereinstimmt → +1
- Wenn die Antwort zu lang ist → -1
- Wenn er den Namen des Empfängers enthält → +1
- Wenn ein Signaturblock vorhanden ist (Telefon, E-Mail, Adresse) → +1
Unsloth Nachbarschaftsbasierte Belohnungsfunktion
Wenn Sie unserePremium GRPO Colab NotizbuchSie werden feststellen, dass wir ein komplett neues System entwickelt habenBenutzerdefinierte nachbarschaftsbasierte Belohnungsfunktiondie darauf abzielt, Antworten zu belohnen, die näher an der richtigen Antwort liegen. Diese flexible Funktion kann auf eine breite Palette von Aufgaben angewendet werden.
- In unserem Beispiel haben wir die Qwen3 (Basic Edition) hat das logische Denken aktiviert und weist es an, bestimmte Aufgaben zu erledigen.
- Wenden Sie eine Vorabstimmung an, um die Standardeinstellung von GRPO zu vermeiden, die nur lernende Formate bevorzugt.
- Verwenden Sie den Abgleich mit regulären Ausdrücken, um die Genauigkeit der Auswertung zu verbessern.
- Erstellung von Aufforderungen, die über allgemeine Aufforderungen hinausgehen (z. B.
think
) einer benutzerdefinierten GRPO-Vorlage, wie z. B.<start_working_out></end_working_out>
. - Wenden Sie eine auf der Nähe basierende Bewertung an - Modelle, deren Antworten näher beieinander liegen, werden stärker belohnt (z. B. ist eine Vorhersage von 9 statt 10 besser als eine Vorhersage von 3), während Ausreißer bestraft werden.
GSM8K Belohnungsfunktion
In unseren anderen Beispielen verwenden wir bestehende GSM8K-Belohnungsfunktionen, die von @willccbb zur Verfügung gestellt wurden, die beliebt sind und sich als recht effektiv erwiesen haben:
- korrektheit_belohnung_func - Belohnen Sie Antworten, die genau mit den Markierungen übereinstimmen.
- int_belohnung_func - Ermutigen Sie nur zu ganzzahligen Antworten.
- soft_format_belohnung_func - Prüfen Sie die Struktur, aber lassen Sie kleinere Abweichungen beim Zeilenumbruch zu.
- strict_format_belohnung_func - Achten Sie darauf, dass die Struktur der Antwort mit der Aufforderung übereinstimmt, einschließlich der Zeilenumbrüche.
- xmlcount_reward_func - Stellen Sie sicher, dass jedes XML-Tag nur einmal in der Antwort erscheint.
🧮 Verwendung von vLLM
Sie können nun vLLM direkt in Ihrem Feinabstimmungs-Stack verwenden, was zu einem höheren Durchsatz führt und es Ihnen ermöglicht, gleichzeitig eine Feinabstimmung vorzunehmen und Schlussfolgerungen über das Modell zu ziehen! Die dynamische 4-Bit-Quantisierung des Llama 3.2 3B Instruct mit Unsloth auf einem 1x A100 40GB wird voraussichtlich ~4000 sein. Token /sec. Auf einem Tesla T4 mit 16 GB (kostenloser Colab-GPU) können Sie 300 Token/Sek. erreichen.
Auf magische Weise haben wir auch die Notwendigkeit des gleichzeitigen Ladens von vLLM Die doppelte Speichernutzung beim Laden von Unsloth und Unsloth spart etwa 5GB für Llama 3.1 8B und 3GB für Llama 3.2 3B. Unsloth könnte die Llama 3.3 70B Instruct in 1x 48GB GPUs feinabgestimmt haben, wobei die Gewichte des Llama 3.3 70B 40GB VRAM belegen. wenn wir nicht doppelte Speichernutzung nicht eliminieren, dann würde das gleichzeitige Laden von Unsloth und vLLM >= 80GB VRAM benötigen.
Aber mit Unsloth können Sie immer noch Feineinstellungen vornehmen und die Vorteile der schnellen Inferenz gleichzeitig in einem Paket mit weniger als 48 GB VRAM genießen! Um Fast Inference zu nutzen, installieren Sie zuerst vllm und verwenden Sie die fast_inference
Unsloth instanziieren:
eine Kopie machen von
pip install unsloth vllm
from unsloth import FastLanguageModel
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = "unsloth/Llama-3.2-3B-Instruct",
fast_inference = True,
)
model.fast_generate(["Hello!"])
✅ GRPO-Anforderungen Leitfaden
Wenn Sie Unsloth für GRPO verwenden, haben wir mit einer Vielzahl von Tricks den VRAM-Verbrauch um mehr als 90% reduziert, verglichen mit der Standard-Implementierung mit Flash Attention 2! Bei einer Kontextlänge von 20K und der Generierung von 8 Antworten pro Cue verbraucht Unsloth für Llama 3.1 8B zum Beispiel nur 54,3 GB VRAMund die Standardimplementierung erfordert 510.8GB (Unsloth reduziert um 90%).
- GRPO's QLoRA 4-bit GPU VRAM AnforderungenDie allgemeine Regel lautet, dass die Modellparameter = die Menge an VRAM sind, die Sie benötigen (Sie können weniger VRAM verwenden, aber das ist nur zur Sicherheit). Je länger Sie die Kontextlänge einstellen, desto mehr VRAM benötigen Sie. loRA 16-Bit wird mindestens das Vierfache an VRAM benötigen.
- Unsere neuen speichereffizienten linearen Kerne für GRPO reduzieren die Speichernutzung um den Faktor 8 oder mehr. Dies spart 68,5 GB Speicherplatz, während die
torch.compile
der Hilfe tatsächlich schneller! - Wir haben unseren kürzlich veröffentlichten intelligenten Unsloth-Gradienten-Checkpoint-Algorithmus genutzt. Er verlagert Zwischenaktivierungen auf intelligente Weise asynchron in den System-RAM und ist dabei nur 1% langsamer. Das spart 52 GB Speicher.
- Im Gegensatz zu den Implementierungen in anderen Paketen nutzt Unsloth denselben GPU-/CUDA-Speicherplatz wie die zugrunde liegende Inferenzmaschine (vLLM). Dies spart 16 GB Speicherplatz.
Norm | Untuch | Standard + FA2 |
---|---|---|
Kosten für Trainingsspeicher (GB) | 42GB | 414GB |
GRPO Speicherkosten (GB) | 9,8 GB | 78,3 GB |
Begründungskosten (GB) | 0GB | 16GB |
20K Kontextlänge mit Begründung KV-Cache (GB) | 2,5 GB | 2,5 GB |
Gesamte Speichernutzung | 54.33GB (Abnahme 90%) | 510,8 GB |
Bei einer typischen GRPO-Standardimplementierung müssen Sie 2 Logits der Größe (8, 20K) erstellen, um den GRPO-Verlust zu berechnen. Dies beansprucht 2 * 2 字节 * 8 (生成数量) * 20K (上下文长度) * 128256 (词汇表大小) = 78.3GB
.
Unsloth spart den 8-fachen Speicherverbrauch für lange Kontext-GRPOs, so dass wir für eine Kontextlänge von 20K nur zusätzliche 9,8GB VRAM benötigen!
Wir müssen auch den KV-Cache im 16-Bit-Format verarbeiten. Llama 3.1 8B hat 32 Schichten und die Größe von K und V ist 1024, so dass der Speicherverbrauch für eine Kontextlänge von 20K = 2 * 2 字节 * 32 层 * 20K 上下文长度 * 1024 = 每个批次 2.5GB
. Wir würden die Stapelgröße von vLLM auf 8 setzen, aber um VRAM zu sparen, belassen wir es in unseren Berechnungen bei 1. sonst würden Sie 20 GB für den KV-Cache benötigen.