AI・機械学習
Show HN: RLでモデルをトレーニングするエージェントをトレーニングしました(1.3kドル)
Show HN: I RL-trained an agent that trains models with RL (for –$1.3k) (github.com)
要約
投稿者は、AIエージェントが別のAIモデルをトレーニングするパイプラインを構築しました。このエージェントは、トレーニングタスクを与えられると、環境、報酬、ハイパーパラメータを含む完全なRLトレーニングジョブを作成し、Runpod GPUで実行します。エージェント自体もRLでトレーニングされ、より良いモデルをトレーニングできた場合に報酬が与えられました。このシステムは、1.3kドルのコストで、モデルトレーニングの自動化と効率化を目指しています。
全文翻訳
Show HN: RLでモデルをトレーニングするエージェントをトレーニングしました(1.3kドル)
🤓 AI Trains AI: RLを使用して、RLでAIをトレーニングするAIエージェントをトレーニングする
🔓 トレーニング済みエージェントの重み(🤗 HF上のLoRAアダプター)、エージェントハーネス、タスクファミリー、報酬コード、GPUオーケストレーション、tinker RLトレーニングスクリプト、およびすべてのパイロットのレトロな書き起こし(失敗を含む)を含むすべてがオープンソース化されています。
開始する ↓
TL;DR: AIエージェントが以下を行うパイプラインを構築しました。
トレーニングタスクを与えられる(「モデルにXを教える」)
環境、報酬、データセット、ハイパーパラメータを含む完全なprime-rlトレーニングジョブを作成する。
トレーニングのために実際のRunpod GPUに送信する。
Tinkerを活用して、エージェント自体をRLでトレーニングし、より良いモデルをトレーニングできた場合に報酬を与えました。
報酬は54回のトレーニングステップで約0.0から約0.63のピークまで上昇しました。
トレーニングしたことのない、保持されたタスクファミリーに転送します。
RLループ内のAIであり、そのアクションはRLループ内のAIをトレーニングすることです。
(出典: assets/hero.svg。)
📚 目次
🔁 仕組み
エピソード
⚖️ 報酬設計
🧩 タスクファミリー
📈 結果
🖥️ インフラ
💰 コスト
🤗 モデルの重み
🚀 開始する
🔮 将来の改善
謝辞
🔁 仕組み
2つの完全に分離されたトレーニングスタックを持つ2つのRLループ。
誰がトレーニングされているか
トレーニングの様子
スタック
アウターループ
トレーナーエージェント(Qwen3.6-35B-A3B、LoRA)
トレーニングジョブの作成エピソード。
エピソード報酬はポリシー勾配信号です。
Tinker + tinker-cookbook(重要度サンプリングGRPO)
インナーループ
小さなベースモデル(Qwen3-0.6B / 1.7B)
エージェントが書いたジョブ:検証環境+ルーブリック、[prime_rl]設定テーブル付き。
Runpod GPUでのprime-rl(GRPO)
Tinkerがエージェントをトレーニングします。エージェントは検証環境、ルーブリック、prime-rl設定を作成します。prime-rlは小さなモデルをトレーニングします。インナーモデルの隠し評価スコアがアウターループの報酬としてフィードバックされます。
エピソード
エンドツーエンドの1エピソード。
(出典: assets/episode.svg。)
1エピソード = トレーナーエージェントが特定のタスクに対して有効で高品質なトレーニングジョブを生成する1回の試み:
タスク仕様 — トレーニングする内容(「小さなモデルにマルチホップペルソナクエリを解決するように教える」)、ハード制約範囲、評価ツールインターフェース、およびいくつかの開発例。
エージェントの作業 — ファイルの読み取り/書き込み/編集/一覧表示を通じてサンドボックス化されたワークスペースを編集し、get_baseline_scoresを呼び出して隠し評価での未トレーニングベースモデルのスコアを確認できます。
submit_job — 検証プローブをトリガーします。失敗は返され、エージェントは最大リトライ回数が制限されます。
Dispatch — 検証されたジョブはキューに入れられ、Runpod GPUポッドのウォームプールによって取得され、prime-rlでGRPOトレーニングを実行し、隠し評価でチェックポイントの事前/事後にスコアを付けます。
Reward — 検証効率と、トレーニング済みモデルの最高の未トレーニングベースラインに対する向上を組み合わせます。
アウターループは、Tinkerを使用してエピソード報酬でエージェント自体をRLでトレーニングします。
各アウターループバッチは、最大16個のGPUポッド全体で40個の実際のインナートレーニングジョブを生成します。
⚖️ 報酬設計
エピソード報酬は重み付き合計(ライブ重み 0.35 / 0.60 / 0.05)です。
検証 — 最初の試みで有効な送信の場合は1.0、追加の試行ごとに減少します。エピソードが検証されない場合は0。(別途、エージェントが解析可能な送信を生成しない場合、アウターループはエピソードに-0.1のスコアを付けます。CSVに見られる-1.0の値は「ポストスコアなし」のロギングセンチネルであり、報酬ではありません。)
ジョブ品質 — トレーニング済みモデルの絶対的なトレーニング後スコアと、最高の未トレーニングモデルのフリーズされたベースラインであるbest_preに対する符号付き向上率のハイブリッド:0.25・post + 0.75・uplift_term。GPUでクラッシュしたジョブはこのスコアで0になります(エピソードは検証項を保持します)。
トレーニング速度 — ジョブの成功が条件となる、より高速なジョブの小さなタイブレーカー。
注意:近読者向け:エージェント向けプロンプト(template/INSTRUCTIONS.md)は、エージェントに簡略化されたビュー(ジョブ品質内の75/25の向上率/絶対値分割、および試行回数の少ない促進)を提供します。計算された実際の報酬は上記のものであり、プロンプトの完全な0.35/0.60/0.05分解ではありません。公開されたアダプターは、そのプロンプトに対してトレーニングされました。
🧩 タスクファミリー
6つのタスクファミリー。未トレーニングモデルがトレーニングなしでは苦労し、すべてマルチステップのツール使用と推論を必要とするように意図的に構築されています。
ファミリー
未トレーニングのbest_pre(n=200)
calc_chain
連鎖的な算術演算。各ステップが次のステップにフィードされます。
0.742
multi_hop
複数の依存関係のあるルックアップを必要とするペルソナ・ワールドクエリ。
0.654
string_pipeline
合成された文字列変換。
0.545
ledger
ツールを介したステートフルなアカウントブックキーピング。
0.242
dispatch
条件付きルーティング決定。
0.323
triage(保持)
オンコールインシデントトリアージ:ツール間のサービス、インシデント、デプロイの相関付け。
0.352
5つのファミリーがエージェントをトレーニングし、triageはトレーニングされず、汎化プローブとして機能します。
📈 結果
セットアップ:Qwen3.6-35B-A3Bトレーナーエージェント、LoRAランク8、lr 4e-5、グループサイズ8のGRPO、最大16個の同時GPUポッド、約40個の実際のトレーニングジョブ/バッチ。実行:pilot-7(10ステップ)→ 7b(24ステップ、ウォームスタート)→ 7c(20ステップ、ウォームスタート)— 合計54ステップ。
1. 報酬は2つの明確な段階で上昇しました
報酬を分解すると、何が、そしてどの順序で学習されたかがわかります。
Rung 1 — プロセス信頼性(pilot-7)。初期の利益はすべて、検証の失敗やGPUでのクラッシュしたジョブを完了したエピソードに変換したことから得られました。ジョブ品質はフラットでしたが、総報酬は約0.26まで上昇しました。GRPOが最も急な勾配を最初に取っていることを示しています。
Rung 2 — より良いモデルの作成(pilot-7b以降)。信頼性が飽和(約0.75–0.80の検証)すると、ジョブグレードは0.30 → 0.41に上昇し、隠し評価のトレーニング後スコアは約0.04のノイズから持続的な0.22–0.48になりました。エージェントは、機能するだけでなく、より良いモデルを作成し始めました。
2. スキルは保持されたタスクファミリーに転移します
エージェントがトレーニングしたことのないタスクファミリーは、アウターループトレーニングでパフォーマンスが上昇し、その後プラトーになります。
チェックポイント
アウターステップ
平均報酬
検証済みインナージョブ
成功
最悪エピソード
ベースモデル
0
0.399
9/10
5/9
0.000
pilot-7最終
10
0.438
8/10
8/8
0.000
pilot-7b最終
34
0.545
10/10
9/10
0.290
pilot-7c最終
54
0.492
10/10
8/10
0.175
3. エージェントはより良いベースモデルとより良いハイパーパラメータを選択することを学びました
初期のトレーニング実行はモデル選択に盲目でした:77/79のエピソードでより弱い0.6Bモデルが選択されました。get_baseline_scoresツールと向上率の評価を導入した後、ポリシーは反転し、トレーニング中にそうであり続け、アーチ全体で深まりました。
1.7Bのシェアのジョブ作成エピソードは42% → 95%になりました。また、公開された[prime_rl]設定サーフェス(エピソードの21% → 約78%、1つのウォームスタート境界内)を採用し、サンプリング温度、オプティマイザー選択、アルゴリズムバリアント、スケジューラー、ロスなどの適切なキーミックスを使用しました。
🖥️ インフラ
常に16台のウォームGPUポッドがトレーニングしています。
インナーループ(エージェントが書くジョブ):
Runpodウォームポッドフリート — 最大16台のポッドの制限付きプール。正確なprime-rl + verifiersリビジョンにブートストラップピン留めされているため、すべてのノードがレプリカです。プロビジョニングからサービス提供まで約2分です。アイドルポッドは回収され、キューはファイルベースです(queued/ → running/ → done/)。GPU選択はデータ駆動型です。GPU × ベースモデルのベンチマークマトリックスで、コストあたりのRTX A5000が2倍の0.10ドル/ジョブ(約0.13ドル)で勝利しました。プロビジョニング時に優先度ラダーを歩いて、在庫にあるものをすべて取得します。
フリートが実際に実行されたもの(ヘッドラインアーチ、約1,750ジョブ — 検証に失敗したエピソードがジョブをディスパッチしないため、名目上の54ステップ×40よりも少ない):
A40 64%(340 GPUトレーニング時間)· RTX 4090 32%(151時間)· RTX A6000 3% · RTX A5000 1%。ベンチマークのコスト勝者はめったに在庫がなかったため、ラダーはアーチの大部分をA40で過ごしました。
prime-rl(GRPO)が小さなモデルをトレーニングします。チェックポイントは、vLLMを使用して隠し評価で事前/事後にスコア付けされます。
アウターループ(エージェントのトレーニング):
Tinker(Thinking MachinesのマネージドRL API)は、tinker-cookbookの重要度サンプリングGRPOを介して、LoRAを使用してQwen3.6-35B-A3Bをトレーニングします。コントロールインバージョンブリッジは、各エピソードをキューベースのポリシーの背後にあるバックグラウンドタスクとして実行するため、クックブックループはエピソードをターンバイターンで駆動し、すべてのハーネスロジ