LiveCodeBench: LLM 코드 능력의 포괄적이고 오염 없는 평가

Digest: HumanEval과 MBPP는 공개된 지 오래되어 LLM 학습 데이터에 포함(데이터 오염, data contamination)되었을 가능성이 높다. UC Berkeley 연구팀은 LeetCode, AtCoder, CodeForces에서 지속적으로 새 문제를 수집하여 오염을 원천 차단하는 LiveCodeBench를 제안했다. 핵심 통찰은 벤치마크가 정적이면 시간이 지날수록 평가 신뢰도가 하락한다는 것이다. 코드 생성뿐 아니라 self-repair, 코드 실행 예측, 테스트 출력 예측 등 4가지 시나리오를 포괄한다. 2023년 5월~2024년 5월 사이 400+개 문제를 수집했으며, GPT-4o가 pass@1 43.4% (Table 2)를 기록한 반면 HumanEval에서는 90%+로, 기존 벤치마크의 과적합(overfitting) 문제를 실증적으로 보여주었다.


메타데이터

항목내용
제목LiveCodeBench: Holistic and Contamination Free Evaluation of Large Language Models for Code
저자Naman Jain, King Han, Alex Gu, Wen-Ding Li, Fanjia Yan, Tianjun Zhang, Sida Wang, Armando Solar-Lezama, Koushik Sen, Ion Stoica
소속UC Berkeley, MIT
연도2024
발표ICLR 2025, arXiv:2403.07974
링크arXiv, GitHub
키워드LiveCodeBench, contamination-free, competitive programming, holistic evaluation

데이터셋 구성

규모 및 분할

항목내용
전체 크기400+ 문제 (지속 증가)
소스 플랫폼LeetCode, AtCoder, CodeForces
수집 기간2023년 5월 ~ 현재 (rolling)
언어Python (주), C++, Java 등
업데이트 주기매월 새 문제 추가

4가지 평가 시나리오

시나리오설명메트릭
Code Generation문제 설명 → 코드 생성pass@1, pass@5
Self-Repair실패한 코드 + 에러 → 수정repair rate
Code Execution코드 + 입력 → 출력 예측exact match
Test Output Prediction코드 → 테스트 출력 예측exact match

Feature/Column 구조

필드설명예시
question_id고유 문제 IDleetcode_2873
platform출처 플랫폼leetcode
question_title문제 제목"Maximum Sum of Subsequence With Constraint"
question_content문제 설명 (HTML/Markdown)전체 문제문
difficulty난이도easy / medium / hard
contest_date대회 날짜2024-03-15
public_test_cases공개 테스트입출력 쌍
private_test_cases비공개 테스트추가 테스트

난이도 분포

난이도비율설명
Easy~25%기본 알고리즘, 단순 구현
Medium~50%중급 알고리즘, DP, 그래프 등
Hard~25%고급 알고리즘, 복잡한 최적화

실제 데이터 예시

예시 1: Easy (LeetCode)

# Problem: Maximum Element After Decreasing and Rearranging
# Given an array of positive integers, return the maximum
# possible value of an element after operations.

Input: arr = [2, 2, 1, 2, 1]
Output: 2
Explanation: Sort → [1,1,2,2,2], adjust → [1,2,2,2,2], max = 2

# Solution:
def maximumElementAfterDecrementingAndRearranging(arr):
    arr.sort()
    arr[0] = 1
    for i in range(1, len(arr)):
        if arr[i] - arr[i-1] > 1:
            arr[i] = arr[i-1] + 1
    return arr[-1]

예시 2: Medium (CodeForces)

# Problem: Count pairs (i,j) where a[i] + a[j] is divisible by k
Input: n=4, k=3, a=[1, 2, 3, 4]
Output: 2
Explanation: (1,2)→3, (2,4)→6 are divisible by 3

# Solution involves modular arithmetic and counting

예시 3: Hard (AtCoder)

# Problem: Find minimum cost to connect all nodes in a
# weighted graph with specific constraints on edge selection.
# Requires advanced graph algorithms (MST variants).

왜 이 연구를 하는가?

핵심 질문

정적 벤치마크의 데이터 오염 문제를 해결하면서, 코드 생성 이상의 포괄적 코딩 능력을 어떻게 평가할 수 있는가?

기존 접근법의 한계

한계설명
데이터 오염HumanEval/MBPP가 학습 데이터에 유출되어 점수가 과대 추정됨
단일 시나리오기존 벤치마크는 코드 생성만 평가, 디버깅/실행 이해 미포함
정적 데이터셋한 번 공개되면 업데이트 없어 시간이 지날수록 의미 감소

핵심 통찰

벤치마크를 살아있는(live) 시스템으로 설계하여, 프로그래밍 대회에서 지속적으로 새 문제를 수집하면 오염 문제를 근본적으로 해결할 수 있다.


방법 (Method)

프레임워크 개요

graph TB
    A["프로그래밍 대회 플랫폼<br/>(LeetCode, AtCoder, CodeForces)"] --> B["새 문제 자동 수집<br/>(매월 rolling)"]
    B --> C["표준화 및 정제<br/>(format, test cases)"]
    C --> D["LiveCodeBench<br/>4개 시나리오"]

    D --> E["Code Generation"]
    D --> F["Self-Repair"]
    D --> G["Code Execution"]
    D --> H["Test Output Prediction"]

    I["시간별 필터링<br/>(cutoff date)"] --> J["모델별 오염 분석"]

발견 (Findings)

주요 결과 (Code Generation, pass@1)

모델LiveCodeBenchHumanEval차이
GPT-4o43.4%90.2%-46.8%p
Claude 3.5 Sonnet41.4%92.0%-50.6%p
GPT-4-Turbo36.1%87.8%-51.7%p
DeepSeek-Coder-33B18.9%79.3%-60.4%p

(Table 2)

핵심 발견

  1. 오염의 증거: 모든 모델에서 HumanEval 대비 LiveCodeBench 성능이 40-60%p 낮음 (Table 2)
  2. 시간별 성능 저하: 더 최근 문제일수록 성능이 낮아짐 — 오염의 직접적 증거 (Figure 3)
  3. Self-repair 능력: GPT-4는 실패 코드의 ~25%를 자체 수정 가능, 작은 모델은 5% 미만 (Table 4)
  4. 코드 실행 이해: LLM이 코드를 “이해”한다면 실행 결과를 예측할 수 있어야 하나, 정확도는 50% 수준

이론적 의의

동적 벤치마크 패러다임

LiveCodeBench는 정적 벤치마크의 근본적 한계를 지적하고, “살아있는 벤치마크”라는 새로운 패러다임을 제시했다. 이후 LiveBench(일반), LiveMathBench(수학) 등 유사한 동적 벤치마크들이 등장했다.


관련 연구


핵심 용어 정리

용어정의
Data Contamination벤치마크 데이터가 모델의 학습 데이터에 포함되어 평가가 과대추정되는 문제
LiveCodeBench프로그래밍 대회에서 지속 수집하여 오염을 방지하는 동적 코드 벤치마크
Self-Repair모델이 자신이 생성한 실패 코드를 에러 메시지 기반으로 수정하는 능력
Rolling Benchmark시간에 따라 지속적으로 새 데이터가 추가되는 벤치마크 방식
Cutoff Date모델 학습 데이터의 마지막 날짜, 이후 문제는 오염 가능성 없음

태그

paper #2024 benchmark code_generation LiveCodeBench contamination_free competitive_programming