TermGrade:評価済みのターミナル環境1,004件、試行記録36,144件、そしてそれらを使った強化学習

6つのモデル構成で評価し、失敗14,234件を含む全36,144件の試行を公開します。各タスクには、人が決めた難易度ラベルではなく、モデルごとに実測した成功率が付いています。その測定に基づいて強化学習用のデータを選定し、Terminal-Bench 2.1で+3.1ポイント、同じ設定による5回の学習では平均+2.1ポイントの改善を得ました。

ai& Research · 読了目安17分

ai& Research · 読了目安17分

2026年10月8日
2026年10月8日

Yagiz Calik, Founding Member of Technical Staff (Post-Training)

Jianbo Wu, Member of Technical Staff (Post-Training)

Shimpei Hara, President & Co-Founder

実行可能な環境
1,004
コンテナ+指示文+pytest検証コード
評価済みの試行記録
36k
失敗約14,000件もすべて収録
評価したモデル構成
6
タスク×モデルの組み合わせ6,024通り
評価の計算量
20k 時間
エージェントの試行で45億トークン

Kimi-K3、DeepSeek-V4-Pro、GLM-5.2、Qwen3.6-27B、gemma-4-31B-it(推論あり・なし)で評価。集計値だけでなく、個々の試行を公開します。

要約

AIエージェントの学習と評価に使える1,004件のターミナル環境「TermGrade」を公開します。各環境にはLinuxマシン上で実行するタスクと、その結果を検証する自動テストが含まれます。参照解答がテストに合格することを確認できたタスクだけを収録しています。

6つのモデル構成で全タスクに取り組み、失敗も含めたすべての試行を公開します。失敗した試行については、どのテストに不合格だったかも記録しています。

モデルが最も学びやすいのは、半分ほどの確率で解けるタスクです。そこでgemma-4-31B-itを、実際の学習と同じ構成で別途評価し、半分ほどの確率で解けたタスクを使って学習させました。Terminal-Bench 2.1では3.1ポイント改善し、同じ設定で学習を5回繰り返しても、すべての回でベースモデルを上回りました。

また、難易度はモデルによって異なります。あるモデルが半分ほどの確率で成功するタスクは、別のモデルでは大きく異なっていました。そのため、タスクの評価には、実際に学習させるモデルを使う必要があります。

強化学習では、成功した試行に報酬を与えます。しかし、モデルがあるタスクに必ず成功する、あるいは必ず失敗する場合、すべての試行が同じ報酬を受け取るため、学習の更新に必要な報酬の差が生まれません。半分ほどの確率で成功するタスクであれば、強化すべき成功例と、比較対象となる失敗例の両方が得られます。そこで学習前に見極めたいのは、これから学習させるモデルにとって、どのタスクがその範囲に入るかです。

難易度を実測して学習タスクを選ぶ方法は、すでに知られています(参考文献参照)。それでも、AIエージェントの強化学習では、タスクの選定が直感に頼ることも少なくありません。難易度の測定には手間がかかります。結果はモデルによって異なり、モデルが変わるたびに確かめ直す必要があるからです。

あるモデルには簡単なタスクでも、別のモデルには難しいことがあります。そのため、別のモデルで測った成功率を、そのまま学習タスクの選定に使うことはできません。モデルのバージョンやツール構成が変われば、結果も変わり得ます。前の四半期には学習に役立ったタスクが、今も適切とは限りません。

今回、同じ1,004件のタスクを6つのモデル構成で評価しました。すると、半分ほどの確率で成功するタスクの組み合わせは、モデル間で大きく異なっていました。そこで実際の学習に向けては、使用するモデルとツール構成で候補タスクを別途評価し、成功率が50%に近いものを選びました。

この測定をモデルの変化に合わせて繰り返し、学習タスクを選び直せるように、評価と選定のパイプラインは低コストで再実行できるよう設計しました。

今回公開するのは、タスクセットと実測した成功率、その測定のもとになった全試行の記録、実際に学習に使用したタスクの一覧、そして学習済みチェックポイントです。

実行可能なLinuxタスク1,004件。コンテナ、指示文、pytestによる検証コードに加え、6つのモデル構成で測定した成功率を収録しています。
評価済みの試行36,144件。全コマンド、加工前のターミナル出力、テストごとの判定、取得できる場合は推論過程も収録しています。うち21,910件が成功例で、そのままSFTに使えます(Apache-2.0。messages列を変更せずチャットテンプレートに渡せます)。失敗14,234件も公開します。
実際の学習に用いた151環境と検証用120環境。使用したとおりの分割をParquet形式で公開します。
学習済みアダプターと、すぐに利用できるマージ済みの重み。
図 1

