정말로 유용한 벤치마크
요약
기존 코딩 벤치마크의 한계인 데이터 오염, 높은 비용, 낮은 변별력을 극복하기 위한 새로운 벤치마크 설계 방식을 제안합니다. Jcode bench v1은 수학적 경계를 활용하여 부정행위가 어렵고 연속적인 점수 측정이 가능한 구조를 가집니다.
핵심 포인트
- 기존 벤치마크의 문제점: 데이터 오염, 높은 실행 비용, 이진 결과 방식의 낮은 변별력
- 새로운 벤치마크 지향점: 오염 방지, 연속적 점수 제공, 결정론적이고 철저한 채점
- Jcode bench v1의 특징: 함수 최적화 태스크를 통한 연속적 점수 및 부정행위 방지
- 일반화 능력 측정: 암기가 아닌 실제 구현 능력 향상을 통한 성능 개선 유도
안녕하세요, 저는 YC(Y Combinator)의 지원을 받는 창업자이자 오픈 소스 하네스(harness)를 구축하고 있는 개발자입니다. 저는 Terminal Bench 2.1과 Deep SWE 1.1로 벤치마킹을 진행해 왔으나, 해당 벤치마크들이 얼마나 형편없는지, 그리고 왜 실제 세계의 코딩을 대변하지 못하는지가 너무나 명백하게 드러났습니다.
그래서 저는 '벤치맥싱(benchmaxx, 벤치마크 점수만을 위해 최적화하는 행위)'을 할 수 없는 벤치마크를 만들고 있습니다.
기존 벤치마크들의 문제점 몇 가지를 짚어보자면:
- 실행 비용이 너무나도 비쌈
- 오염되었거나(학습 데이터에 포함됨), 비공개 상태라 실행할 수 없음
- 태스크당 이진 결과(Binary results) 방식 (이는 능력의 격차를 측정하기 어렵게 만듭니다. 태스크가 프런티어(frontier) 모델과 중간 단계 모델 사이의 간극을 메울 수 있어야 하는데, 충분히 세밀하지 않으면 이를 포착하지 못합니다. Terminal Bench의 60개 태스크 중 19개는 매우 쉬울 수 있고, 다른 것들은 불가능할 수 있습니다. 따라서 Fable 5와 Sonnet 5의 차이는 중간 단계에 있는 10개 태스크의 몇 퍼센트 포인트 차이로 측정될 뿐입니다.)
- 쉽게 포화됨 (Saturated) (특정 퍼센트에 도달하면 새로운 벤치마크를 만들어야 하는데, 이는 매우 어렵습니다.)
- 거친 채점 (Coarse grading) (에이전트가 정답은 맞지만, 예상과는 다른 구현 방식을 출력할 수 있습니다.)
- 시간에 대해 과도한 페널티 부여 (실제 세계에서는 에이전트가 한 번에 끝내는 것이 아니라 반복(iterate)하기를 원합니다.)
제가 목표로 하는 벤치마크 사양은 다음과 같습니다:
- 오염시키기 어려움
- 포화시키기 어려움
- 결정론적(Deterministic)이고 철저한 채점
- 연속적인 점수 (Continuous score)
- 부정행위 방지 (Cheat-resistant)
Jcode bench v1은 이 모든 것을 충족합니다. 이들은 최적화될 경우 실제 세계에서 사용될 수 있는 세 가지 매우 일반적인 함수의 최적화 태스크입니다. 모델에게 해당 함수에 대한 참조 솔루션(reference solution)을 제공하고 이를 최적화하도록 요청합니다. 태스크가 세 가지만 있기 때문에 실행 비용이 저렴합니다. 모델이 새로운 구현을 제출할 때마다 가능한 모든 입력값에 대해 점수가 매겨지므로, 태스크에 대한 완벽한 채점이 이루어집니다. 제출 후 개선하는 방식이므로 시간이 지남에 따라 연속적인 점수가 생성됩니다. 이 태스크들은 얼마나 최적화될 수 있는지에 대해 정의되지 않은 수학적 경계(mathematical bound)를 가지고 있습니다. 최적의 솔루션이 알려져 있지 않고, 솔루션이 최적에 가까워질수록 최적화가 더 어려워지기 때문에 포화시키기가 믿기지 않을 정도로 어렵습니다.
학습할 단 하나의 정답 솔루션이 존재하지 않기 때문에 오염(Contamination)될 수 없습니다.
이 접근 방식에는 몇 가지 단점이 있습니다:
다른 모델의 전사 데이터(Transcript)를 기반으로 학습할 경우, 모델 점수의 상대적 순위가 뒤섞일 수 있습니다. 하지만 능력의 경계선(Frontier of capabilities)은 속이는 것이 불가능합니다. 왜냐하면 아직 학습할 수 있는 더 나은 구현체(Implementation)가 존재하지 않기 때문에, 더 나은 성능을 내는 것은 곧 일반화(Generalize)를 통해 해당 작업에 진정으로 더 능숙해지는 것을 의미하기 때문입니다.
몇 가지 잠재적인 해결책:
예시가 포함된 따라하기 쉬운 사양(Spec)이 있기 때문에, 이에 부합하는 매우 다양한 작업들을 생성하기 쉬울 수 있습니다. 새로운 모델이 벤치마크 최적화(Benchmaxing)를 하고 있다고 의심될 때마다, 새로운 작은 작업 세트를 생성하여 여전히 성능이 좋은지 확인하십시오. 그런 방식을 통하면 일반화 없이는 좋은 점수를 얻을 방법이 없습니다.
솔루션을 암기하는 것은 일반적인 반복적 개선(Iterative improvement)과는 다른 점수 곡선을 만듭니다. 방금 경계선 솔루션(Frontier solution)을 학습한 모델의 경우, 성공적인 반복적 개선 없이 단 하나의 출력만이 높은 점수를 기록할 것입니다. 실제 솔루션은 대략 로그(Logarithmic) 형태를 띠는 점수 곡선을 생성합니다.
이러한 점수들에 대해 모든 모델은 동일한 하네스(Harness)에서 실행되므로, 유일한 차이점은 모델뿐입니다.
submitted by /u/Medium_Anxiety_8143 to r/OpenAI
[link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/OpenAI Codex (search)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기