출판 가능한 에이전트 점수를 위한 계층화된 트라이얼 예산
요약
본 글은 AI 에이전트의 성능을 평가하는 방법론에 대한 연구 논문입니다. 단순히 단일 실행 결과나 평균 점수만으로는 모델의 진정한 능력을 측정할 수 없다고 주장합니다. 대신, 난이도 계층화와 쌍별 비교(paired difference)를 통해 보다 신뢰성 높은 에이전트 점수를 산출하는 방법을 제시합니다.
핵심 포인트
- 단일 실행 결과나 평균값은 모델 성능을 과대평가할 위험이 있습니다.
- 난이도 계층화된 작업 묶음과 쌍별 비교가 필수적입니다.
- 제시된 방법론은 통계적으로 엄격하며, '컨트롤 암' 같은 부정적 검증을 포함합니다.
- 결과 보고 시에는 계층 내 쌍별 차이를 우선해야 합니다.
에이전트 점수는 트라이얼 예산(trial budget), 난이도 계층(difficulty strata), 그리고 제외 규칙(exclusion rules)이 고정된 후에야 증거가 됩니다. 단일하고 깨끗한 기록(transcript)은 여전히 수정을 안내할 수 있지만, 하나의 운 좋은 경로는 오류를 추정하지 못합니다. 아래 방법론은 헤드라인 백분율을 브로셔의 주장으로 보는 것이 아니라 쌍을 이루는 트라이얼의 요약으로 취급합니다. 검토자는 어떤 모델 이름이 논의에 등장하기 전에 작은 Python 하네스(harness)로 회계 처리를 재현할 수 있습니다.
깨끗한 실행은 시간표가 아니다
깨끗한 로컬 실행은 종종 결정적으로 보입니다. 특히 보이는 모든 검사가 첫날 오후에 우연히 통과될 때 더욱 그렇습니다. 그 결과는 다음 편집을 안내할 수는 있지만, 고정된 규칙 하에서 동일한 항목들이 반복되지 않는 한 날씨 보고서에 불과합니다. 교통 기관은 햇살 좋은 출퇴근길 하나만으로 시간표를 발표하지 않으며, 실험실도 하나의 잘 다듬어진 실행만으로 순위를 발표해서는 안 됩니다. 이 비유는 의도적입니다. 왜냐하면 분산(variance), 경로 난이도(route difficulty), 그리고 취소된 여행 모두가 출판되는 기록에 속하기 때문입니다.
패키지가 고정해야 할 것들
데이터셋은 어떤 후보 모델이 실행되도록 허용되기 전에 난이도 계층으로 분할된 고정된 작업 묶음(task pack)입니다. 각 계층은 단일 파일 수정, 다중 파일 리팩토링, 또는 실패하는 통합 테스트와 같이 유사한 예상 노력을 가진 작업을 포함합니다. 항목들은 안정적인 식별자(stable identifiers)를 가지며, 이 묶음은 프롬프트 경로 옆에 계층 레이블을 기록하고 오라클 명령어(oracle command)를 기록합니다. 나중에 차트는 계층을 생략할 수 있지만, 스코어러가 항목을 더 쉬운 빈으로 조용히 옮길 수는 없습니다.
계층이 없으면 짧은 수정에서 뛰어난 모델이 더 어려운 수정을 살아남는 모델보다 높은 점수를 얻을 수 있으며, 평균값은 이 교체를 숨깁니다. 홍보 문구는 그 평균값을 선호하는데, 왜냐하면 단일 백분율이 불균형한 승리의 표보다 더 멀리 전달되기 때문입니다. 따라서 방법론은 계층 내 쌍별 차이(within-stratum paired difference)를 보고하고, 그 후에만 계층 전반의 미리 선언된 요약(predeclared summary across strata)을 보고합니다. 만약 요약과 계층이 불일치하면, 계층이 결과를 유지하고 요약은 각주가 됩니다.
슬로건을 거부하는 지표들
주요 지표는 다른 샘플에서 계산된 비쌍별 정확도가 아니라 동일한 항목에 대한 쌍별 결과입니다. 각 트라이얼은 오라클(oracle) 대비 통과 또는 실패 여부, 경과 시간(wall time), 그리고 로그로 기록된 이유로 하네스(harness)가 중단되었는지 여부를 기록합니다. 보조 지표는 스트라툼 승률(stratum win rate)이며, 이는 후보 모델이 컨트롤(control)을 이긴 항목의 비율로 정의됩니다. 두 지표 모두 품질 슬로건(quality slogan)은 아니기 때문입니다. 왜냐하면 둘 다 로그가 이미 수용한 모든 제외 사항(exclusion)을 상속받기 때문입니다.
컨트롤은 실행 결과가 유리해 보인 후에도 점수가 광고 문구처럼 표류하는 것을 막기 위해 존재합니다. 컨트롤 암(control arm)은 후보 모델 암(candidate arm)과 동일한 하네스, 동일한 오라클, 그리고 동일한 재시도 상한선(retry ceiling)을 사용합니다. 불가능한 오라클을 가진 위약 항목(placebo item)은 실패해야 하며, 그렇지 않으면 스코어러는 전체 배치(batch)를 신뢰할 수 없다고 간주합니다. 이 부정적 컨트롤(negative control)이 화재 경보기이며, 방법론 노트가 재미있는 독자를 위한 선택적 부록이 아닙니다.
트라이얼 예산은 점수가 나타나기 전에 선택되며, 각 항목이 받는 독립적인 반복 횟수를 명시합니다. 두 번의 반복으로는 변동(flip)을 드러낼 수 있지만, 작은 격차가 공공 순위(public rank)를 받을 만하다고 판단되기 위해서는 더 큰 예산이 필요합니다. 이 초안은 보편적인 샘플 크기를 규정하지 않는데, 이는 태스크 분산(task variance)이 리포지토리와 오라클마다 다르기 때문입니다. 다만 선택된 예산은 매니페스트(manifest)에 기록되어야 하므로, 실망스러운 반복을 조용히 삭제할 수 없습니다.
제외 사항은 정직한 연구실과 홍보성 글이 실제 관행에서 보통 분리되는 지점입니다. 사전 등록 규칙(pre-registered rule)은 누락된 장치(fixture), 유출된 솔루션, 또는 더 이상 빌드되지 않는 오라클 때문에 항목을 제외할 수 있습니다. 후보 모델이 실패했다는 이유로 항목을 제외하는 사후적 규칙(post-hoc rule)은 제외 사항이 아니며, 하네스는 이를 거부해야 합니다. 로그는 규칙 식별자(rule identifier), 항목 식별자(item identifier), 그리고 타임스탬프를 저장하여 검토자가 결정을 재현할 수 있도록 합니다.
동결을 강제하는 하네스(A harness that enforces the freeze)
다음 Python 모듈은 제안된 하네스(harness)이며, 실제 스코어링 서비스에 대해 실행된 적이 없습니다. 이 모듈은 매니페스트를 해시하고, 쌍을 이루는 결과값(paired outcomes)을 확인하며, 사전 등록된 규칙이 없는 모든 제외 항목(exclusion)을 거부합니다. 운영자는 이 스크립트를 시작 장부(starting ledger)로 간주하고, '장난감 필드(toy fields)'를 자신들의 오라클 기록으로 대체해야 합니다. 핵심은 회계 처리이며, 특정 모델이 이미 이러한 검사를 통과했다는 주장이 아닙니다.
#!/usr/bin/env python3
"""
제안된 트라이얼 예산 하네스.
...
"""
리뷰어는 첫 번째 후보 프로세스가 시작하도록 허용하기 전에 체크섬(checksum)으로 팩을 동결할 수 있습니다. 아래 명령어들은 로컬 체크아웃, Python 3 인터프리터, 그리고 '장난감 오라클' 내부의 네트워크 호출이 없다는 것을 가정합니다. 이들은 제어 경로를 보여줄 뿐이며, 호스팅된 제품을 측정하거나 하드웨어 사양을 암시하지 않습니다. 명령어가 실패하면, 그 실패는 수정된 평균값 속으로 사라지기보다는 로그에 남아 있게 됩니다.
python3 trial_budget.py self-check
python3 -c "import hashlib, pathlib; print(hashlib.sha256(pathlib.Path('task_pack.json').read_bytes()).hexdigest())"
python3 trial_budget.py task_pack.json outcomes.json
샘플 매니페스트는 두 개의 스트라툼(two-stratum) 팩, 트라이얼 예산 2개, 그리고 하네스가 인식하는 세 가지 제외 규칙을 동결합니다. 샘플 결과 파일은 동일한 매니페스트 해시를 포함해야 하며, 그렇지 않으면 스크립트는 테이블을 출력하기 전에 종료됩니다. 후보 팔(candidate arm)에서 통과되는 가짜 항목(placebo item)은 배치(batch)를 중단시키는데, 이는 고장 난 스코어러의 의도된 실패입니다. 이 파일들은 방법론을 위한 고정값(fixtures)이며, 호스팅된 코딩 에이전트의 어떤 측정값이 아닙니다.
{
"pack_id": "strata-demo-001",
"trial_budget": 2,
...
{
"manifest_sha256": "<task_pack.json의 sha256 붙여넣기>",
"exclusions": [],
...
## 호스팅 옵션이 들어가는 곳
공개 고지: 이 문서는 MonkeyCode의 제품 홍보(product outreach)의 일환으로 작성되었습니다.
MonkeyCode의 무료 모델 접근 및 무료 서버 옵션은 후보 런타임으로만 중요하며, 원장(ledger)은 로컬로 유지됩니다. 해당 가용성은 운영자(operator)가 제공하는 편의일 뿐이며, 이 초안은 할당량, 하드웨어, 기간 또는 모델 이름을 검증하지 않습니다. 팀은 무료 용량을 품질 점수로 취급하지 않으면서 실제로 확인한 한계를 실행 노트에 복사할 수 있습니다.
## 백분율이 마케팅이 아닌 이유
청중이 패키지, 예산, 제외 항목 또는 음성 대조군(negative control)을 볼 수 없을 때 백분율은 마케팅이 됩니다. 동일한 백분율이 이 네 가지 아티팩트와 함께 제시되고 검토자가 이를 재계산할 수 있을 때 실험실 결과가 됩니다. 요약 옆에 계층 구조를 게시하는 것은 하드 항목에서의 손실을 숨기는 일반적인 슬라이드를 차단합니다. 이해관계자가 가장 큰 숫자만 원한다면, 작성 내용은 주장을 부풀리기보다는 순위(rank)를 보류해야 합니다.
## 한계점과 누가 물러나야 하는가
이 접근 방식은 패키지 작성자가 포함하는 것을 기억한 카나리아 항목을 넘어서는 훈련 세트 오염(training-set contamination)을 감지하지 못합니다. 또한 실행에 가격을 매기지는 않으며, 더 저렴한 실패가 주어진 팀에게 여전히 더 나은 엔지니어링 선택일 수 있습니다. 무료 러너와 유료 러너가 대기열 처리에서 차이가 날 때 시계 시간(wall-clock) 비교는 여전히 취약합니다. 작은 계층 구조는 크게 변동할 것이므로, 두 항목으로 구성된 빈(bin)은 비율로 보고하기보다는 사례 시리즈(case series)로 보고해야 합니다.
이번 주 이후 출시를 위해 공급업체 순위가 필요한 팀은 이 하네스(harness)를 장식용으로 사용해서는 안 됩니다. 또한 오라클 자체에 논란이 생기는 경우에도 방법론이 적합하지 않은데, 공유된 잘못된 테스트가 잘못된 패치를 왕관처럼 만들 수 있기 때문입니다. 태스크 패키지를 고정할 수 없거나 점수를 본 후에 프롬프트를 조정해야 하는 연구자들은 즉시 제외 규칙을 위반하게 됩니다. 그러한 환경에서 정직한 결과물은 벤치마크 테이블이 아니라 날짜가 포함된 데모 스크립트입니다.
실질적인 다음 단계는 작은 묶음(pack)을 해시하고, 위약 항목(placebo item)을 실행한 후, 잘못된 제외가 거부되는지 확인하는 것입니다. 이러한 점검이 끝난 후에만 후보군 팔(candidate arm)이 로컬 프로세스 또는 호스팅 무료 옵션 중 하나를 사용해야 합니다. 그 결과로 나오는 표는 리더보드보다 더 조용해 보일 것이며, 이는 검토를 통과할 수 있는 숫자를 얻기 위한 의도된 트레이드오프입니다. 조용한 증거(Quiet evidence)는 데모 스크립트가 이미 화면에서 사라진 후에도 나중에 읽는 사람이 여전히 신뢰할 수 있는 결과물입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기