タスク生成から学習までの流れ

ステージ 1タスクの生成
分野と難易度を指定プロンプトと修正ループ
モデルがタスクを作成指示文から実行環境まで生成
タスクごとの4つの構成要素
environment/tests/instruction.mdsolution/
66,165 候補タスク
ステージ 2実際に実行して選別
イメージをビルド評価時はネットワーク接続なし
参照解答の合格を確認タスクに付属する解答で検証
合格不可能なテストを確認どの実装でも通らないテストを除外
除外
不合格
1,004 公開タスクセット
ステージ 3公開用の評価:タスクセットに付属
6つのモデル構成Harbor上のTerminus-2
36,144
モデルごとの成功率全試行の記録も収録
6,024

この評価は公開データに収録するためのものです。学習データの選定には使用しません。

36,144 評価済みの試行記録
ステージ 4学習タスク選定用の評価:別途実施
ベースモデルで評価bashツール呼び出し構成
成功率0.50付近p(1−p)が最大になる範囲
151
GRPO++で5回更新16ロールアウト、LoRA r32
+3.1

ツールや実行手順を含むエージェントの構成(スキャフォールド)によって難易度が変わるため、学習時と同じ構成で評価します。上のTerminus-2で測った成功率とは別のものです。

+3.1 Terminal-Bench 2.1
公開リリースenvironments/試行記録モデルごとの評価値アダプター+マージ済み重み
ステージ1と2では、タスクを実際に実行してタスクセットを構築します。その後、目的の異なる評価を2回行います。ステージ3ではTerminus-2上で6つのモデル構成を評価し、公開するラベルを作成します。ステージ4では独自の構成でベースモデルを評価し、学習データを選定します。
Jump target #corpus · invisible on the published site

01 タスクセットの構築と評価

ターミナルタスクを評価するには、環境が動作し、検証プログラムが正しい解答と誤った解答を区別できる必要があります。そのため、モデルの評価に先立ち、信頼できるタスクを構築しました。

DeepSeek-V4-Pro†で候補タスクを生成し、すべてを実際に実行して、利用できるものを確かめました。収録の条件は、構築済みのイメージ内で、ネットワーク接続なしに、そのタスクの参照解答が検証プログラムに合格することです。生成した66,165件の候補タスクのディレクトリのうち、この条件を満たしたのは1,004件(1.5%)でした。

検証プログラムには、1タスクあたり平均16.2個の名前付きアサーションが含まれます。失敗時には、どの動作のチェックに不合格だったかが分かります。

公開用の評価では、Harborを通じてTerminus-2のスキャフォールド上で6つのモデル構成を評価しました。12時間の採点予算のもと、大半は1タスクあたりk=8回、実行コストの高いDeepSeek-V4-ProとGLM-5.2はk=2回試行しました。これにより、タスクとモデルの6,024通りの組み合わせそれぞれに、実測した成功率が付きます。pass@1は1回の試行で解けるタスクの割合、pass@8は8回の試行で少なくとも1回解けるタスクの割合です。

図 2

6つのモデル構成の実測成功率

pass@1は全6構成、pass@8はk=8の構成のみ。上位3モデルの間に有意差は見られず、Qwen3.6-27Bはそれらより低い結果でした。

pass@1pass@8
gemma-4-31B-it
0.50
0.72
gemma-4-31B-it (推論あり)
0.58
0.78
Qwen3.6-27B
0.63
0.83
統計的な有意差なし
Kimi-K3
0.68
0.84
DeepSeek-V4-Pro
0.69
pass@8未測定(k=2)
GLM-5.2
0.69
pass@8未測定(k=2)
表で見る
モデルkpass@1pass@8
gemma-4-31B-it80.49860.7211
gemma-4-31B-it(推論あり)80.57740.7769
Qwen3.6-27B80.63200.8257
Kimi-K380.67700.8367
DeepSeek-V4-Pro †20.6853—
GLM-5.220.6858—
背景を付けた行の間には統計的に有意な差が見られませんでした。グラフは小数点以下2桁に丸め、表には元の精度で掲載しています。

今回の評価では、上位3モデルの性能差は確認できませんでした。全1,004タスクについて、タスク単位の対応を考慮して比較したところ、Kimi-K3、DeepSeek-V4-Pro、GLM-5.2の差は+0.05ポイント(p=0.97)、−0.87ポイント(p=0.42)、−0.82ポイント(p=0.51)で、いずれも有意ではありませんでした。一方、これらを下回ったQwen3.6-27Bとの差は、3モデルすべてでp < 0.001でした。

