Zum Inhalt springen
CoMLRL
Multi-LLM RL

Multi-Agent REINFORCE

Automatisch übersetzt mit translategemma:4b Englisches Original

REINFORCE ist eine Klasse von Policy-Gradient-Methoden, die die Policy direkt mithilfe von gesampelten Belohnungen optimieren. Diese Methoden werden häufig für LLM-Feinabstimmung verwendet, da sie einfach und effizient sind. Beispiele sind GRPO, Dr. GRPO, RLOO, ReMax, TreeRPO, und REINFORCE++. REINFORCE kann auf Multi-Agent-Einstellungen erweitert werden, in denen mehrere LLM-Agenten in jeder Runde antworten und ihre gemeinsamen Antworten eine gemeinsame Belohnung erhalten.

Alle MAREINFORCE trainers ein gemeinsames Trainingsschritt. Bei jedem rollout Agent sammelt \( K \) Antworten, bewertet der trainer Index-ausgerichtete gemeinsame Antworten mit einer gemeinsamen Belohnung, und jeder Agent gewichtet seine eigenen Log-Wahrscheinlichkeiten mit dem resultierenden gemeinsamen Vorteil, bevor ein gepufferter Optimierungsschritt durchgeführt wird.

MAREINFORCE Trainingsablauf Jedes gemeinsame Beispiel erzielt eine gemeinsame Belohnung; sein Vorteil gewichtet den eigenen Policy-Gradient jedes Agenten.

MAREINFORCE#

Der Policy-Gradient-Surrogat für Multi-Agent REINFORCE (MAREINFORCE), vor Normalisierung der Vorteile oder Referenzregularisierung, kann wie folgt ausgedrückt werden:

\[ J(\theta_i) = \mathbb{E}_{\mathbf{o}_0 \sim \mathcal{D}, \mathbf{h}_t \sim \boldsymbol{\pi}_{\boldsymbol{\theta}}} \Bigg[\sum_{t=0}^{H-1} R_t \cdot \log \pi_{\theta_i}(a_{i,t}\mid h_{i,t})\Bigg], \]
wobei \( R_t \) der Rückgabewert in der Runde \( t \) und \( H \) der Horizont (d. h. die Anzahl der Dialogrunden) ist. Die Erwartung wird über anfängliche Beobachtungen aus dem Datensatz abgeleitet \( \mathcal{D} \) und die gemeinsame Aktionshistorie aller episodes folgenden Policen \( \boldsymbol{\pi}_{\boldsymbol{\theta}} \).

REINFORCE-Methoden verwenden kein critic-Modell zur Wertschätzung. Ihre Policy-Gradient-Schätzungen können aufgrund von stochastischer Stichprobenziehung und langfristiger Rückverfolgung eine hohe Varianz aufweisen. Gängige Ansätze zur Reduzierung dieser Varianz umfassen die Verwendung einer aktionsunabhängigen Basislinie oder das Mittel aus mehr Stichproben, wie z. B. \( K \)-Stichproben bei jeder gemeinsamen Historie \( \mathbf{h}_t \).

\[ J(\theta_i) = \mathbb{E}_{\mathbf{o}_0 \sim \mathcal{D}, \mathbf{h}_t \sim \boldsymbol{\pi}_{\boldsymbol{\theta}}} \Bigg[\frac{1}{K}\sum_{k=1}^{K} \sum_{t=0}^{H-1} \left(R^{k}_t - b(\mathbf{h}_t)\right) \cdot \log \pi_{\theta_i}(a^{k}_{i,t}\mid h_{i,t})\Bigg], \]
wobei die Basis-\( b(\mathbf{h}_t) \) action-unabhängig ist.

MAGRPO#

Multi-Agent Gruppen-relative Policy Optimierung (MAGRPO) ist eine Implementierung von MAREINFORCE, inspiriert von GRPO, wobei die Gruppen-durchschnittliche Baseline der Mittelwert der \( K \)-Samples ist. Im Standard-aligned-Modus ist der Surrogate vor der Normalisierung des Vorteils:

\[ J(\theta_i) = \mathbb{E}_{\mathbf{o}_0 \sim \mathcal{D}, \mathbf{h}_t \sim \boldsymbol{\pi}_{\boldsymbol{\theta}}} \Bigg[\frac{1}{K}\sum_{k=1}^{K}\sum_{t=0}^{H-1} \left(R^{k}_t - \frac{1}{K}\sum_{l=1}^{K}R^{l}_t\right) \cdot \log \pi_{\theta_i}(a^{k}_{i,t}\mid h_{i,t})\Bigg]. \]

Die gesampelte Mittelwert beinhaltet die Probe, die aktualisiert wird, daher ist es nicht die aktionsunabhängige Basis, die in der allgemeinen Form oben angenommen wird. Beim Training über mehrere Schritte erhält jeder Zweig die unmittelbare Belohnung plus den Mittelwert der Rückgabe seines Kindknotens, ohne einen Abzug anzuwenden. Im cross-Modus erhält jeder Agent stattdessen die Summe der Rückgaben über alle gemeinsamen Kombinationen, die diese Vervollständigung enthalten.

