10月3日、AWSが「Fine-tune a search agent with multi-turn RL on Amazon SageMaker AI」と題した記事を公開した。最も注目すべき結果は、BrowseComp-Plusベンチマークでの**失敗率22.89%→0.68%**という劇的な改善だ。Amazon SageMaker AIのマルチターン強化学習(MTRL)機能を使い、サーチエージェントをファインチューニングする手順と評価結果が詳しくまとめられている。
なぜ今マルチターンRLが注目されているか
2025年初頭にDeepSeek-R1が公開されて以降、強化学習でLLMの推論能力を引き出すRLVR(Reinforcement Learning with Verifiable Rewards)やGRPOといった手法が急速に普及している。しかし既存のシングルターンRLは「1問1答」の最適化には向いているが、複数ステップにわたって検索戦略を更新し続けるエージェントタスクには構造的に合わない。マルチターンRLはその空白を埋める技術として、エージェントAI研究の中心的テーマになりつつある。
なぜマルチターンRLが必要か
LLMを使ったサーチエージェントは、ユーザーが完璧なクエリを入力しなくても、自律的に検索戦略を決定し、複数ラウンドにわたって情報を収集・精製する。このマルチステップな挙動を小さなモデルで実現するのが難しい点にある。
従来のアプローチには以下の限界がある:
- 教師あり学習(SFT):マルチターンの理想的な軌跡データを人手で収集する必要があり、コストが高い
- シングルターンRL(RLVR等):1応答ずつ評価するため、各ターンが前のコンテキストに依存するサーチエージェントの連鎖的な意思決定を最適化できない
マルチターンRL(MTRL)は、エージェントの行動を「一連のステップの系列」として捉え、最終的なアウトカムに基づいて全軌跡をまとめて最適化する。小さなモデルに特定のツールや環境を直接学習させることで、「フロンティアモデル並みの信頼性」を「小型モデルの速度とコスト」で実現するのが狙いだ。
Amazon SageMaker AI MTRLの仕組み
SageMaker AI MTRLは、エージェントのタスクを決定の系列としてモデル化し、マルチターンのロールアウトで学習データを生成しながら、ポリシー勾配アルゴリズムで最適化する。主な特徴は以下の通りだ:
- モジュラーなエージェント・環境インターフェース:カスタム報酬関数、カスタムツールループ、マルチターン会話形状をローコードで定義できる
- サーバーレス実行:GPUクラスタの管理が不要(※課金モデルの詳細はAWSのSageMaker AI料金ページを参照のこと)
- 非同期ロールアウトと軌跡収集:生成と勾配更新を並列実行し、学習速度を維持
- ネイティブアルゴリズムライブラリ:PPO、CISPO、IS損失に加え、GRPO、RLOO等の群ベースのアドバンテージ推定器を選択可能
- 再開可能な学習:デフォルト24時間の制限を超えるジョブをチェックポイントから継続できる
- 軌跡・報酬の可視化:MLflow(SageMaker AI管理)でターンごとのエージェント行動を確認可能
実装:Qwen3.6-27Bをサーチエージェントとしてファインチューニング
記事ではQwen3.6-27Bモデル(※元記事での表記をそのまま使用。Qwenシリーズの一般的なバージョン体系とは異なる表記であるため、最新のQwen公式リポジトリでモデル名を確認されたい)を対象に、エンタープライズ検索エージェントのファインチューニングを実施している。エージェントが使えるツールは2種類だ:
- BM25(語彙検索):キーワードの出現頻度で完全一致を検索。特定の用語や識別子を含むクエリに有効
- ベクトル検索:クエリとドキュメントを埋め込みベクトルに変換して類似度を計算。意味的・概念的なクエリに有効
報酬関数の設計
報酬には情報検索の標準指標であるnDCG@10(Normalized Discounted Cumulative Gain at rank 10)を直接使用する。上位10件の取得ドキュメントが理想的なランキングにどれだけ近いかを測る指標で、1.0が完璧、0.0が関連ドキュメントなしを意味する。
また、エージェントがターン上限やトークン予算を超えた場合には報酬-1を与える。この罰則設計が、複雑な中間報酬を手作りせずに不良挙動を抑制するうえで効果的だったと報告されている。
学習データセット
学習には6種類のデータセット(FRAMES、BRIGHT、Enterprise RAG、ESCI、Musique、MLQA)を使用し、各データセットの5%を検証用に分割。テストには4種類の未使用データセット(FreshStack、WixQA、BrowseComp-Plus、Wands)を使用している。
コードはこれだけ
設定のシンプルさが際立つ。変更するハイパーパラメータは3つのみで、残りはすべてデフォルト値を使用する:
from sagemaker.modules.train import MultiTurnRLTrainer
trainer = MultiTurnRLTrainer(
model_id="qwen3.6-27b",
agent_endpoint="<your-agent-endpoint>",
training_dataset_s3_uri="s3://amzn-s3-demo-bucket/datasets/train/",
validation_dataset_s3_uri="s3://amzn-s3-demo-bucket/datasets/validation/",
hyperparameters={
"max_epochs": 1,
"global_batch_size": 128,
"rollout_max_concurrency": 32,
},
output_s3_uri="s3://amzn-s3-demo-bucket/output/",
)
trainer.train()
アルゴリズムの選択、アドバンテージ推定器、オフポリシーの許容範囲といったRLの専門知識が必要な設定は、すべてデフォルトで処理される。
結果:失敗率が22.89%→0.68%に激減
4つの保留テストベンチマークでの比較結果が以下の表だ:
| ベンチマーク | モデル | nDCG@10 | 失敗率 | 平均ターン数 |
|---|---|---|---|---|
| WixQA | Qwen3.6-27B | 0.5725 | 0.67% | 4.3 |
| WixQA | Qwen3.6-27B-finetune | 0.6781 | 0.17% | 4.5 |
| Wands | Qwen3.6-27B | 0.5762 | 0.00% | 2.2 |
| Wands | Qwen3.6-27B-finetune | 0.6112 | 0.00% | 2.9 |
| FreshStack | Qwen3.6-27B | 0.4112 | 0.20% | 3.1 |
| FreshStack | Qwen3.6-27B-finetune | 0.4089 | 0.05% | 2.8 |
| BrowseComp-Plus | Qwen3.6-27B | 0.5136 | 22.89% | 7.0 |
| BrowseComp-Plus | Qwen3.6-27B-finetune | 0.6354 | 0.68% | 6.3 |
特筆すべきはBrowseComp-Plusの結果だ。nDCG@10が+23.7%改善しただけでなく、失敗率が22.89%から0.68%に急減した。ターン制限やトークン予算内にタスクを収める能力を、モデルが学習したことを意味する。WixQAでは+18.4%、Wandsでは+6%の改善があった一方、FreshStackでは微小な後退が見られた。
前提条件と注意点
このセットアップには以下が必要だ:
- 対応リージョン:現時点でQwen3.6-27Bのサポートは米国西部(オレゴン)リージョン(us-west-2)のみ
- BM25とベクトル検索ツールを公開するエージェントエンドポイントの事前デプロイ
- MTRLのドキュメント形式に沿ったS3上のトレーニング・バリデーションデータセット
学習完了後は、SageMaker AIコンソールからトレーニングジョブを停止・削除し、S3上のモデルアーティファクトも不要なら削除することが推奨されている。
詳細はFine-tune a search agent with multi-turn RL on Amazon SageMaker AIを参照していただきたい。