† DeepSeek-V4-Proのビルドについて。本記事の数値はすべて評価対象のビルドに基づき、評価期間中に公開された0813版のものではありません。各試行にはstarted_atを記録しているため、行ごとに実行時期を確認できます。

成功率が同等でも、実行コストには大きな差があります。Kimi-K3は同等のスコアに達しながら、成功した試行の所要時間の中央値は5.6分で、他の2モデルは92.9分と106.9分でした。成功1件あたりの出力トークン数も、約5,600に対し、他の2モデルは約100,000と73,000です。1試行あたりの実時間は約1/11〜1/13であり、Kimi-K3をk=8、他の2モデルをk=2とした理由もここにあります。全1,004タスクを8回ずつ試行したKimi-K3の延べ試行時間は1,929時間でした。GLM-5.2とDeepSeek-V4-Proをそれぞれ2回ずつ試行した延べ時間は、合計11,648時間でした。

図 3

上位3モデルの成功1件あたりの所要時間

pass@1で統計的に有意な差が見られなかった3モデルについて、成功した試行の所要時間の中央値を比較しています。

Kimi-K3
5.6分
同等の成功率
92.9分
同等の成功率
106.9分
pass@1は0.677、0.685、0.686で、この評価ではDeepSeek-V4-Pro、GLM-5.2との有意差は見られませんでした。Kimi-K3の成功時の所要時間は、他の2モデルの約1/17〜1/19です。
Jump target #selection · invisible on the published site

02 学習タスクの選定ルール

学習に適しているのは、モデルが半分ほどの確率で解けるタスクです。その理由は、学習時の更新の仕組みにあります。

図 4

2つの目的に分けて評価する

公開タスクセット1,004タスク
公開用の評価:タスクセットに付属
6つのモデル構成

Terminus-2構成/Harbor経由

36,144
学習データの選定には使わない
学習タスク選定用の評価:別途実施
ベースモデルのみ

bashのツール呼び出し構成

151
学習データを選定
この2つの成功率は、互いに置き換えて使うことはできません。


GRPOでは、プロンプトの勾配への寄与は、そのプロンプトから生成した試行(ロールアウト)の報酬分散に応じて変わります。報酬が二値の場合、分散はp(1−p)で、p = 0.50のときに最大になります。常に解けるタスクと、まったく解けないタスクは、どちらも勾配に寄与しません。

図 5

なぜp = 0.50なのか:勾配の重みp(1−p)

GRPOの勾配は報酬分散に応じて変わります。両端ではゼロ、中央で最大になります。

p=0とp=1のプロンプトは勾配に寄与しません。これから学習するモデルで、曲線の頂点付近にあるタスクを選びます。

選定ルールは、ベースモデルで実測した成功率が0.50に最も近いタスクを選ぶことです。手作業による選別や追加の経験則は使いません。ベースモデルと評価ツールがあれば再現できます。この考え方自体は新しいものではありません。Kimi k1.5は実測した成功率に基づいてプロンプトをサンプリングしており、最近の研究では、報酬分散がグループ相対型の強化学習を加速する仕組みも定式化されています。今回の貢献は、全タスクを6つのモデル構成で測定し、その結果を公開することです。このルールで選ばれたのは151タスク(図6)で、上記のタスクセット由来の118件と、CAMEL-AIの合成ターミナル環境セットSETA由来の33件で構成されます。両方を同じ方法で評価し、成功率0.50という同じ基準で選びました。学習開始後に勾配へ寄与したのは151件中137件です。SETA由来を含む全151件をtermgrade-bandcentral-gemma4-31b-bashで公開しています。公開時の品質確認で118件のうち5件を除外したため、1,004件の公開タスクセット内では113件にtrain151フラグを付け、学習データとの重複を識別できるようにしています。

図 6

66,165件の候補から成功率50%付近の118件へ

各段階でタスクを実行して絞り込みます。棒の長さは対数スケールです。1つ目の割合は直前の段階に対する比率、2つ目は全生成数に対する比率です。