Standardmäßig zentriert und skaliert advantage_normalization=True die Vorteile innerhalb jeder Generierungsgruppe mit der Populationsstandardabweichung, wobei ein Mindest-Denominator von 1e-6 verwendet wird. Wenn die Referenz-KL-Regularisierung aktiviert ist, wird die abgetastete Referenzstrafe vor der Basislinie und Normalisierung subtrahiert.

Der aktuelle MAGRPOTrainer-Verlust-Slice enthält die finale Vervollständigung token nicht, sodass seine implementierte Sequenz-Score-Differenz zur vollständigen Sequenz-Log-Wahrscheinlichkeit in der Surrogate oben ist. Die Standardeinstellung ist joint_mode="cross"; der akzeptierte "crossed"-Alias generiert kartesische Kombinationen, wendet aber nicht die gleiche Aggregation pro Vervollständigung an.

MAGRPOConfig Parameter
  • num_agents: Konfigurierte Anzahl von Agenten, die mit der trainer-Konfiguration übereinstimmen sollen
  • num_turns: Anzahl der Turns pro episode
  • num_train_epochs: Anzahl der Trainings-epochs
  • agent_learning_rate: Lernrate
  • logging_steps: Protokollierungsintervall in Schritten
  • num_generations: Anzahl der zu sampelnden Generationen pro Prompt für jeden Agenten
  • max_new_tokens: Maximale Anzahl neuer tokens, die generiert werden können
  • temperature: Temperatur für das Sampling
  • top_p: Top-p für das Sampling
  • top_k: Top-k für das Sampling
  • discount: Beibehaltener Konfigurationswert; die aktuelle MAGRPO-Implementierung berechnet undiskontierte Renditen und verwendet diesen Wert nicht
  • joint_mode: Zusammensetzung von Aktionen (aligned für index-ausgerichtete, cross für kartesisches Produkt)
  • early_termination_threshold: Ein Trainingszweig stoppt das Ausdehnen, wenn die mittlere unmittelbare Belohnung des Knotens diesen Schwellenwert überschreitet (Standard -0.2; None deaktiviert das frühe Beenden)
  • rollout_buffer_size: Anzahl der Knotensamples, die pro Agent vor einer Aktualisierung gepuffert werden
  • train_batch_size: Anzahl der Knotensamples pro Optimierungs-Schritt; Standard rollout_buffer_size
  • advantage_normalization: Ob die Vorteile innerhalb jeder Generierungsgruppe des Knotens zentriert und skaliert werden sollen (Standard True)
  • eval_interval: Evaluierung erfolgt bei Batchnummern, die durch N teilbar sind, einschließlich des ersten Batches von epoch; 0 deaktiviert die periodische Evaluierung
  • eval_num_samples: Anzahl der Samples, die pro Evaluierungs-Schritt evaluiert werden
  • eval_batch_size: Batch-Größe für die Evaluierung DataLoader
  • external_prompt_passthrough: Ob externe Prompts direkt in der mehrstufigen Schulung verwendet werden sollen
  • advantage_mode: Baseline-Modus (mean, max, rloo, raw)
  • parallel_training: Ausführungsmodus des Agenten (none oder mp)
  • agent_devices: Agent-Geräteplatzierung; explizit erforderlich für parallel_training="mp"
  • reference_kl_enabled: Ob eine gefrorene Referenz KL-Strafe aktiviert werden soll (Standard False)
  • reference_kl_coef: Gewicht der Referenz-Strafe (Standard 0.1)
  • reference_devices: Optionale Geräteplatzierung für Referenzmodelle
MAGRPOTrainer Parameter
  • agent_model oder agents: Modell-Identifier-String für homogene Agenten, oder eine Liste von Modell-Identifikatoren oder vorab geladenen Modellen; vorab geladene Modelle werden über agents bereitgestellt
  • num_agents: Anzahl der von agent_model erstellten Agenten (Standard 2), unabhängig von args konfiguriert. Wenn nur agents angegeben wird, bestimmt seine Länge die Agentenzahl
  • tokenizer: Gemeinsame Verwendung von tokenizer oder eine pro Agent; optional für Modell-IDs, erforderlich für vorgeladene Modelle
  • reward_func: Aufruf, der eine Liste von Fließkommazahlen zurückgibt (erforderlich)
  • reward_processor: Optionale Prozessor zur Anwendung auf Belohnungen (z. B. Skalierung)
  • formatters: Einzelner Aufruf oder Liste von Agenten-Aufrufen für die Formatierung von Prompts
  • args: Instanz von MAGRPOConfig (optional)
  • train_dataset: Datensatz erforderlich, wenn train() aufgerufen wird
  • eval_dataset: Evaluationsdatensatz (optional)
  • model_config: Modellkonfigurations-Dictionary (optional)
  • wandb_config: Konfiguration für das Logging von Weights & Biases (optional)
  • external_transition: Funktion, die Übergänge zwischen den Schritten bereitstellt; erforderlich, wenn num_turns > 1 (die Standardeinstellung ist 2) verwendet wird
  • eval_logger: Optionaler Aufruf für Metriken, der als eval_logger(agent_completions_turns=..., batch_items=..., prompts=...) aufgerufen wird; gibt ein Metriken-Dictionary pro ausgewertetem Element zurück und wird mit eval_aggregator verwendet
  • eval_aggregator: Optionaler Aufruf, der als eval_aggregator(metrics, num_turns=...) aufgerufen wird; die zurückgegebenen turn_k/...-Metriken werden unter eval/ protokolliert. Beide Evaluations-Aufrufe müssen für benutzerdefinierte Metriken bereitgestellt werden

