벤치마크 · coding
CRUXEval
CRUXEval(Code Reasoning, Understanding, and eXecution Evaluation)은 800개의 짧은 Python 함수로 모델이 코드 실행을 얼마나 잘 추론하는지를 측정합니다. 두 가지 과제——주어진 출력을 내는 입력을 예측하기, 주어진 입력에 대한 출력을 예측하기——로 구성되며 pass@1 기능적 정확성으로 채점됩니다.
자세히 보기
- 예시
- 짧고 자체 완결적인 Python 함수가 제시됩니다. 출력 예측에서는 모델에 특정 입력이 주어지고 함수가 반환하는 정확한 값을 말해야 하며, 입력 예측에서는 출력이 주어지고 그것을 재현하는 임의의 입력을 제시해야 합니다.
- 채점 방식
- 지표는 pass@1이며(표준 무편향 추정량으로 pass@k도 보고됨), 모델은 문제마다 하나 이상의 답을 생성하고 각 답은 함수를 실행해 검증되며, 점수는 800문제 중 푼 비율입니다. CRUXEval-I(입력)와 CRUXEval-O(출력)에 대해 따로 보고됩니다.
- 검증 방식
- 모든 예측은 문자열 일치가 아니라 실행으로 검증됩니다. 출력 답은 함수의 실제 반환값과 같을 때만 인정되고, 입력 답은 함수에 넣었을 때 실제로 목표 출력을 낼 때만 인정되므로, 원래 입력뿐 아니라 유효한 입력이면 무엇이든 됩니다.
- 왜 중요한가
- 실행 동작을 예측하는 것은 코드 추론을 코드 작성과 분리합니다——모델은 그럴듯한 코드를 생성해도 그것이 실제로 무엇을 하는지 추적하지 못할 수 있습니다. 함수들은 단순하고 자체 완결적이어서 CRUXEval을 이 능력에 대한 깔끔한 검사로 만들며, 두 방향은 순방향(출력)과 역방향(입력) 추론을 모두 시험합니다.
예제 풀이
문제
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, 4, 6]을 생성합니다. 채점은 assert f([1, 2, 3]) == [2, 4, 6]을 실행하고 그 어서션이 통과할 때만 답을 인정합니다.
이 벤치마크에 대해 아직 검증된 점수가 없습니다.