生成した候補タスクのディレクトリ
66,165
100%
実行検証を通過:公開タスクセット
1,004
1.5%全体の1.5%
ベースモデルの成功率が0.50付近
118
11.8%全体の0.18%
学習に用いたのは118件ではなく151件です。上図の118件にSETA由来の33件を加えました。SETAのタスクは公開タスクセット1,004件に含まれないため、図には表示していません。全151件をtermgrade-bandcentral-gemma4-31b-bashで公開しています。学習開始後、勾配が生じたタスクは137件でした。
まず実行によって絞り込み、その後、残ったタスクから成功率50%付近のものを選びます。
評価は2種類あり、別々に実施しています。公開タスクセットに付属するのは、Terminus-2を使った6モデル構成の評価結果です。一方、学習用タスクの選定では、実際の学習と同じbashツール呼び出しのスキャフォールドで評価し直しました。難易度はモデルだけでなくスキャフォールドによっても変わるためです。学習タスクを選ぶ基準にしたのは、Terminus-2での成功率ではありません。

では、データの量は重要でしょうか。成功率の範囲を緩めて選んだ707タスクで、同じベースモデル、検証セット、ハイパーパラメータを使って学習すると、スコアは46.6でした。151タスクの場合は46.1で、差は統計的に有意ではありませんでした(t = 0.80、95%信頼区間 −0.8〜+1.8。それぞれ3回と7回の評価の平均)。学習データを約5倍に増やしても、測定上は明確な優位性が得られませんでした。

その理由は図5から分かります。p(1−p)の曲線は中央付近で平坦で、0.3〜0.7のどこでも勾配の重みは最大値の84%以上、0.45なら99%になります。つまり、このルールで重要なのは、両端にあるタスクを除外することです。範囲内での厳密な選別は必要ありません。学習時にタスクの平均成功率が0.36まで変化していても影響が小さかったのは、0.36でも最大値の92%を保つためです。

計算量を節約できるのは、評価ではなく強化学習の実行です。151環境だけを用意して、残りを省くことはできません。その151件を見つけるために、ベースモデルで数千件のタスク評価を行い、まず成功率0.25〜0.75の555件に絞り、さらに0.50に最も近い151件を選ぶ必要があったからです。

Jump target #training · invisible on the published site

03 学習

今回の新しい点は、データの選び方にあります。学習そのものには、完了までの手順が長く、報酬が疎で、多数のターンを要するターミナルタスクに適した設定を使いました。以下に設定を示します。このうち2つの選択は、データの選定方法と直接関係しています。

学習手法はGRPOに、長いタスクを扱うエージェントの強化学習向けのDAPOの変更と、Dr.GRPOのアドバンテージ処理を組み合わせたGRPO++です。標準的なGRPOからの主な変更は以下のとおりです。

  • KL項を使わない:報酬にも損失にも加えません。長いエージェントのロールアウトでは、参照方策から大きく離れることが意図されています。その変化にペナルティを与えると、目指す学習を妨げます。

  • Clip-Higher:PPOのクリッピング幅を0.2 / 0.28の非対称な設定にします。上限側を緩めることで、確率は低くても正しいトークンの更新が切り捨てられるのを防ぎます。これは長い思考過程(CoT)を扱う強化学習で、エントロピーが崩壊する主な経路への対策です。

  • トークン単位で損失を平均:40ターンの軌跡が3ターンの軌跡と同じ重みに平均化されず、長さに応じて学習へ寄与するようにします。

  • アドバンテージを標準偏差で正規化しない(Dr.GRPO):平均を引く処理のみを行います。グループの標準偏差で割ると、簡単すぎるプロンプトや成功の見込みがないプロンプトの重みが相対的に増えます。これは、選定ルールによって取り除こうとしている偏りです。

  • 動的サンプリング:filter_groupsで、16回のロールアウトが全成功または全失敗になったプロンプトを除外し、再サンプリングします。1ステップあたり最大10生成バッチまで繰り返します。

  • 完全なオンポリシー学習:バッチは16プロンプト、ミニバッチも16、各ステップのオプティマイザー更新は1回です。ステップ内で古い方策に基づく勾配を使い回しません。各プロンプトについて、温度0.6で16回のロールアウトを生成します。

  • ベースモデル:gemma-4-31B-it/LoRAランク32/学習率1e-5/二値報酬/5回の更新 ≈ 1エポック。

  • bashのツール呼び出し構成で学習し、Terminus-2で評価。異なるスキャフォールドへの学習効果の転移も、今回の結果に含まれます。

  • 独立した検証セット:学習用とは重複しない120タスクを使用します。成功率がp≈0.25の60件とp≈0.75の60件を選び、意図的に二峰性の分布にしています。これにより、学習した難易度帯での再現性だけでなく、難易度が変わったときの汎化を測ります。

