# Training Long-Context, Multi-Turn Software Engineering Agents with Reinforcement Learning
Navigation: [[sources/_index]] | [[entities/_index]] | [[concepts/_index]]
> [!abstract]
> 大規模言語モデル(LLM)への強化学習(RL)の適用はこれまで数学的推論やワンショットコード生成など**シングルターンタスク**に限られていた。本論文は、ソフトウェアエンジニアリング(SWE)のような**状態遷移を伴うマルチターンの対話型環境**に RL を適用する完全なパイプラインを提示する。棄却ファインチューニング(RFT)で命令追従力を高めたのち、DAPO による同期 RL で方策を反復改善する 2 段階手法を Qwen2.5-72B-Instruct に適用し、SWE-bench Verified の Pass@1 を 11% から 39% へ引き上げた。教師蒸留を用いず、オープンウェイトモデルのみで実現した点が特筆に値する。
## 論文情報
| 項目 | 内容 |
|---|---|
| arXiv | 2508.03501 v2 (cs.LG / cs.CL / cs.SE) |
| 著者 | [[Alexander Golubev]] ら 12 名 |
| 所属 | [[Nebius AI]](主)、[[Boris Yangel|Humanoid]](Boris Yangel、Nebius AI 在籍時の研究) |
| 投稿日 | 2025-08-05(v2: 2025-10-10) |
| ページ | 25 |
## 概要
LLM への RL 適用は多くの場合シングルターン問題、すなわちバンディット構造の退化した MDP で行われてきた。これに対し SWE タスクはエージェントがサンドボックス環境と**数十ステップにわたるマルチターン対話**を行い、コンパイラ出力やテストログ等の**豊富な観測**を解釈しながら方策を更新する POMDP(部分観測マルコフ決定過程)である。本研究は RFT + DAPO の 2 段階パイプラインでこのマルチターン設定に RL を適用する方法論を提示し、実証した。
## 問題設定
- **タスク定式化**: POMDP ⟨Z, A, Ω, T, O, R, γ⟩。環境状態はファイルシステム・ソースコード・プロセスからなる潜在状態、行動は LLM がオートリグレッシブに生成するコマンド文字列、観測は stdout/stderr/終了コード。
- **報酬**: 二値のスパース報酬。軌跡末端でテストスイートが通れば 1、さもなくば 0。
- **データ**: SWE-rebench(21,336 タスク)からフレーク除去・品質フィルタ後の **7,249 タスク**を使用。
- **評価**: SWE-bench Verified(500 問)、Verified-50(50 問のランダム部分集合)、SWE-rebench 5 月/6 月分割。
## 提案手法
### 第 1 段階: 棄却ファインチューニング(RFT)
Qwen2.5-72B-Instruct をベースに、SWE-rebench タスクを 10 回ずつ実行し**テスト通過軌跡 6,548 件**を収集。教師あり学習を 1 エポック実施し、フォーマットエラーを起こしたアシスタントターンは損失マスクする。これにより Pass@1 が 11% → 20% に上昇し、命令追従・ツール形式への準拠が大幅に改善する。
### 第 2 段階: マルチターン RL(DAPO)
RFT 済みモデルを初期方策として DAPO(Dynamic Allocation Policy Optimization)で反復訓練する。
- **ロールアウト**: 問題あたり G=10 軌跡をサンプル。
- **報酬設計**: テスト結果の二値報酬に**ステップ数ベースの長さペナルティ**を加算。閾値 L_thr=10 を超えた軌跡にはターン数に比例する線形ペナルティを付与(トークン数でなくターン数で計算する点が DAPO 原論文と異なる)。
- **アドバンテージ推定**: グループ内正規化。ゼロアドバンテージのサンプルは動的に除外。
- **2 段構成**: ステージ 1 は 65K コンテキスト・最大 40 ターン、ステージ 2 は **131K コンテキスト・最大 80 ターン**。ステージ 2 では高クリップ上限を下げ、バッチサイズを倍増し、成功率 2/3 超のタスクを除去して難度を引き上げる。
- **インフラ**: 16 ノード × 8 H200 GPU。同期 RL パイプライン(推論と訓練を交互実行)。コンテキスト並列化で 131K トークンの全パラメータ訓練を実現。
## 新規性
1. **マルチターン対話型環境への RL 適用**: 既存手法(SWE-RL 等)がシングルターンに留まるのに対し、状態遷移を伴う POMDP に DAPO を適用した初の完全パイプラインの 1 つ。
2. **教師蒸留なし**: SWE-agent-LM や Skywork-SWE 等がプロプライエタリモデルのデモンストレーションに依存するのに対し、自己生成データのみで訓練。
3. **72B モデルへの 131K コンテキスト RL**: 同時期の DeepSWE(32B)より大きなモデルを長コンテキストで訓練。
4. **ターン数ベースの長さペナルティ**: SWE のマルチターン構造を反映した報酬設計。
## 実験設定
- **ベースモデル**: Qwen2.5-72B-Instruct(YaRN 位置符号化 factor=4.0 で 131K コンテキスト対応)。
- **スカフォールド**: SWE-agent 準拠の ReAct ループ(シェルコマンド・edit・search・submit)。
- **比較対象**: DeepSeek-V3-0324、Llama-4 Maverick、Qwen3-32B/235B、gpt-oss-120b 等を同一環境・ツールで評価。
## 実験結果
| モデル | SWE-bench Verified Pass@1 | SWE-rebench 5 月 Pass@1 | SWE-rebench 6 月 Pass@1 |
|---|---|---|---|
| Qwen2.5-72B-Inst(ベース) | 11.4 | 14.5 | 14.6 |
| + RFT @ 65K | 20.5 | 22.5 | 21.0 |
| + ステージ 1 RL @ 65K | 35.7 | 36.5 | 31.2 |
| + ステージ 2 RL @ 131K | **39.0** | **35.0** | **31.7** |
| DeepSeek-V3-0324 | 39.6 | 36.8 | 31.5 |
| DeepSWE-32B(Luo+ 2025) | 42.2 | — | — |
- 最終モデルは教師蒸留なしの SWE エージェントとして当時最高水準。Pass@10 = 58.4% との乖離はリランキング/best-of-n 選択の余地を示す。
- RL ステージ 2 への移行時に平均ステップ数が増加し、submit コマンドで終了する軌跡の割合も上昇。より長い推論で複雑なタスクに取り組むようになったことを示唆する。
## 考察
### 長軌跡フィルタリングの罠
コンテキスト長を超えた軌跡を除外する慣行は、反復ループに陥る失敗パターンの負例を消してしまい、結果的にループ行動を学習しやすくなる。本研究ではフィルタリングを慎重に適用すべきと結論づけた。
### サンプリング・訓練間の分布不整合
訓練途中で vLLM をアップグレードした際、top-k / min-p フィルタが暗黙に有効化され、ロールアウト分布 π_rollout と真の方策 π_θ_old が乖離した。これにより重要度サンプリング比 ρ_t,k(θ) が不正確になり、5〜10 反復後に性能が劣化した。無偏サンプリングに戻すことで回復した。
### スパース報酬と信用割当
長い軌跡末端の二値報酬を全トークンに一律放送するため、勾配更新がノイジーになる。報酬シェーピング、補助クリティック、プレフィックスサンプリング等が今後の方向性として挙げられている。
## 強み
- 教師蒸留を排し、オープンウェイトモデルの自己生成データだけで訓練する点は再現性・拡張性の面で大きな利点。
- 同期 RL パイプラインの設計と実践的知見(長軌跡フィルタリング、デコーディングパラメータ管理)は、今後のマルチターンエージェント訓練の設計指針となる。
- SWE-bench Verified と SWE-rebench の双方で公正な評価を行い、同一スカフォールドでの比較を提供している。
## 弱点・課題
- 報酬がスパースかつ二値であり、信用割当(クレジットアサインメント)が困難。報酬シェーピングやステップレベルの価値推定は未実装。
- 同期パイプラインはストラグラー問題(最遅軌跡がボトルネック)を抱える。非同期化はスケーラビリティを改善しうるが、方策ラグのリスクを伴う。
- 不確実性推定や棄権機構がなく、解けない問題にもパッチを提出する傾向がある。本番環境への展開には精度・再現率のトレードオフ制御が必要。
- 訓練データは Python リポジトリに限定されており、他言語・他ドメインへの汎化は未検証。
- SWE-rebench の 5 月分割ではステージ 2 で微減(36.5→35.0)しており、長コンテキスト化の効果が一様でない可能性がある。
(Source: [[.raw/papers/arxiv-2508.03501.txt]])