Ir al contenido

Guía de Referencia de ART (Agent Reinforcement Trainer)

Guía de Referencia de ART (Agent Reinforcement Trainer)

ART (Agent Reinforcement Trainer) de OpenPipe es un marco de código abierto para entrenar agentes basados en LLM con aprendizaje por refuerzo, principalmente GRPO. Su idea definitoria es una arquitectura dividida: un cliente ligero ejecuta los rollouts de tu agente en tu propio código a través de un endpoint compatible con OpenAI, mientras que un servidor/backend maneja inferencia (vLLM) y entrenamiento (GRPO impulsado por Unsloth), opcionalmente en una máquina GPU separada. Esto la hace bien adaptada para agentes multi-turno que usan herramientas y necesitan entrenamiento “en el trabajo” contra una recompensa.

El aprendizaje por refuerzo puede ser inestable y consume muchos recursos. Comienza pequeño, registra todo y valida una función de recompensa en unos pocos rollouts antes de escalar.

Instalación

PasoComando
Instalarpip install openpipe-art
Con extras (backend)pip install "openpipe-art[backend]"
uvuv add openpipe-art
RequisitosUna GPU CUDA para el backend (entrenamiento/inferencia)

Conceptos Centrales

TérminoSignificado
ModeloUn identificador de modelo entrenable (art.TrainableModel) registrado con un backend
BackendDonde se ejecutan inferencia + entrenamiento (GPU local o remota)
RolloutUn episodio de agente que produce una trayectoria y una recompensa
TrayectoriaLos mensajes/llamadas-de-herramientas/opciones que ART puntúa y aprende
GRPOGroup Relative Policy Optimization — el algoritmo RL predeterminado
RecompensaUn escalar que tu código asigna a una trayectoria (mayor = mejor)

Definiendo un Modelo

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)
ObjetoPropósito
art.TrainableModel(...)La política que estás entrenando
art.LocalBackend()Ejecutar inferencia + entrenamiento en la GPU local
model.register(backend)Vincular un modelo a un backend
model.openai_client()Cliente compatible con OpenAI para rollouts

Escribiendo 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

Bucle de Entrenamiento

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))
LlamadaDescripción
art.TrajectoryGroup(...)Un grupo de rollouts comparados entre sí (GRPO)
art.gather_trajectory_groups(...)Ejecutar rollouts concurrentemente y recopilar grupos
model.train(groups, config=...)Una actualización GRPO a partir de los grupos recopilados
art.TrainConfig(...)Tasa de aprendizaje e hiperparámetros de entrenamiento
model.get_step()Paso de entrenamiento actual (para puntos de control/reanudación)

Consejos de Diseño de Recompensas

DirectrizPor qué
Mantener recompensas acotadasEstabiliza las estimaciones de ventaja de GRPO
Recompensar el resultado, no la redacciónEvita optimización de recompensas en la fraseología
Añadir pequeñas recompensas de shaping para éxito de herramientaAyuda a asignación de crédito multi-paso
Usar RULER para puntuación relativaAyuda de ART para clasificar trayectorias en un grupo cuando no existe métrica clara

Observabilidad

HerramientaIntegración
Weights & BiasesRegistro nativo de curvas de recompensa/pérdida
WeaveDecorar rollouts con @weave.op para captura de traza
LangfuseTracingSoportado para inspección de trayectoria

ART vs Otros Entrenadores de RL

AspectoARTOpenRLHFverl
EnfoqueAgentes multi-pasoRLHF escalableRL de alto rendimiento
ArquitecturaCliente/servidor divididoRay + vLLMRay + vLLM
BackendvLLM + UnslothvLLMvLLM
Mejor paraAgentes entrenados en tu propio códigoGrandes pipelines RLHFRendimiento de investigación

Recursos