1回の学習実行には、H200を8基搭載した1ノードで約7時間かかります。内訳は学習4時間、検証3時間です。各ステップで独立した検証セットを評価したため、検証にも時間を使っています。

動的サンプリングと成功率50%付近のタスク選定は、パイプラインの異なる段階で同じ考え方を適用しています。filter_groupsは報酬に差がないグループを除外しますが、その時点ではすでに16回分のロールアウトの生成コストがかかっています。実測した成功率で事前に選定すれば、そうしたグループの生成を避けられます。それでも選定を通過した一部のタスクでは成功例が得られず、14件が該当しました。これらをfilter_groupsが除外し、137件が勾配に寄与しました。

ただし、その137件すべてが1回の学習で使われるわけではありません。各更新では16プロンプトを選び、それぞれ16回のロールアウトを生成します。1度でバッチが埋まるのは、全成功または全失敗のグループが1つもない場合だけです。実際には毎ステップ2回、計32プロンプト分を生成し、16グループを採用しました。1回の学習全体で勾配に寄与する異なるプロンプトは約78件です。どの78件になるかは、生成された試行の結果によって変わります。これが実行ごとの学習結果に差が出る大きな要因であり、タスクセットの規模に合わせてバッチサイズも増やすべきだと考える最も明確な根拠です。

図 7

1回の更新で、どの試行が学習に使われるか

選定した151タスクいずれもpが0.50付近
16プロンプトを抽出1バッチ分
それぞれ16回試行コンテナ内で実行、温度0.6
16試行ごとに、二値報酬に差があるかを確認
すべて成功

報酬にばらつきなし

除外
すべて失敗

報酬にばらつきなし

除外
成功と失敗が混在

0.50付近でばらつきが最大

学習に使用
タスクに成功タスクに失敗
除外した分を再抽出そのため32プロンプトを生成
16件でバッチが完成余った分は破棄
最適化を1ステップ実行LoRA r32、KL項なし

1回の学習全体で勾配に寄与する異なるプロンプトは約78件です。どの78件になるかは、生成された試行の結果によって変わります。

各グループは報酬のばらつきで判定され、全成功と全失敗のグループはどちらも除外されます。成功率50%付近のタスク選定では、ロールアウトの生成コストをかける前に、同じ考え方で候補を絞ります。

除外されたグループは、成功率50%付近のタスクが偶然偏った結果を出したものではなく、先ほどの14件でした。真の成功率がp = 0.50なら、16回の試行がすべて同じ成否になる確率は約10万分の3にすぎません。ただし、勾配に寄与したプロンプトの平均成功率も、0.50ではなく0.36でした。選定から学習までの間に、対象の成功率が変わっていたのです。難易度ラベルは、ある時点の特定のモデルに対する測定値です。それは、数回前の更新時点の自分たちのモデルにも当てはまります。

動的サンプリングは、タスクが適切な成功率の範囲にとどまっているかを低コストで確かめる手段にもなります。バッチが埋まるまでの生成回数を示すnum_gen_batchesは、5回の更新すべてで、上限10に対して2でした。このことから、更新後の方策に対してもタスクセットは中央付近の成功率を保っていたと判断しました。この値が上限に近づいてきたら、そのまま学習を続けず、タスクを再評価して選び直すべき合図です。

Jump target #results · invisible on the published site

04 5回の学習結果

公開するチェックポイントは、Terminal-Bench 2.1で46.1、ベースモデル比+3.1ポイントを記録しました。これは公開するものと同一のチェックポイントを7回評価した平均です。公開アダプターを使って再評価できます。

図 8

gemma-4-31B-itを成功率50%付近のタスクで強化学習

Terminal-Bench 2.1/pass@1

43.0
46.1
+3.1
gemma-4-31B-itベースモデル
+成功率0.50付近のタスクでRL公開チェックポイント
ベースモデルの43.0はArtificial Analysisの公表値です。46.1は、各タスクを3回ずつ試行する評価を7回行った平均です。

公開する1つのチェックポイントの成績に加え、この手法でどの程度の結果が得られるかを確かめるため、同じ設定で学習を5回行い、各チェックポイントを評価しました。平均スコアは45.1、ベースモデル比+2.1ポイント(標準誤差0.6)でした。5回すべてでベースモデルを上回り、改善幅は最小0.4ポイント、最大3.3ポイントでした。平均改善幅はゼロに対して統計的に有意でした(t = 3.8、p ≈ 0.025)。公開チェックポイントの+3.1は1回の学習結果であり、+2.1は同じ設定による5回の学習結果の平均です。

