
2026/10/14 4:50
Show HN: パルシモニー – 人工知能モデルが追加するコードの量を測定するためのオープンソースベンチマーク
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
本テキストは、「Parsimony」という新しいベンチマークを紹介し、AI コーディングモデルを評価するために、単なる成功率やコストではなく、追加されるコードユニットのネット量を測定することを目的としています。既存の指標が成功優先で冗長性を無視するのに対し、Parsimony は効率性を重視してモデルをランク付けし、小規模なコードの変更が必ずしも優れた設計や可読性を意味しないことを強調しています。この指標は、文書を実行する必要なく、特定の Python コーディングユニット(ステートメント、関数呼び出し、比較演算子、識別子、リテラルなど)の数を数え、テスト、ドキュメント、生成されたファイルを除外することでパフォーマンスを算出します。ネットユニット量は、追加されたユニットから削除されたユニットを差し引いて計算され、モデルは解決したタスクにおける平均ネット追加ユニット量でランク付けされます(最も低い順)。別途、「平均ネット追加ユニット量」指標には失敗試行も含まれます。データは標準化されたエージェントである mini-SWE-agent を使用して SWE-bench Verified データセットからランキングを導き出しており、pass/fail の結果は再テストなしに SWE-bench によって公開されたデータから得られ、手法ではタスクコードにパッチを適用し、変更された各ファイルの両バージョンを解析します。以前のベンチマークでは、モデルに過度なまたは不要なコードを追加することを罰則として含めず、冗長な解決策が最終製品を膨らませながらも同様に効果的であるように見せていました。このギャップに対処するため、ユーザーは例となるファイルをダウンロードしてローカルで比較グラフを生成することで評価を展開でき、このモジュール的なアプローチによりコミュニティが Parsimony をより広範なコーディング評価に採用し、企業が真の能力と冗長性を区別できるようになります。したがって、組織はこれらのツールを使用する開発者向けのクリーナなソフトウェア保守要件を促進するため、ネットユニット追加量が低いモデルを好むように選択基準を調整する可能性があります。また、本テキストでは「より多くのコードを書く傾向があるモデルほど多くのタスクを解決する」という点も指摘しており、26 つ以上のモデルを含むボードにおける Spearman 相関係数は 0.33–0.60 です。さらに、すべてのモデルが同じエージェント(mini-SWE-agent)を使用するにもかかわらず、エージェント自体がどの程度のコードが書き込まれるかに影響を与えることも明記されています。
本文
パルシモニー(節制性)指標と SWE-bench ベンチマーク解説
既存ベンチマークの課題
従来の評価ベンチマークは以下の点に問題を抱えています。
- 解決率とコストのみを測定している。
- 余分なコードの増加分に対してペナルティを課さない。
- その結果、長期にわたりコードベースの利用が困難になるリスクがある。
パルシモニー(節制性)とは
「パルシモニー」は、AI モデルが追加するコードの量を評価するための新たな指標です。
評価の計算方法
- 基準データ: 既に公開されているベンチマークのパッチを使用。
- カウント対象: シンプルな行数ではなく、「コーディング単位」として構文要素をカウントする。
- ステートメント
- 関数呼び出し
- 比較演算
- 識別子(変数名など)
- リテラル値
- 計算式:
- コードの圧縮行為は評価対象外。
- 削除されたコードから差し引かれる。
$$ \text{純粋な単位数} = \text{追加された単位数} - \text{削除された単位数} $$
グラフとリーダーボードの読み方
モデル比較グラフ
- X 軸: タスクごとの解決数(Solved)
- Y 軸: 平均的な純粋な追加単位数(Measured)
グラフの解釈ポイント
- ランキング基準: モデルは、各タスクで解決した案件に対する**「平均的な純粋な追加単位数」**によってランク付けされ、最も少ない順に並べられています。
- ※この数値には、失敗した試行も含まれます。
- Solved(解決済み)の数値:
の結果に基づいています。(テストの再実行は行われていません)SWE-bench Verified - Measured: 測定可能な解決試行の数を示しています。
リーダーボードと手法の詳細
各パッチは対応するタスクのコードに適用され、以下のように解析・評価されます。
- 解析対象: 変更されたすべてのファイルのバージョン双方を解析。
- 実行操作: 一切行わない(静的解析のみ)。
- 除外対象: テストケース、ドキュメント、生成されたファイル(測定するのは Python のみ)。
- 結果の採用: 「Pass/Fail(合格・不合格)」は、SWE-bench が公開している結果をそのまま採用しています。
制限事項について
この指標には以下の重要な注意点があります。
- 単位数の限界: コードサイズが小さいことだけが善きことではありません。
- 単位数はサイズを表すものであり、可読性や設計の質を直接反映するものではありません。
- 解決数との相関: より多くのコードを書くモデルほど、より多くのタスクを解決する傾向があります。
- レーダーボード(26 つ以上のモデル)において、Spearman 相関係数は 0.33~0.60 の範囲で観測されています。
- エージェントの影響: すべてのモデルが同一のエージェント (
) を使用していますが、それでもエージェント自体がコードの書かれ方に影響を及ぼします。mini-SWE-agent
独自ベンチマークの追加方法
他のベンチマークからコードサイズの数値をお持ちの場合は、以下の手順でチャートおよび表を追加できます。
- サンプルファイルをダウンロードする。
- 自らの結果を入力する。
- ブラウザ上でそのまま同じ形式のチャートと表を得られる。
- ファイルはブラウザ内に保持されます。
- フォーマットと共有方法については別途ご案内いたします。
オープンなデータ
- オープンなベンチマーク JSON ファイルをご利用いただけます。
具体例:負の数値の有無を確認するケース
以下に示す両方の関数は、同様の結果を返しますが、コードの単位構成が異なります。
def has_negative(values): found = False for value in values: if value < 0: found = True return found
def has_negative(values): return any(value < 0 for value in values)