Salta ai contenuti

Cheatsheet ART (Agent Reinforcement Trainer)

Cheatsheet ART (Agent Reinforcement Trainer)

ART (Agent Reinforcement Trainer) di OpenPipe è un framework open-source per l’addestramento di agenti basati su LLM con apprendimento per rinforzo, principalmente GRPO. L’idea distintiva è un’architettura split: un client leggero esegue i rollout del tuo agente nel tuo codice attraverso un endpoint compatibile con OpenAI, mentre un server/backend gestisce l’inferenza (vLLM) e l’addestramento (GRPO potenziato da Unsloth), opzionalmente su una macchina GPU separata. Questo la rende ben adatta ad agenti multi-turn che utilizzano strumenti e hanno bisogno di addestramento “on-the-job” rispetto a un reward.

L’apprendimento per rinforzo può essere instabile e affamato di calcolo. Inizia in piccolo, registra tutto, e convalida una funzione di reward su una manciata di rollout prima di scalare.

Installation

PassaggioComando
Installapip install openpipe-art
Con extras (backend)pip install "openpipe-art[backend]"
uvuv add openpipe-art
RequisitiUna GPU CUDA per il backend (addestramento/inferenza)

Concetti fondamentali

TermineSignificato
ModelUn handle di modello addestrabile (art.TrainableModel) registrato con un backend
BackendDove eseguono l’inferenza + addestramento (GPU locale o remota)
RolloutUn episodio di agente che produce una traiettoria e un reward
TrajectoryI messaggi/tool-call/scelte che ART valuta e impara
GRPOGroup Relative Policy Optimization — l’algoritmo RL predefinito
RewardUno scalare che il tuo codice assegna a una traiettoria (più alto = migliore)

Definizione di un modello

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)
OggettoScopo
art.TrainableModel(...)La policy che stai addestrando
art.LocalBackend()Esegui inferenza + addestramento sulla GPU locale
model.register(backend)Associa un modello a un backend
model.openai_client()Client compatibile con OpenAI per i rollout

Scrittura di un rollout

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

Loop di addestramento

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))
ChiamataDescrizione
art.TrajectoryGroup(...)Un gruppo di rollout confrontati tra loro (GRPO)
art.gather_trajectory_groups(...)Esegui i rollout concorrentemente e raccogli i gruppi
model.train(groups, config=...)Un aggiornamento GRPO dai gruppi raccolti
art.TrainConfig(...)Learning rate e iperparametri di addestramento
model.get_step()Passaggio di addestramento attuale (per checkpoint/resume)

Suggerimenti per la progettazione dei reward

Linea guidaPerché
Mantieni i reward limitatiStabilizza le stime dei vantaggi GRPO
Premia l’esito, non la formulazioneEvita l’hacking dei reward sulla formulazione
Aggiungi piccolo shaping per il successo dello strumentoAiuta l’assegnazione di credito multi-step
Usa RULER per la valutazione relativaL’helper di ART per classificare le traiettorie in un gruppo quando non esiste una metrica pulita

Osservabilità

StrumentoIntegrazione
Weights & BiasesRegistrazione nativa delle curve di reward/loss
WeaveDecora i rollout con @weave.op per l’acquisizione di tracce
LangfuseTracingSupportato per l’ispezione delle traiettorie

ART vs altri trainer RL

AspettoARTOpenRLHFverl
FocusAgenti multi-stepRLHF scalabileRL ad alto throughput
ArchitetturaSplit client/serverRay + vLLMRay + vLLM
BackendvLLM + UnslothvLLMvLLM
Migliore perAgenti addestrati nel tuo codicePipeline RLHF su larga scalaThroughput di ricerca

Risorse