評価はArtificial AnalysisのTerminal-Bench 2.1の方法に従いました。89タスク、Terminus-2、各タスクを3回繰り返してpass@1を算出し、1タスクあたりのタイムアウトは2時間です。唯一の違いはサンドボックスで、E2BではなくHarbor経由のDaytonaを使っています。Artificial Analysisが公表するgemma-4-31B-itのスコアは43.0で、こちらの再現評価も近い値でした。本稿の改善幅は、公表値43.0を基準にしています。

各回とも同じ学習設定を使用し、乱数シードは固定していません。公開するチェックポイントは実行1のものです。5回すべてでベースモデルを上回りました。
Terminal-Bench 2.143.0との差
公開チェックポイント46.1+3.1
同じ設定による5回の学習45.1+2.1 ± 0.6

異なるスキャフォールドと難易度分布を持つ、独立した120タスクの検証セットも追跡しました。検証スコアは5回中4回でベンチマークと同じ方向に動き、1回では逆方向に動きました。そのため、主要な結果にはTerminal-Benchを用いています。検証スコアによるチェックポイントや実行の選別は行っていません。

5回の平均では、検証スコアはいったん上昇した後、4回目の更新で開始時をわずかに下回り、5回目に大きく上昇しました。最後の上昇は例外なくすべての実行で見られ、今回最も再現性の高い観察結果でした。5回の更新が最適なのか、それともより長い変動の一局面なのかは、今後の実験で確かめます。

他の研究者に特に検証していただきたいのは、どのように改善が生じるのかという点です。実測した成功率が対象範囲内にあるタスクを選んだ2条件、151件と707件の両方で、タスク完了率と解答の正確さがともに向上しました。一方、別の方法で完了率を高めた設定では、その代わりに正確さが低下しました。改善はベースモデルがターン数の上限に達していたタスクに集中し、すでに完了できていたタスクではほぼ変化がありませんでした。ただし、これも他の結果と同じく、少数の実行から得られた観察です。

Jump target #trajectories · invisible on the published site

05 試行記録に含まれる情報

公開される軌跡データは、成功例だけに限られることがよくあります。今回はすべての試行を収録しており、失敗例にも多くの情報が含まれています。図9はその一例です。固定小数点計算機/app/fixcalcの作成を求められたgemma-4-31B-itは、12ターンで実装し、45個中44個のアサーションに合格しましたが、test_empty_inputで失敗しました。報酬は0.0で、何も始めなかったモデルと同じです。

図 9

45個のアサーションのうち44個に合格

gemma-4-31B-itが12ターンで実装。

タスク fixcalcモデル gemma-4-31B-itターン数 12検証項目 45
44件合格 1件不合格: test_empty_input
報酬0.00
報酬は0.0。最終スコアだけでは、何も始めなかったモデルと区別できません。

これは珍しいケースではありません。公開データには、8個以上のアサーションに合格し、1個だけ失敗した試行が6,544件あり、全試行の18%を占めます。スコアが記録するのは成功か失敗かだけです。報酬の計算には足りますが、そこに至った過程は分かりません。テストごとの記録には、どのアサーションに失敗し、そのときモデルが何を入力したかが残っています。この情報をテストごとの部分点として直接使う方法も試しましたが、このタスクセットでは二値報酬より結果が悪く、二値報酬に戻しました。それでも、ここは今後最も詳しく調べたい領域です。

他の人が同じ規模の実験を再現するのは容易ではありませんが、データ形式を整えることで再利用しやすくしています。各試行には2つの表現があります。チャットテンプレートにそのまま渡せるmessages列と、その形式への変換時に省かれる情報も含む完全なTerminus-2エピソードです。

試行ごとのフィールド。2つのデータセット構成に同じ36,144試行を収録し、それぞれに容量の大きい列を1つずつ持たせています。どちらもtask + model + trialで結合できます。
フィールド収録内容
messages{role, content, reasoning_content, parsed}。SFTに利用可能で、すべての行でロールの厳密な交互性を検証済み。
terminus_episode送信した全キー入力、返された生のターミナル画面、スキャフォールドが挿入した警告。
steps[].metricsターンごとのprompt_tokens、completion_tokens、cached_tokens。
steps[].timestampターンごとの経過時間。出力トークン数と組み合わせて、そのターンの生成速度を算出できます。
agent.extra推論時の設定:パーサー、温度、max_tokens。
tests名前付きアサーションの判定結果、36,074行。
verifier_outputpytestの出力とプログラムの標準出力、72,148行。1試行あたり2行。
release_meta採点記録を格納:reward、reward_uncapped、上限制約のフラグ、ステータス。


