벤치마크 · coding
MBPP+
MBPP+는 코딩 벤치마크 MBPP(Mostly Basic Python Problems)의 테스트를 엄격하게 확장한 버전으로, EvalPlus 프레임워크로 구축되었습니다. 모델이 생성한 Python 함수의 기능적 정확성을 측정하며 pass@1로 보고됩니다.
자세히 보기
- 예시
- 전형적인 문항은 작성해야 할 기본 Python 함수를 자연어로 짧게 설명하고(예: '두 리스트의 공통 요소 찾기'), 기대 동작을 고정하는 몇 개의 예시 assertion을 함께 제시합니다.
- 채점 방식
- 지표는 pass@k이며 보통 pass@1입니다. 생성된 함수가 모든 테스트를 통과할 때에만 해당 과제가 해결된 것으로 간주되고, 점수는 해결된 과제의 백분율입니다. pass@k는 n개의 샘플링된 생성 결과에 대해 표준 비편향 추정량으로 계산됩니다.
- 검증 방식
- 각 후보 함수는 샌드박스에서 전체 테스트 세트에 대해 실행됩니다 — 원래 MBPP의 assertion에 더해 EvalPlus가 자동 생성한 입력(타입 인식 변이와 LLM 시딩으로 MBPP보다 약 35배 많은 테스트)입니다. 제한 시간 내에 모든 테스트를 통과한 경우에만 그 과제로 인정됩니다.
- 왜 중요한가
- 원래 MBPP는 문제당 테스트가 약 3개뿐이어서 미묘하게 잘못된 코드가 거짓 양성으로 통과할 수 있습니다. MBPP+는 평가를 강화하여, 공개되는 통과율과 모델 순위가 약한 테스트가 아니라 실제 정확성을 반영하도록 합니다.
예제 풀이
문제
주어진 두 리스트의 공통 요소를 찾아 중복을 제거하고 정렬한 리스트로 반환하는 함수를 작성하세요. 여러분의 코드는 다음과 같은 테스트를 통과해야 합니다: assert shared_elements([1, 2, 3, 4], [3, 4, 5, 6]) == [3, 4]
해답
```python
def shared_elements(list1, list2):
return sorted(set(list1) & set(list2))
```
풀이
두 리스트를 집합으로 교집합한 뒤 정렬하면 순서대로 고유한 공통 값이 나오며 assertion을 만족합니다. MBPP+는 추가 입력(빈 리스트, 중복, 더 큰 경우)도 많이 실행하며, pass@1 채점에서는 그 모두를 통과해야만 정답으로 계산됩니다.
이 벤치마크에 대해 아직 검증된 점수가 없습니다.