コンテンツにスキップ

ART(エージェント強化学習トレーナー)チートシート

ART(エージェント強化学習トレーナー)チートシート

ART(Agent Reinforcement Trainer)by OpenPipeはLLMベースのエージェントを強化学習、主にGRPOでトレーニングするためのオープンソースフレームワークです。その定義的なアイデアは分割アーキテクチャです:軽量なクライアントがOpenAI互換エンドポイント経由で独自のコード内でエージェントのロールアウトを実行し、サーバー/バックエンドが推論(vLLM)とトレーニング(Unsloth搭載GRPO)を処理します。オプションで別のGPUマシン上で。これはマルチターン、ツール使用エージェントに非常に適しており、報酬に対する「仕事中」トレーニングが必要です。

強化学習は不安定で計算量が多い場合があります。小さく始めて、すべてをログに記録し、スケーリング前に報酬関数をほんの数回のロールアウトで検証してください。

インストール

ステップコマンド
インストールpip install openpipe-art
エクストラ付き(バックエンド)pip install "openpipe-art[backend]"
uvuv add openpipe-art
要件バックエンド用のCUDA GPU(トレーニング/推論)

コアコンセプト

用語意味
モデルトレーニング可能なモデルハンドル(art.TrainableModel)バックエンドに登録されている
バックエンド推論とトレーニングが実行される場所(ローカルGPUまたはリモート)
ロールアウト軌跡と報酬を生成する1つのエージェントエピソード
軌跡ARTがスコアと学習するメッセージ/ツール呼び出し/選択肢
GRPOグループ相対方針最適化 — デフォルトのRL アルゴリズム
報酬コードが軌跡に割り当てるスカラー(高い方が良い)

モデルの定義

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)
オブジェクト目的
art.TrainableModel(...)トレーニングしている方針
art.LocalBackend()ローカルGPUで推論とトレーニングを実行
model.register(backend)モデルをバックエンドにバインド
model.openai_client()ロールアウト用のOpenAI互換クライアント

ロールアウトの記述

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

トレーニングループ

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))
呼び出し説明
art.TrajectoryGroup(...)互いに比較されるロールアウトのグループ(GRPO)
art.gather_trajectory_groups(...)ロールアウトを同時実行して グループを収集
model.train(groups, config=...)集約されたグループからの1つのGRPO更新
art.TrainConfig(...)学習率とトレーニングハイパーパラメータ
model.get_step()現在のトレーニングステップ(チェックポイント/再開用)

報酬設計のヒント

ガイドライン理由
報酬を境界内に保つGRPO利点推定値を安定化
結果に報酬を与える、言葉遣いではなくフレーズング報酬ハッキングを回避
ツール成功のための小さなシェイピングを追加マルチステップクレジット割り当てに役立つ
相対スコアリングにはRULERを使用クリーンなメトリックが存在しないときにグループ内の軌跡をランク付けするARTのヘルパー

可観測性

ツール統合
Weights & Biases報酬/損失曲線のネイティブログ
Weaveロールアウトを@weave.opで装飾してトレース取得
LangfuseTracing軌跡検査でサポート

ART vs その他のRL トレーナー

アスペクトARTOpenRLHFverl
フォーカスマルチステップエージェントスケーラブルRLHF高スループットRL
アーキテクチャクライアント/サーバー分割Ray + vLLMRay + vLLM
バックエンドvLLM + UnslothvLLMvLLM
最適な用途独自のコードでトレーニングされたエージェント大規模RLHFパイプライン研究スループット

リソース