総量は、集計対象の試行36,144件(kを超える再試行を含めると62,481件)、入力トークン36.8億、出力トークン8.0億、延べ実行時間19,875時間です。毎ターン会話履歴全体を再送するため、入力と出力の比率は4.6:1になります。DeepSeek-V4-ProとGLM-5.2は、試行数の11%に対し、延べ実行時間の58%を占めました。

図 10

6つのモデル構成のpass@1と総実行時間

各点が1つのモデル構成を表します。実行時間は対数スケールです。6構成の最大値と最小値の差は、pass@1で1.4倍、総実行時間で10.6倍あります。

Kimi-K3は、DeepSeek-V4-ProおよびGLM-5.2とpass@1で有意差が見られず、総実行時間は約3分の1でした。

データからは、次のような傾向も読み取れます。

  • 推論を有効にしたgemma-4-31B-itは、約3分の1の試行を2ターン以内に終了します。スクリプトを書いて完了を宣言し、実行しないまま終わっています。

  • スコアとコストは別々に動きます。モデル間のpass@1の差は最大1.4倍ですが、成功1件あたりのトークン数の中央値には34倍の差があります。

  • GLMには、有効なツール呼び出しを含まないターンがあります。しかも、そのようなターンは成功したターンより長く、分析が実際の操作につながっていません。

  • ターン数が多いほど進展するとは限りません。同じタスク内で比較すると、QwenとGLMでは成功した試行のほうが失敗した試行よりターン数が少なく、他のモデルでは大きな差がありませんでした。

Jump target #labels · invisible on the published site

06 難易度ラベルを別のモデルに流用できない理由

6つのモデル構成すべてについて、半分ほどの確率で解けるタスクの集合を測定しましたが、集合の重なりは小さいものでした。異なるモデル間の対象タスク集合のJaccard類似度は0.11〜0.21で、1,004件のうち、全6構成で中央付近の成功率になるタスクは1件もありませんでした。

図 11

6構成の対象タスク集合のJaccard類似度

各モデルが「半分ほどの確率で解ける」タスク集合どうしの重なり。ここではベース成功率0.25〜0.75を対象にしています。

0.11–0.21
1.0
0 重なりなし完全一致 1.0
異なるモデルの組み合わせはすべて、濃い色の帯の0.11〜0.21に入ります。最も高い0.29は、gemma-4-31B-itの推論なしと推論ありの比較です。難易度がタスクだけで決まるなら、これらの値は1.0に近づくはずです。

難易度は、タスク、モデル、スキャフォールドの組み合わせで決まります。難易度を使って学習データを選ぶなら、私たちのものも含め、他のモデルのラベルをそのまま引き継ぐことはできません。実際に学習させるモデルで評価する必要があります。成功率だけでなく全軌跡を公開するのも、別のモデルで測定をやり直せるようにするためです。

07 今後の取り組み

今後取り組みたいことは、すでにいくつか見えています。

  • 測定の質を保ちながら対象を広げる。タスク数が1,004件にとどまるのは、すべてに動作確認済みの参照解答、6構成での難易度測定、テストごとの結果を付けているためです。今後はタスク数と分野を増やしながら、推測に頼らず1件ずつ測定する方針を保ちます。

  • 再評価を高速にする。モデルごとに難易度を測る必要があるなら、重要なのは、自分のモデルでタスクセットを再評価し、適切な難易度帯を選び直せるツールです。1週間ではなく、半日で誰でも実行できるようにしたいと考えています。

  • 評価のオーバーヘッドを減らす。今回の延べ実行時間の20〜30%はモデルの計算ではなく、試行ごとのタイムアウトに伴うクライアント側の再試行によるものでした。評価パイプラインには、まだ改善の余地があります。

  • 他の学習目的への適用。この選定ルールは、二値報酬を使うグループ相対型の強化学習では、プロンプトの勾配の重みが報酬分散p(1−p)となり、0.50で最大になるという考え方に基づきます。これはGRPOだけに固有のものではなく、他のグループ相対型の目的関数にも適用できると考えています。DPOなら、モデルが同程度にもっともらしいと判断するペアが対応する候補になるでしょう。どちらもまだ測定していませんが、公開するタスクセットを使って検証できるようにしたいと考えています。

今後、より詳しい論文としてまとめる予定です。

