Pular para o conteúdo

Cheatsheet ART (Agent Reinforcement Trainer)

Cheatsheet ART (Agent Reinforcement Trainer)

ART (Agent Reinforcement Trainer) pela OpenPipe é um framework de código aberto para treinar agentes baseados em LLM com aprendizado por reforço, primariamente com GRPO. Sua ideia definidora é uma arquitetura dividida: um cliente leve executa rollouts do seu agente em seu próprio código através de um endpoint compatível com OpenAI, enquanto um servidor/backend lida com inferência (vLLM) e treinamento (GRPO potenciado por Unsloth), opcionalmente em uma máquina GPU separada. Isso o torna bem adequado para agentes multi-turno e que usam ferramentas que precisam de treinamento “on-the-job” contra uma recompensa.

O aprendizado por reforço pode ser instável e exigir muita computação. Comece pequeno, registre tudo, e valide uma função de recompensa em alguns rollouts antes de escalar.

Instalação

PassoComando
Instalarpip install openpipe-art
Com extras (backend)pip install "openpipe-art[backend]"
uvuv add openpipe-art
RequisitosUma GPU CUDA para o backend (treinamento/inferência)

Conceitos Principais

TermoSignificado
ModelUm identificador de modelo treinável (art.TrainableModel) registrado em um backend
BackendOnde inferência + treinamento são executados (GPU local ou remoto)
RolloutUm episódio de agente que produz uma trajetória e uma recompensa
TrajectoryAs mensagens/chamadas-de-ferramentas/escolhas que ART pondera e aprende
GRPOGroup Relative Policy Optimization — o algoritmo RL padrão
RewardUm escalar que seu código atribui a uma trajetória (maior = melhor)

Definindo um Model

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(...)A política que você está treinando
art.LocalBackend()Executa inferência + treinamento na GPU local
model.register(backend)Liga um modelo a um backend
model.openai_client()Cliente compatível com OpenAI para rollouts

Escrevendo um 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 de Treinamento

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))
ChamadaDescrição
art.TrajectoryGroup(...)Um grupo de rollouts comparados uns contra os outros (GRPO)
art.gather_trajectory_groups(...)Executa rollouts concorrentemente e coleta grupos
model.train(groups, config=...)Uma atualização GRPO dos grupos coletados
art.TrainConfig(...)Taxa de aprendizado e hiperparâmetros de treinamento
model.get_step()Passo de treinamento atual (para checkpoint/resume)

Dicas de Design de Recompensa

DiretrizPor quê
Mantenha recompensas limitadasEstabiliza estimativas de vantagem do GRPO
Recompense o resultado, não a redaçãoEvita reward hacking na redação
Adicione pequeno shaping para sucesso de ferramentaAjuda na atribuição de crédito multi-passo
Use RULER para pontuação relativaHelper do ART para classificar trajetórias em um grupo quando não há métrica limpa

Observabilidade

FerramentaIntegração
Weights & BiasesRegistro nativo de curvas de recompensa/perda
WeaveDecora rollouts com @weave.op para captura de trace
LangfuseTracingSuportado para inspeção de trajetória

ART vs Outros Trainers de RL

AspectoARTOpenRLHFverl
FocoAgentes multi-passoRLHF escalávelRL de alto rendimento
ArquiteturaCliente/servidor divididoRay + vLLMRay + vLLM
BackendvLLM + UnslothvLLMvLLM
Melhor paraAgentes treinados em seu próprio códigoPipelines RLHF em larga escalaPesquisa de alto rendimento

Recursos