ベンチマーク · coding
CRUXEval
CRUXEval(Code Reasoning, Understanding, and eXecution Evaluation)は、800個の短い Python 関数を用いて、モデルがコードの実行についてどれだけうまく推論できるかを測ります。2つのタスク——与えられた出力を生む入力を予測すること、与えられた入力に対する出力を予測すること——があり、pass@1 の機能的正しさで採点されます。
詳しく見る
- 例
- 短く自己完結した Python 関数が示されます。出力予測では、モデルに具体的な入力が与えられ、関数が返す正確な値を答えなければなりません。入力予測では出力が与えられ、それを再現する任意の入力を示さなければなりません。
- 採点方法
- 指標は pass@1 です(標準の不偏推定量を用いて pass@k も報告されます)。モデルは各問題に対して1つ以上の答えを生成し、それぞれ関数を実行して検証され、スコアは800問中に解けた割合で、CRUXEval-I(入力)と CRUXEval-O(出力)について別々に報告されます。
- 検証方法
- すべての予測は文字列一致ではなく実行によって検証されます。出力の答えは関数の真の戻り値と等しい場合にのみ受理され、入力の答えは関数に渡したときに実際に目標の出力を生む場合にのみ受理されます。したがって元の入力に限らず、有効な入力ならどれでも認められます。
- 重要な理由
- 実行の振る舞いを予測することは、コード推論をコード作成から切り分けます——モデルはもっともらしいコードを生成できても、それが実際に何をするかを追えているとは限りません。関数は単純で自己完結しており、CRUXEval はこの能力のクリーンな検査となり、2つの方向が順方向(出力)と逆方向(入力)の両方の推論を試します。
解説付きの例
課題
def f(nums):
result = []
for n in nums:
result.append(n * 2)
return result
assert f([1, 2, 3]) == ??
CRUXEval-O(出力予測):?? を f が返す値に置き換えてください。
解答
[2, 4, 6]
解説
ループは [1, 2, 3] の各要素を2倍にし、[2, 4, 6] を生成します。採点は assert f([1, 2, 3]) == [2, 4, 6] を実行し、そのアサーションが通った場合にのみ答えを受理します。
このベンチマークの検証済みスコアはまだありません。