公開リポジトリには、集計結果だけでなく試行単位のメタデータを含めているため、各成功率を確認できます。このタスクセットをベンチマークに使う場合は、1,004件のうち202件が私たちの学習または検証セットに含まれていることに注意してください。評価には、未使用の802タスクからなる分割を使用してください。学習・検証用の全271タスクは、bandcentralリポジトリで公開しています。

すべてHugging Faceで公開しています

タスクセット、評価済みの試行記録、成功率50%付近の学習タスクを含むデータ分割、チェックポイントを、ai-andで公開しています。ご自身のモデルで再評価し、結果をぜひお知らせください。

公開データを見る お問い合わせ

貢献

Y.C.は、タスクセットの生成と検証、評価パイプライン、成功率50%付近のタスク選定、強化学習とその評価、本稿の執筆を設計・主導しました。J.W.は、データ、環境、モデル、学習設定にわたる幅広い実験と評価を行い、検証方法の整備と改善に貢献しました。S.H.は、取り組み全体の方向性を示し、本稿の執筆に貢献しました。

謝辞

本研究と原稿をレビューし、フィードバックをくださったAdithya Kolavi氏(Hugging Face)とMaxime Labonne氏(Liquid AI)に感謝します。

参考文献

手法

  • DeepSeekMath(Shao et al., 2024):GRPOを提案。本稿の選定ルールが対象とする報酬分散と、プロンプトごとの勾配の重みに関わるグループ相対型の目的関数。

  • DAPO(Yu et al., 2025):長いタスクを扱うエージェントの強化学習に向けた動的サンプリングとClip-Higher。

  • Dr.GRPO(Liu et al., 2025):標準偏差による正規化を使わないアドバンテージ処理。

  • LoRA(Hu et al., 2021):今回の学習で使用するアダプター手法。

  • verl / HybridFlow(Sheng et al., 2024):今回の実験を実行した強化学習フレームワーク。

ベンチマークと実行基盤

  • Terminal-Bench(Merrill, Shaw et al., 2026):89タスクからなるベンチマーク。今回は、そのうち28タスクを修正したバージョン2.1で評価。

  • Terminus:エージェントのスキャフォールド。今回はTerminus 2を使用しており、このバージョン単独の解説文書はありません。

  • Harborは実行ハーネス、Daytonaはその下で動くコンテナサンドボックス。

  • Artificial Analysis:今回準拠した公開評価手法と、改善幅の基準にしたベースモデルのスコア43.0の出典。

利用した、または関連するタスクセット

  • SETA(Shen et al., CAMEL-AI, 2026):4,567件のターミナル環境。今回の151学習タスクのうち33件はSETA由来で、独自タスクと同じルールで評価。

  • Tmax(UW / AI2, 2026):データ、モデル、コードとともに公開された、ターミナルエージェント向けの強化学習手法。

実測した難易度による学習データ選定の先行研究
セクション02のルール自体は新しいものではなく、この分野では活発に研究が進められています。

  • Kimi k1.5(2025):DAPOに先立ち、プロンプトごとの成功率を難易度の指標として計算し、サンプリングに利用。ただし、分散が最大の領域ではなく、より難しいプロンプトに重みを置く点で、今回のルールとは異なります。

  • Accelerating RLHF Training with Reward Variance Increase(Yang et al., 2025):初期方策の報酬分散が大きいほどGRPOベースの学習が速くなることを理論的に示し、その仕組みを定式化。

  • Spend Your Rollouts Where It Counts(Kim et al., 2026):同じp(1−p)の考え方を、事前のフィルタリングではなく、学習中のロールアウト配分に適用。

  • CLPO(Zhang et al., 2025):現在の方策の正答率でプロンプトを分類し、中程度の難易度帯を中心に学習。

  • Mechanistically Interpreting Sample Difficulty in RLVR(Cheng et al., 2026):難易度と改善幅の関係は単調ではなく、簡単〜中程度のプロンプトで最も安定した改善が得られると報告。最適値が厳密に0.50であると断定することには慎重さが必要です。

引用情報

@misc{calik2026termgrade,  title        = {{TermGrade}: 1k Graded Terminal Environments, 36k Trajectories, and the {RL} Run They Trained},  author       = {Calik, Yagiz and Wu, Jianbo and Hara, Shimpei},  year         = {2026},  month        = oct,  howpublished = {\url{https://www.aiand.com/newsroom/termgrade}},  note         = {ai\& Research blog post}}

図表の数値はすべて、本記事で説明した評価実行の実測値です。公開リポジトリの試行ごとのメタデータから、それぞれの値を再現できます。DeepSeek-V4-Proの数値は評価対象ビルドのもので、0813版のものではありません。脚注†を参照してください。