MAGRPO speichert Samples in einem rollout-Puffer und berechnet ihre Log-Wahrscheinlichkeiten während der Aktualisierungen neu, ohne Importance Sampling oder Ratio Clipping. Samples können daher vor früheren Aktualisierungen aus demselben Puffer oder rollout-Baum liegen. Da der trainer kein critic-Modell hat, gilt value_clip_range nicht.

Der trainer verwendet eine feste Trainings-DataLoader-Batchgröße von 1 und benötigt mindestens num_generations=2, einschließlich der Raw-Return-Variante. Standardmäßig verwendet train_batch_size=rollout_buffer_size: jeder Agent mittelt die Verluste seiner gepufferten Knoten-Samples für einen Optimierungsschritt. Kleinere Mini-Batches erzeugen mehrere Optimierungsschritte; ein teilweise gefüllter Puffer wird am Ende jedes epoch-Schritts freigegeben.

Weitere Varianten#

CoMLRL bietet auch andere MAREINFORCE-Varianten mit unterschiedlichen Baselines:

  • MARLOO: Multi-Agent REINFORCE Leave-One-Out. Die Baseline ist der Mittelwert der Rückgaben der anderen Generationen im selben Knoten-Sample-Gruppen, nicht der anderen Agenten.
\[ J(\theta_i) = \mathbb{E}_{\mathbf{o}_0 \sim \mathcal{D}, \mathbf{h}_t \sim \boldsymbol{\pi}_{\boldsymbol{\theta}}} \Bigg[\frac{1}{K}\sum_{k=1}^{K}\sum_{t=0}^{H-1} \left(R^{k}_t - \frac{1}{K-1}\sum_{l=1, l\neq k}^{K}R^{l}_t\right) \cdot \log \pi_{\theta_i}(a^{k}_{i,t}\mid h_{i,t})\Bigg]. \]
  • MAReMax: Multi-Agent REINFORCE mit Group Max (MAReMaxConfig und MAReMaxTrainer). Die Basislinie ist der maximale gruppierte Rückgabwert am Knoten; diese Implementierung generiert keine separate, gierige Basislinienantwort.
\[ J(\theta_i) = \mathbb{E}_{\mathbf{o}_0 \sim \mathcal{D}, \mathbf{h}_t \sim \boldsymbol{\pi}_{\boldsymbol{\theta}}} \Bigg[\frac{1}{K}\sum_{k=1}^{K}\sum_{t=0}^{H-1} \left(R^{k}_t - \mathrm{max}_l\, R^l_t \right) \cdot \log \pi_{\theta_i}(a^{k}_{i,t}\mid h_{i,t})\Bigg]. \]

MAREINFORCETrainer, MARLOOTrainer, und MAReMaxTrainer abgeleitet von comlrl.trainers.reinforce.MAGRPOTrainer. Ihre entsprechenden Konfigurationsklassen erben MAGRPOConfig, mit Standardwerten von advantage_mode und raw, rloo, entsprechend. Sie haben die gleiche max, Schnittstelle und Konfigurationsfelder trainer Schnittstelle und Konfigurationsfelder.

Die vier trainers unterscheiden sich nur darin, dass von dem gemeinsamen Rückgabwert eine Basislinie subtrahiert wird. Für einen Knoten mit \( K=4 \) gemeinsamen Antworten vergleicht die Animation unten ihre Vorteile vor der Normalisierung: MAREINFORCE behält den Rohrückgabwert, wie in REINFORCE; MAGRPO subtrahiert den gruppierten Mittelwert, wie in GRPO; MARLOO subtrahiert den Mittelwert der \( K-1 \)-Rückgabwerte, wie in RLOO, was die MAGRPO-Vorteile mit \( K/(K-1) \) skaliert; und MAReMax subtrahiert den gruppierten Maximalwert, sodass keine Antwort einen positiven Vorteil erhält.

Baselines über MAREINFORCE-Varianten Jede Zeile subtrahiert eine andere Baseline von den gleichen gemeinsamen Belohnungen; gestrichelte Balken markieren die Vorteile vor der Normalisierung.

Die varianten Formeln beschreiben Vorteile vor der Normalisierung. Alle Varianten erben von advantage_normalization=True, die auch Rohrückgabwerte und Max-Basislinien-Vorteile neu zentriert. Mit Ausnahme des Standardabweichungs-Bodens und der numerischen Genauigkeit erzeugen die vier Modi dann die gleichen normalisierten Vorteile. Benutzer können die oben gezeigten Basislinienunterschiede beibehalten, einschließlich des Rohrückgab-Estimators MAREINFORCE, indem sie advantage_normalization=False festlegen.