Zum Inhalt springen

ART (Agent Reinforcement Trainer) Cheatsheet

ART (Agent Reinforcement Trainer) Cheatsheet

ART (Agent Reinforcement Trainer) von OpenPipe ist ein Open-Source-Framework zum Trainieren von LLM-basierten Agenten mit Reinforcement Learning, hauptsächlich GRPO. Die definitive Idee ist eine Split-Architektur: Ein leichtgewichtiger Client führt die Rollouts deines Agenten in deinem eigenen Code durch einen OpenAI-kompatiblen Endpoint aus, während ein Server/Backend die Inferenz (vLLM) und das Training (Unsloth-basiertes GRPO) handhabt, optional auf einer separaten GPU-Maschine. Dies macht es gut geeignet für mehrstufige, Tool-nutzende Agenten, die „On-the-Job”-Training gegen eine Belohnung benötigen.

Reinforcement Learning kann instabil und rechenintensiv sein. Beginne klein, protokolliere alles und validiere eine Belohnungsfunktion an einer Handvoll von Rollouts, bevor du skalierst.

Installation

SchrittBefehl
Installierenpip install openpipe-art
Mit Extras (Backend)pip install "openpipe-art[backend]"
uvuv add openpipe-art
AnforderungenEine CUDA-GPU für das Backend (Training/Inferenz)

Kernkonzepte

BegriffBedeutung
ModelEin trainierbarer Modell-Handle (art.TrainableModel) registriert bei einem Backend
BackendWo Inferenz + Training laufen (lokale GPU oder remote)
RolloutEine Agent-Episode, die eine Trajektorie und eine Belohnung produziert
TrajectoryDie Nachrichten/Tool-Aufrufe/Wahlmöglichkeiten, die ART bewertet und lernt
GRPOGroup Relative Policy Optimization — der Standard-RL-Algorithmus
RewardEin Skalar, den dein Code einer Trajektorie zuweist (höher = besser)

Ein Modell definieren

import art

model = art.TrainableModel(
    name="agent-001",
    project="my-agent",
    base_model="Qwen/Qwen2.5-7B-Instruct",
)

backend = art.LocalBackend()          # or a remote backend
await model.register(backend)
ObjektZweck
art.TrainableModel(...)Die Policy, die du trainierst
art.LocalBackend()Führe Inferenz + Training auf der lokalen GPU aus
model.register(backend)Binde ein Modell an ein Backend
model.openai_client()OpenAI-kompatible Client für Rollouts

Einen Rollout schreiben

import art, weave

@weave.op
async def rollout(model: art.Model, scenario) -> art.Trajectory:
    client = model.openai_client()
    traj = art.Trajectory(messages_and_choices=[], reward=0.0)

    messages = [{"role": "user", "content": scenario.prompt}]
    completion = await client.chat.completions.create(
        model=model.name, messages=messages,
    )
    choice = completion.choices[0]
    traj.messages_and_choices.append(choice)

    traj.reward = score(choice.message.content, scenario)  # your reward fn
    return traj

Training-Schleife

for step in range(NUM_STEPS):
    groups = await art.gather_trajectory_groups(
        (art.TrajectoryGroup(rollout(model, s) for _ in range(GROUP_SIZE))
         for s in scenarios)
    )
    await model.train(groups, config=art.TrainConfig(learning_rate=1e-5))
AufrufBeschreibung
art.TrajectoryGroup(...)Eine Gruppe von Rollouts, die untereinander verglichen werden (GRPO)
art.gather_trajectory_groups(...)Führe Rollouts gleichzeitig aus und sammle Gruppen
model.train(groups, config=...)Ein GRPO-Update aus den gesammelten Gruppen
art.TrainConfig(...)Learning Rate und Training-Hyperparameter
model.get_step()Aktueller Training-Schritt (für Checkpointing/Wiederaufnahme)

Tipps zum Reward-Design

RichtlinieWarum
Halten Sie Belohnungen begrenztStabilisiert GRPO-Vorteilsschätzungen
Belohnen Sie das Ergebnis, nicht die FormulierungVermeidet Reward Hacking bei Formulierung
Fügen Sie kleine Shaping für Tool-Erfolg hinzuHilft bei mehrstufiger Credit-Zuordnung
Verwende RULER für relative BewertungARTs Helfer zum Ranking von Trajektorien in einer Gruppe, wenn es keine saubere Metrik gibt

Observability

ToolIntegration
Weights & BiasesNative Protokollierung von Belohnungs-/Verlust-Kurven
WeaveDekoriere Rollouts mit @weave.op für Trace-Erfassung
LangfuseTracingUnterstützt für Trajektorie-Inspektion

ART vs Andere RL-Trainer

AspektARTOpenRLHFverl
FokusMehrstufige AgentenSkalierbare RLHFHochdurchsatz-RL
ArchitekturSplit-Client/ServerRay + vLLMRay + vLLM
BackendvLLM + UnslothvLLMvLLM
Beste fürAgenten trainiert in deinem eigenen CodeGroßskalige RLHF-PipelinesForschungs-Durchsatz

Ressourcen