본문으로 건너뛰기
29/3030개 중 29장

LLM 평가: 공개 벤치마크에서 나만의 골든 세트까지

같은 agent, 같은 작업, 10회 실행. 7번 성공은 70%처럼 보이지만 pass^10을 계산하면 정확히 0이 됩니다.

이 페이지에서

다음은 시연입니다. Chapter 23의 agent — 같은 루프, 네 개 tool 중 두 개 — 에게 다섯 개의 로그 및 설정 파일이 있는 디렉터리를 가리키고 한 가지 질문을 던집니다.

TEXT
Q: What is the last line of errors.log about?
   turn 1  -> read_file({"path": "errors.log"})
   turn 2  -> "The last line of errors.log is:

               ERROR worker 7 timed out after 30000 ms."

맞습니다. 그리고 이것은 아무것도 입증하지 않습니다. 왜냐하면 이 transcript는 제가 실행한 열 개 중 하나이고, 저는 열 개를 모두 본 뒤 이것을 골랐기 때문입니다.

샘플링 seed만 바꾸고 동일한 작업을 열 번 실행하면, agent는 일곱 번 맞힙니다. 70퍼센트, 슬라이드에 올라갈 숫자입니다. 이제 고객이 실제로 궁금해하는 질문을 해봅시다 — 매번 작동할까? — 그러면 답은 완전히 다른 숫자가 됩니다.

TEXT
t20  7/10 successes = 70 %   (95 % Wilson interval: 39.7 % to 89.2 %)
     pass^1  70.00 %      pass^5   8.33 %
     pass^2  46.67 %      pass^7   0.83 %
     pass^3  29.17 %      pass^8   0.00 %
     pass^4  16.67 %      pass^10  0.00 %

이 agent는 이 작업을 열 번 연속으로 해결한 적이 없고, 이 증거만으로는 그렇게 할 것으로 기대되지도 않습니다. 그 숫자 — pass^10 — 가 정직한 숫자입니다. 거의 공개되지 않지만, 이 장이 끝날 때쯤이면 그것을 계산하는 법, 계산 비용, 그리고 70% 옆의 구간이 70% 자체보다 더 중요한 이유를 알게 될 것입니다.

세부 정보 보기

이 장이 앞선 장들에서 필요로 하는 것.

  • Chapter 4 통계를 위해: 비율에 대한 Wilson 구간, 스무 개 중 열일곱 개를 맞히는 것이 아무것도 구별하지 못하는 이유, 그리고 첫 번째 요구사항으로서의 어리석은 baseline.
  • Chapter 15 bench를 위해: 50줄 harness, 두 시스템이 서로 다른 답을 낸 case들에 대한 paired sign test, 그리고 prompt는 토론되는 것이 아니라 측정된다는 규칙.
  • Chapter 23 측정 대상 자체를 위해: 루프, 다섯 가지 탈출구, 비용 accounting, 그리고 harness가 agent를 통제 가능하게 만들지만 올바르게 만들지는 않는다는 마지막 관찰.

여기에는 두 개의 패널이 있습니다. 당신 자신의 평가에는 TypeScript를 씁니다. 이 평가는 코드 옆 continuous integration에 있어야 하기 때문입니다. 두 번째 패널에는 Python을 씁니다. 공개 benchmark는 그곳에 있고, 아래의 측정 중 하나에는 logits가 필요하기 때문입니다.

평가에 관한 거의 모든 논쟁은 서로 다른 것을 측정하는 두 사람의 대화입니다. 세 가지 프로젝트가 있고, 이들은 같은 도구를 공유하지 않습니다.

평가하는 대상질문도구소유자
model이 model이 저 model보다 전반적으로 더 나은가?공개 benchmark, leaderboard커뮤니티
당신의 애플리케이션내 prompt, 내 retrieval, 내 schema가 내 입력에서 작동하는가?당신의 golden set당신
당신의 agenttool과 side effect를 포함한 전체 루프가 목표에 안정적으로 도달하는가?작업 성공률 + pass^k당신

혼동은 한 방향으로 비쌉니다. leaderboard는 어떤 model이 대학원 수준 reasoning에 강하다고 말해줄 수는 있지만, 그 model이 당신의 지원 티켓을 routing할지는 말해줄 수 없습니다. 그리고 입력당 하나의 답을 채점하는 애플리케이션 평가는 agent를 전혀 볼 수 없습니다. agent에는 trajectory의 분포가 있고, 하나의 답은 그 분포에서 나온 단일 sample이기 때문입니다. Chapter 22는 그 세 번째 행에 이름을 붙이고 비워두었습니다. 성능 척도, 즉 agent specification에서 팀들이 가장 마지막에 쓰거나 아예 쓰지 않는 그 부분입니다.

순서도 중요하며, model을 파는 vendor도 그렇게 말합니다. OpenAI의 agent guide는 model 선택을 다음 세 단계로, 이 순서대로 줄입니다. "Set up evals to establish a performance baseline", "Focus on meeting your accuracy target with the best models available", "Optimize for cost and latency by replacing larger models with smaller ones where possible".1 평가는 먼저 옵니다. 숫자가 없으면 두 번째와 세 번째 단계는 의미가 없기 때문입니다.

golden set, 그리고 스무 개 case가 실제로 사주는 것

섹션 링크: golden set, 그리고 스무 개 case가 실제로 사주는 것

golden set은 입력 목록이며, 각 입력에는 정답이 적혀 있고, 출력이 맞는지 판단하는 grader가 붙어 있습니다. 지루하고, 작고, 이 장에서 당신의 것이라고 부를 수 있는 유일한 artefact입니다. 여기서 만든 것은 다섯 개 파일이 있는 디렉터리에 대한 스무 개 작업으로 구성됩니다 — Chapter 23의 세 개가 아니므로 답도 같은 답이 아닙니다 — 그리고 grader는 agent가 실행되기 전에 작성됩니다.

golden.tsTS
export type Task = {
  id: string;
  prompt: string;
  answer: string;          // the fact, in words, for a human and for a judge
  must: RegExp[];          // ALL must match the final answer
  mustNot?: RegExp[];      // NONE may match
};

export const GOLDEN: Task[] = [
  { id: "t04", prompt: "Which file is the largest?", answer: "access.log",
    must: [/access\.log/i], mustNot: [/errors\.log/i, /notes\.txt/i] },       
  { id: "t12", prompt: "Which HTTP status codes appear in access.log? List all of them.",
    answer: "200, 429 and 500", must: [/200/, /429/, /500/] },                
  // ...eighteen more
];

두 속성이 하중을 지탱합니다. mustNot 목록이 존재하는 이유는 올바른 파일을 포함해 세 개의 파일 이름을 대는 model이 답한 것이 아니기 때문입니다. 그리고 answer는 pattern뿐 아니라 prose로도 작성됩니다. 나중에 인간과 judge가 둘 다 필요로 하기 때문입니다 — 그리고 같은 사실을 두 표기법으로 두 번 쓰는 것이, 애초에 그 작업이 무엇이었는지 스스로와 합의하지 못했다는 사실을 발견하는 방법입니다.

이제 결정하는 표입니다. 네 후보 시스템, 같은 스무 개 작업, 구간이 붙은 정확도, 그리고 정확도 표만으로는 항상 숨겨지는 두 열입니다.

systemcorrectaccuracy, 95 % Wilsoncost per solved taskmean latency
A — tool 없음, greedy2/2010.0 % [2.8, 30.1]$0.004649663 ms
B — tool 있음, terse prompt5/2025.0 % [11.2, 46.9]$0.0055761,362 ms
C — tool 있음, guided prompt2/2010.0 % [2.8, 30.1]$0.013071930 ms
D — C, T = 0.7에서 best of 31/205.0 % [0.9, 23.6]$0.0735322,628 ms

승자를 보기 전에 구간을 읽으세요. arm B의 실행은 11%에서 47%까지 뻗고, arm A는 3%에서 30%까지 뻗습니다. 둘은 길이 대부분에서 겹칩니다. Chapter 4의 발견이 정확히 약속된 곳에 도착한 것입니다. 스무 개 case로는 네 시스템의 순위를 매길 수 없습니다. Chapter 15는 대신 paired 질문을 던져 이것을 더 날카롭게 만들었습니다 — 두 arm이 disagree하는 case들에서 split이 얼마나 한쪽으로 치우쳤는가? — set의 공통 난도가 상쇄되기 때문입니다. 모든 pair는 다음과 같습니다.

TEXT
A vs B  +0 / -3   p = 0.2500       B vs C  +4 / -1   p = 0.3750
A vs C  +2 / -2   p = 1.0000       B vs D  +4 / -0   p = 0.1250
A vs D  +2 / -1   p = 1.0000       C vs D  +1 / -0   p = 1.0000

여섯 비교 중 하나도 확립되지 않았습니다. 최고의 arm은 tool이 전혀 없는 arm보다 15포인트 앞서지만, 그것이 기대고 있는 것은 discordant case 세 개뿐입니다. 스무 개 case는 mechanism을 보여줄 수는 있지만 supplier를 선택할 수는 없습니다. 회의에서 다르게 말하는 것이 나쁜 model을 사게 되는 방식입니다.

이 표가 확립하는 것이 하나 있긴 합니다. 아무도 넣지 않는 열입니다. arm D는 해결된 작업당 arm B보다 13배 비쌉니다. trajectory 세 개를 sampling하고 modal answer를 고르는 것은 정확도를 세 배로 만들든 아니든 청구서를 세 배로 만들기 때문입니다. 비용을 생략한 정확도 표는 이 trade-off를 보이지 않게 만듭니다.

metric이 숫자를 결정한다

섹션 링크: metric이 숫자를 결정한다

이제 앞으로 보게 될 모든 benchmark를 읽는 방식을 바꾸는 발견입니다. 같은 200개 transcript — 스무 개 작업, 열 번 실행, token 하나도 재생성하지 않음 — 를 세 가지 방식으로 채점해 봅니다.

gradercorrectaccuracy, 95 % Wilson
적어둔 답과 exact match0/2000.0 % [0.0, 1.9]
적어둔 답이 substring으로 나타남26/20013.0 % [9.0, 18.4]
위 keyword rubric52/20026.0 % [20.4, 32.5]

0, 13, 26. 시스템은 바뀌지 않았습니다. grader가 바뀌었습니다. exact match가 0을 반환하는 것은 agent가 쓸모없어서가 아니라, 자유 텍스트 답변이 reference와 byte 단위로 동일한 경우가 없기 때문입니다. 그것은 formatting을 측정하고 capability로 보고합니다.

이것은 호기심거리가 아니라 mechanism이며, 이름도 있습니다. hard-cutoff metric은 여러 sub-fact에 걸쳐 작업을 전부 아니면 전무로 채점하므로 복리처럼 누적됩니다. 작업 t12은 세 status code를 한 번에 묻습니다. 열 번 실행하면 다음과 같습니다.

TEXT
per-code presence   200: 9/10    429: 6/10    500: 8/10    (mean 0.77 per fact)
all three at once   5/10

각 fact는 약 4분의 3 정도 맞습니다. 세 개를 한 번에 모두 요구하면 score가 절반이 되고, 0.773=0.4570.77^3 = 0.457은 측정된 0.50에 충분히 가까워 하락이 어디서 왔는지 보여줍니다. 일반화하면 다음과 같습니다.

per-fact accuracy ppk=1k=1k=2k=2k=3k=3k=5k=5k=10k=10
0.6060.0 %36.0 %21.6 %7.8 %0.6 %
0.8080.0 %64.0 %51.2 %32.8 %10.7 %
0.9090.0 %81.0 %72.9 %59.0 %34.9 %
0.9595.0 %90.3 %85.7 %77.4 %59.9 %

k=10k = 10에서 0.90 행과 0.95 행을 비교해 읽어보세요. per-fact 5포인트 향상이 conjunction에서는 25포인트가 됩니다. model에 불연속적인 일이 일어난 것은 아닙니다. 전부 아니면 전무 metric을 통해 읽은 매끄러운 곡선이 jump처럼 보이는 것입니다 — 이것이 바로 Schaeffer, Miranda, Koyejo가 emergent ability에 대해 제기한 주장이고, Chapter 10이 여기로 미뤄둔 내용입니다.2 그들의 audit은 BIG-Bench가 선호한 39개 metric 중 최대 5개만이 emergence를 보이며, 두 개의 불연속 metric이 주장된 case의 92% 이상을 설명한다는 것을 발견했습니다.

따라서 규율은 한 줄입니다. 차트의 jump는 달리 입증되기 전까지 metric에 대한 증거입니다. capability가 나타났다고 믿기 전에, 같은 실행을 partial credit을 주는 metric으로 plot하고 cliff가 살아남는지 보세요.

여기에는 Kalai와 동료들이 upstream에 해를 끼치고 있다고 주장하는 2차 버전도 있습니다. 맞음/틀림으로 채점되는 benchmark는 "모르겠습니다"라고 말하는 것보다 추측을 보상하므로, 이에 맞춰 최적화된 model은 추측하는 법을 배웁니다. 그들이 제안한 해결책은 또 다른 hallucination benchmark가 아니라 "leaderboard를 지배하지만 misaligned된 기존 benchmark의 scoring을 수정하는 것"입니다.3 당신의 golden set에도 같은 lever가 있고, 한 줄이면 됩니다. abstention을 실패로 셀지, 별도 category로 셀지 결정하세요. 대부분의 사람은 결정하지 않기 때문에, 그것은 조용히 실패로 계산되고, 그들이 ship하는 시스템은 추측합니다.

pass^k, 그리고 아무도 공개하지 않는 variance

섹션 링크: pass^k, 그리고 아무도 공개하지 않는 variance

지금까지는 작업당 한 번의 시도만 채점했습니다. agent는 한 번의 시도가 아닙니다. Chapter 17은 temperature zero에서도 determinism이 없다는 점을 확립했습니다. 따라서 같은 입력은 trajectory의 분포를 만들고, 각 작업을 한 번만 실행하는 benchmark는 그 분포에서 나온 sample 하나를 보고합니다.

τ-bench의 기여는 이를 위한 metric입니다. 논문은 명확히 정의합니다. "we propose a new metric – pass^k (pass hat k), defined as the chance that all k i.i.d. task trials are successful, averaged across tasks."4 각 작업을 nn번 실행하고, cc개의 성공을 세면, unbiased estimator는 다음과 같습니다.

passk=Etask ⁣[(ck)(nk)]pass@k=1Etask ⁣[(nck)(nk)]\text{pass}^k = \mathbb{E}_{\text{task}}\!\left[\frac{\binom{c}{k}}{\binom{n}{k}}\right] \qquad \text{pass@}k = 1 - \mathbb{E}_{\text{task}}\!\left[\frac{\binom{n-c}{k}}{\binom{n}{k}}\right]

두 번째는 code generation에서 익숙한 pass@k입니다. kk번의 시도 중 최소 하나가 성공할 확률입니다. 같은 측정 count를 나란히 놓으면 둘은 반대 방향으로 움직입니다.

kkpass@k — 최소 하나pass^k — 전부
126.0 %26.0 %
237.0 %15.0 %
343.5 %10.5 %
551.2 %6.7 %
857.7 %5.1 %
1060.0 %5.0 %

같은 실행, 같은 grader, 같은 스무 개 작업입니다. 한 열은 시도가 늘수록 시스템이 좋아진다고 말하고, 다른 열은 나빠진다고 말합니다. 둘 다 맞습니다. 서로 다른 질문에 답하기 때문입니다. pass@k은 인간이 출력을 걸러볼 때 — code generation, draft, brainstorming — 그리고 추가 시도가 저렴할 때 올바른 metric입니다. pass^k은 agent가 filter 없이 행동할 때 올바른 metric이며, 그것이 "agent"가 의미하는 바입니다. 두 번째가 적용되는 곳에 첫 번째를 공개하는 것은 이 분야에서 가장 흔한 과장입니다. τ-bench 자체의 headline은 정직한 버전입니다. retail에서 gpt-4o는 대략 61% pass^1이지만 pass^8에서는 약 25%로 떨어집니다.4

이제 제 숫자 안의 따끔한 지점입니다. 제 스무 개 작업에서 pass^10는 5.0%입니다. 열 번 실행 모두에서 해결된 작업이 스무 개 중 정확히 하나라는 뜻입니다. 그 작업은 t19, *"Did deploy 42 succeed?"*이고, rubric이 correct로 채점한 열 개 답변 중 두 개는 다음과 같습니다.

TEXT
run 2  "To check if 'deploy.log' succeeded in deploying 42, I will list the file
        names in the working directory using the list_files function..."
run 8  "Yes, deploy 42 has successfully deployed. Deploying was successful for 41
        as well."

첫 번째는 답하지 않습니다. 두 번째는 거짓인 주장을 덧붙입니다 — deploy 41은 rollback되었습니다. 둘 다 /succe|yes/와 match했습니다. pass^10을 0 위에 붙들고 있는 유일한 작업은 grader artefact입니다. 따라서 진짜 수치는 0이고, 어떤 aggregate도 그것을 보여주지 않았을 것입니다. 가장 높은 점수를 받은 작업 뒤의 transcript를 sampling하는 곳이 grader가 죽으러 가는 곳입니다.

그리고 하나 더, 이 section의 이름이 된 숫자입니다. 동일한 평가 열 번 — 같은 시스템, 같은 스무 개 작업, 같은 코드, seed만 변경:

TEXT
per-run correct: 5 2 5 5 8 5 8 5 4 5   ->  10 % .. 40 %,  mean 26.0 %,  sd 8.8 points

변하지 않은 시스템에서 30포인트 범위가 나옵니다. release 전 suite를 한 번, 후에 한 번 실행했다면, 8포인트 "개선"은 그 spread 안에 있고, 당신은 그것을 자신이 일으켰다고 믿으며 ship할 것입니다. 이것이 위의 pooled interval — 26.0 % [20.4, 32.5] — 을 단독으로 quote하기에 너무 좁은 이유입니다. 그것은 200개의 correlated trial을 200개의 independent trial처럼 취급합니다. agent 평가의 정직한 요약은 평균 그리고 반복 간 spread이며, 두 번째를 공개하는 사람은 거의 없습니다.

judge, 그리고 judge 자신의 golden set

섹션 링크: judge, 그리고 judge 자신의 golden set

Rubric은 open-ended answer로 scale하지 않으므로, 표준적인 움직임은 model이 출력을 채점하게 하는 것입니다. frontier scale에서는 default가 될 만큼 충분히 잘 작동하고, 이름 붙은 세 가지 failure mode가 있습니다. position bias, verbosity bias, self-enhancement bias입니다.5

신뢰하기 전에 측정하세요. 같은 60개 답변 — 열 번 실행 중 세 번 — 을 세 방식으로 label했습니다. human label은 제 것입니다. 저는 다섯 파일을 열어둔 채 60개 모두를 읽고 하나의 written rule을 적용했습니다. 답변이 질문이 요구한 사실을 진술하고, 파일들과 모순되는 내용을 전혀 포함하지 않을 때 그리고 오직 그때만 pass.

gradersays passagrees with the humanfalse passfalse fail
keyword rubric17/6050/60 = 83.3 % [72.0, 90.7]82
model as judge60/6011/60 = 18.3 % [10.6, 29.9]490

judge는 60번 중 60번 PASS라고 말했습니다. human이 18%로 채점한 set에서 이 agent를 100% accuracy로 보고했을 것입니다. discriminative power가 없는 judge는 noisy instrument가 아닙니다. constant function이며, constant function은 최고의 시스템과 최악의 시스템에 같은 score를 줍니다.

Prompting으로도 구해지지 않았습니다. 네 variant, 같은 60개 item입니다.

judge promptsays passagreement with the human
"Reply PASS or FAIL."60/6018.3 %
"Reply FAIL or PASS." — label 순서 바꿈56/6025.0 %
실패로 간주되는 것의 명시적 목록 추가55/6026.7 %
worked FAIL 예시 하나와 PASS 예시 하나 추가56/6025.0 %

지시문에서 두 label의 순서를 바꾸자 verdict 네 개가 움직였습니다. 측정 가능한 효과이고, 잘못된 종류의 효과입니다. judge가 눈앞의 답변이 아니라 prompt의 모양에 반응하고 있습니다.

깨끗한 시연은 pairwise입니다. 스무 개 질문, 각 질문마다 명백히 맞는 후보 하나와 명백히 틀린 후보 하나를 두 순서 모두로 제시했습니다.

TEXT
picked the FIRST option              40/40 = 100.0 %
order-consistent (same winner both ways)   0/20 = 0.0 %   [Wilson 0.0, 16.1]
picked the CORRECT answer            20/40 = 50.0 %

그것은 40번 중 40번 position A를 골랐습니다. correctness 50%는 부분적 competence가 아닙니다 — 산술입니다. correct answer가 정확히 절반의 trial에서 position A에 있기 때문입니다. 여기서 consistency는 MT-Bench가 정의한 대로, "the percentage of cases where a judge gives consistent results when swapping the order of two assistants"입니다. 그래서 비교가 apples to apples가 됩니다. GPT-4는 그 척도에서 65.0%를 기록하고, few-shot prompting은 그것을 77.5%로 끌어올렸습니다.5 제 것은 0점입니다.

표준 mitigation도 그 논문에서 옵니다. "call a judge twice by swapping the order of two answers and only declare a win when an answer is preferred in both orders."5 여기에 적용하면 judge는 스무 pair에서 usable verdict를 0개 만들어냅니다 — 이것이 올바른 결과이며, 자신감 넘치는 스무 verdict보다 무한히 낫습니다.

결과보다 더 가치 있는 방법론적 note. 저는 verbosity test도 실행했습니다. 같은 correct answer를 두고, 한 copy에는 아무것도 더하지 않는 36단어 문장을 덧붙였습니다. judge는 trial의 정확히 50%에서 더 긴 버전을 선호했습니다 — 이는 verbosity bias가 없는 것처럼 보이지만 전혀 그렇지 않습니다. 항상 position A를 고르는 judge는 어떤 balanced pairing에서도 50%를 기록하기 때문입니다. 첫 번째 bias가 통제되기 전에는 두 번째 bias를 측정할 수 없습니다. position을 바꾸는 것은 나중에 추가할 refinement가 아닙니다. 다른 모든 측정을 해석 가능하게 만드는 것입니다.

judge의 용도. parse 가능한 형태가 없는 open-ended answer: tone, coverage, citation이 해당 문장을 뒷받침하는지, refusal이 적절했는지. 저렴하고 빠르며, 대략 base model만큼 좋습니다.

judge가 아닌 것. ground truth. judge는 accuracy, bias profile, cost가 있는 시스템이며, 그것이 만들어내는 어떤 숫자도 의미를 갖기 전에 — known failure를 포함한 — human label로 된 자신만의 golden set이 필요합니다.

정직한 caveat: 이 judge는 5억 parameter model이고, 아무도 이런 것으로 채점해서는 안 됩니다. 요점은 judge가 나쁘다는 것이 아닙니다. 위 숫자를 만드는 데 8분이 들었고, 이 숫자들이 없었다면 이 judge의 shipping decision verdict는 100%였을 것이라는 점입니다.

두 번째 패널: Python, 그리고 contamination probe

섹션 링크: 두 번째 패널: Python, 그리고 contamination probe

이것은 course의 세 번째이자 마지막으로 선언된 Python 패널이고, 이유는 공개 숫자가 나오는 곳에 있습니다. lm-evaluation-harness는 "over 60 standard academic benchmarks for LLMs, with hundreds of subtasks and variants implemented"를 다루며, "the backend for Hugging Face's popular Open LLM Leaderboard"입니다. HELM, SWE-bench, τ-bench는 Python entry point가 있는 Python package입니다.6 당신의 model을 published figure와 비교한다는 것은 그들의 코드를 실행한다는 뜻이고, 누군가가 인용한 숫자와 비교하고 싶은 날에는 다음 생태계 안에 있게 됩니다.

terminalBASH
lm_eval --model hf \
    --model_args pretrained=EleutherAI/gpt-j-6B \
    --tasks hellaswag \
    --device cuda:0 \
    --batch_size 8

두 번째 이유는 이 장의 한 측정이 HTTP로는 불가능하기 때문입니다. Contamination — test set이 training data로 새어 들어간 것 — 은 공개 benchmark를 조용히 무의미하게 만드는 failure이고, 그것을 가장 날카롭게 probe하려면 model 자신의 loss가 필요합니다. chat API는 이를 반환하지 않습니다. 이것은 Chapter 8의 cross-entropy per token을 memory에 관한 질문에 겨눈 것입니다.

contamination.pyPYTHON
def nll(text: str) -> float:
    """Mean negative log-likelihood per token, in nats."""
    ids = tok(text, return_tensors="pt").input_ids.to(model.device)
    with torch.no_grad():
        out = model(ids, labels=ids)
    return float(out.loss)

열 개의 sentence pair입니다. 다섯 개는 웹이 존재한 이후 모든 crawl에 있었던 문장, 다섯 개는 오늘 아침 이 장을 위해 쓴 문장이고, 각각은 같은 내용을 담은 reworded version과 pair를 이룹니다.

setcanonical wordingrewordedgap
유명한 것, 5개 평균1.213.03+1.83
fresh, 5개 평균5.025.96+0.93

model은 오늘 아침 쓰인 문장에 대해 백만 번 본 문장보다 네 배 더 놀라고, 유명한 문장에서는 rewording 비용이 두 배 더 큽니다 — 그 추가 비용이 이해된 부분이 아니라 암기된 부분입니다. absolute loss는 memorisation과 ordinary naturalness를 혼동시키므로 gap이 더 나은 statistic이고, continuation test는 더 낫습니다. 처음 여섯 단어를 줘보세요.

TEXT
famous  "Permission is hereby granted, free of"
     -> "charge, to any person obtaining a copy of this software and associated
         documentation files (the "
famous  "All human beings are born free"
     -> "and equal in dignity and rights. The right to life, liberty, and security"
fresh   "All evaluation harnesses are born tiny"
     -> ", and the most common way to measure their size is by using a ruler."

유명한 string 다섯 개 중 세 개는 여섯 단어에서 word-perfect로 이어졌습니다. fresh 다섯 개 중 그렇게 된 것은 하나도 없었습니다. 이것은 5억 parameter model이 MIT License를 암송하는 장면입니다. benchmark가 공개 웹에 있다면, weights 안에 있다고 가정하세요. 이것은 또한 이 장 전체의 논거입니다. 당신이 자신의 data로 직접 작성하고 crawler가 읽는 어떤 repository에도 넣지 않은 golden set만이 train된 적 없다고 확신할 수 있는 유일한 test set입니다.

공개 benchmark가 실제로 측정하는 것

섹션 링크: 공개 benchmark가 실제로 측정하는 것

각 benchmark가 측정하는 것을 읽고, 붙어 있는 단일 숫자만 읽지 않는 한, 여전히 읽을 가치가 있습니다.

benchmark측정하는 것논문의 숫자
MMLU57개 과목에 걸친 multiple-choice knowledgeGPT-3가 chance를 "almost 20 percentage points on average" 앞섰음7
HELM많은 metric × 많은 scenario, standardisedcore scenario coverage가 17.9%에서 96.0%로 증가8
Chatbot Arenacrowdsourced pairwise human preference240K표 이상; crowd vote가 expert와 "in good agreement"9
SWE-bench실제 GitHub issue 해결, repo의 test로 채점2,294문제; 당시 최고 model이 "a mere 1.96 %" 해결10
τ-benchsimulated user와 domain policy가 있는 tool useretail에서 gpt-4o ≈ 61 % pass^1, ≈ 25 % pass^84
WebArena작동하는 website에서 long-horizon task최고 GPT-4 agent 14.41%, 인간 78.24%11
OSWorldapplication 전반의 실제 desktop 및 OS task369 task; 최고 model 12.24%, 인간 72.36%12
GAIA사람에게는 쉽고 assistant에게는 어려운 질문466문항; 인간 92%, plugin이 있는 GPT-4 15%13
AgentBench8개 distinct environment에서 agent reasoningcommercial model과 open model 사이의 큰 격차14
AgentHarmagent가 악의적 multi-step task를 수행하는지11개 harm category에 걸친 110개 malicious task15

어떤 한 행보다 표 전체를 가져가세요. agentic benchmark는 모두 model보다 인간을 훨씬 위에 둡니다. 이는 knowledge benchmark와 반대이며, 이 분야가 어디에 있는지에 대한 최고의 한 줄 요약입니다. 그 수치는 몇 달 안에 낡으므로 읽은 날짜와 함께 인용하세요. 그리고 각각은 당신의 것이 아닌 task를 측정합니다.

production에서 결정하는 metric

섹션 링크: production에서 결정하는 metric

Accuracy는 당신이 논쟁하는 metric입니다. 아래는 실제로 ship 여부를 결정하는 metric입니다. 네 가지 모두 이미 측정한 200개 실행에서 나옵니다.

call당 비용이 아니라 해결된 작업당 비용. agent는 attempt당 $0.001345가 들고, 실제로 해결된 task당 $0.005172가 듭니다 — 3.85배 더 큽니다. attempt의 4분의 3이 아무것도 만들어내지 못하기 때문입니다. Latency도 같은 방식으로 작동합니다. attempt당 1,213 ms, 해결된 task당 4,667 ms입니다. 모든 retry, 모든 re-ask, 모든 abandoned trajectory는 두 번째 숫자에 들어 있고 첫 번째에서는 보이지 않습니다.

accuracy를 이기는 diagnostic. 200개 attempt 중 123개에서 agent는 단 하나의 tool도 호출하지 않고 답했습니다 — 찾아본 것이 아니라 추측한 것입니다. 이를 기준으로 나누면 다음과 같습니다.

TEXT
answered without reading anything   8/123  =  6.5 %  [3.3, 12.3]
answered after reading something   44/77   = 57.1 %  [46.0, 67.6]

구간은 전혀 닿을 듯하지 않습니다. 이것은 aggregate 26%보다 더 가치 있습니다. 고쳐야 할 것을 이름 붙이기 때문입니다 — model이 reasoning에 실패하는 것이 아니라, 보러 가는 데 실패하고 있습니다 — 그리고 fix는 model이 아니라 harness 안에 있습니다. 이 장의 기준에 비추어 caveat 하나는 필요합니다. 두 group은 같은 task를 paired한 것이 아니라 서로 다른 task들이므로, 그 gap의 일부는 agent가 어렵다고 느끼는 질문에서 정확히 tool을 건너뛰기 때문일 수 있습니다. 이 split은 diagnostic이지 causal claim이 아닙니다.

Human intervention rate는 buyer가 가장 먼저 묻는 metric입니다. 실행 중 몇 퍼센트가 approval, guardrail, handoff에서 멈췄는가. Chapter 23의 typed interruption 덕분에 셀 수 있고, task type별 및 week별로 집계하면 자기 일을 배우는 agent와 조용히 queue가 되어가는 agent를 가르는 지표가 됩니다.

Abandonment는 offline suite가 볼 수 없는 metric입니다. 답을 읽고 tab을 닫은 뒤 스스로 작업을 처리한 user입니다. Offline evaluation은 gate이고, production evaluation은 같은 grader와 이 네 가지로 채점되는 실제 traffic의 continuous sample입니다.

그리고 Chapter 17에서 물려받은 규칙입니다. exact output에 assert하지 마세요. property에 assert하세요 — valid JSON, 올바른 schema, 호출된 올바른 tool, tolerance 안의 number, 필요한 substring present. 이 장 맨 위의 exact-match 열은 그 규칙을 어겼을 때 일어나는 일입니다.

supplier를 평가하는 것은 accuracy만의 문제가 아닙니다. 이것은 이 course 윤리의 후반부이며, appendix가 아니라 별도 heading을 가질 자격이 있습니다.

bias를 가정하지 말고 측정하세요. 이름, 방언, 성별, 국적에 대한 model의 행동에 대해 무엇을 믿든, 그것은 당신의 pipeline에서 측정 가능한 속성입니다. 도구는 이미 가지고 있습니다. golden set을 가져와 attribute만 바꾸고 paired로 비교하세요. HELM은 accuracy만 보고되던 곳에서 bias, toxicity, calibration, robustness도 판정 가능했기 때문에 존재합니다.8 vendor의 model card는 출발점이지, 당신의 입력에 대한 증거가 아닙니다.

Contamination도 supplier 질문입니다. 위의 probe는 공개된 숫자가 무엇으로, 그리고 model data가 언제 cut되었는지 물어야 하는 이유입니다.

Retention, training, residency, 2026년 9월 7일에 읽음. 이것들은 바뀌므로 답 옆에 날짜를 기록하세요. Anthropic의 policy page는 이렇게 명시합니다. "By default, we will not use your inputs or outputs from our commercial products (e.g. Claude for Work, Anthropic API, Claude Gov, etc.) to train our models". 다만 명시적으로 feedback으로 제출한 content는 예외이며, "for up to 5 years" 저장됩니다.16 OpenAI의 data controls documentation은 "data sent to the OpenAI API is not used to train or improve OpenAI models (unless you explicitly opt in to share data with us)"라고 명시하고, abuse-monitoring log의 기본 30일 retention을 설명하며, "excludes customer content from abuse monitoring logs"인 Zero Data Retention과 지역 목록에 걸친 configurable data residency를 제공합니다.17

첫 production call 전에 서면으로 받아야 할 네 가지 질문이 있습니다. 각각 owner가 다르기 때문입니다. 내 data가 training에 사용되는가; 얼마나 오래, 누구에 의해 retained되는가; 어디에서 processed되고 stored되는가; 그리고 provider를 직접 쓰는 대신 reseller, gateway, aggregator를 쓰면 이 모든 것에 무슨 일이 생기는가. 마지막 질문에 대부분의 surprise가 숨어 있고, 어떤 benchmark도 그것을 말해주지 않습니다.

이제 당신에게는 도구가 있습니다. 당신이 소유한 golden set, 모든 숫자의 구간, 모든 비교를 위한 paired test, 아무에게도 보여주지 않은 실행을 위한 pass^k, 측정된 judge, 그리고 공개 score가 의미 있는지에 대한 probe입니다. 이제 Chapter 23의 closing claim — harness는 agent를 통제 가능하게 만들지만 올바르게 만들지는 않는다 — 은 주장되는 대신 확인될 수 있습니다. 그리고 그것을 확인하는 데 200번의 실행과 8분이 걸렸습니다.

이 모든 것이 측정하지 못하는 agent의 속성이 하나 있고, 그것이 사람들을 해고당하게 만듭니다.

이 장의 golden set에 있는 모든 작업은 제가 썼고, agent가 읽은 모든 파일도 제가 썼습니다. 그 directory 안의 어떤 것도 무엇인가를 하려고 하지 않았습니다. agent에게 읽으라고 한 파일 하나의 한 줄만 바꿔보세요 — 그 줄이 다음에 그것을 읽는 무엇에게 보내는 instruction으로 끝나도록 — 그러면 26%를 기록한 agent는 같은 tool, 같은 permission, 같은 clean trace로 그것을 따를 것이고, 이 장의 모든 숫자는 정확히 그대로 있을 것입니다. evaluation suite는 시스템이 당신의 목표에 얼마나 자주 도달하는지를 측정합니다. 다른 누군가가 자신의 목표로 얼마나 쉽게 바꿔치기할 수 있는지는 측정하지 않습니다.

Chapter 30이 바로 그것입니다. prompt injection, private data와 untrusted content와 external communication의 lethal trifecta, 그리고 agent에게 real permission을 주는 비용입니다. 이 장이 피하고 있던 관찰로 시작합니다 — 같은 passing score가, agent가 읽으라고 지시받은 파일에 attacker가 쓴 일을 정확히 수행하는 agent와도 양립한다는 점입니다.


위의 모든 숫자는 한 machine에서 생성되었고, paid endpoint에는 전혀 닿지 않았습니다. agent는 다섯 개 파일 directory에 대해 네 tool 중 두 개를 쓰는 Chapter 23의 loop입니다. port 뒤의 model은 Qwen/Qwen2.5-0.5B-Instruct이며, Chapter 23과 정확히 같은 chat completions endpoint 형태의 작은 server를 통해 노출되지만, 그 장의 CPU가 아니라 소비자용 GPU 하나에서 half precision으로 실행되었습니다. 비용은 Chapter 16의 rate — input token 100만 개당 $2.00, output 100만 개당 $12.00 — 를 측정된 token count에 적용했습니다. 반복 실행은 fixed seed와 temperature 0.7을 사용하므로 전체 set이 reproduce됩니다. four-arm table은 greedy입니다. 구간은 95% Wilson이고, paired comparison은 discordant pair에 대한 two-sided exact sign test입니다. Wilson interval은 Chapter 4의 것이고 exact paired sign test는 Chapter 15의 것이며, 둘 다 변경 없이 재사용했습니다. human label은 제 것이며, text에서 인용한 written rule에 따라 60개 답변에 적용했습니다. 여기의 모든 magnitude는 5억 parameter model의 속성으로 읽고, 모든 method는 transfer 가능한 것으로 읽으세요. 더 큰 model은 모든 숫자를 위로 옮기지만 어떤 도구도 옮기지 않습니다.

  1. OpenAI, A practical guide to building agents (PDF), page 8, read 7 September 2026. 위에서 인용한 three-step ordering과 "build your agent prototype with the most capable model for every task to establish a performance baseline. From there, try swapping in smaller models to see if they still achieve acceptable results."라는 accompanying advice의 출처입니다. Chapter 22와 25는 이 문서의 definitional 및 orchestration page를 인용합니다.

  2. Schaeffer, R., Miranda, B. and Koyejo, S. Are Emergent Abilities of Large Language Models a Mirage? arXiv:2304.15004 (2023). Chapter 10에서 인용한 BIG-Bench audit과 함께, discontinuous하고 all-or-nothing인 metric이 smooth underlying improvement에서 apparent jump를 만들어낸다는 주장입니다. 그들의 caution도 반복할 가치가 있습니다. 이 논문은 large model이 emergent ability를 보일 수 없다고 주장하지 않습니다.

  3. Kalai, A. T., Nachum, O., Vempala, S. S. and Zhang, E. Why Language Models Hallucinate. arXiv:2509.04664 (2025). right-or-wrong으로 scoring되는 benchmark가 abstention보다 guessing을 보상한다는 주장, 그리고 "modifying the scoring of existing benchmarks that are misaligned but dominate leaderboards, rather than introducing additional hallucination evaluations"라는 제안된 remedy의 출처입니다. Chapter 19는 retrieval 쪽에서 이를 인용했고, 이것은 같은 주장에 대한 evaluation 쪽입니다.

  4. Yao, S., Shinn, N., Razavi, P. and Narasimhan, K. τ-bench: A Benchmark for Tool-Agent-User Interaction in Real-World Domains. arXiv:2406.12045 (2024). 위에서 인용한 대로 정의되고 논문에 두 estimator가 나란히 인쇄된 pass^k의 출처입니다. abstract의 headline은 state-of-the-art function-calling agents가 "succeed on <50 % of the tasks, and are quite inconsistent (pass^8 <25 % in retail)"라는 것이고, section 1은 τ-retail에서 gpt-4o 수치 ≈61 % pass^1 및 ≈25 % pass^8를 제공합니다. 이것이 대비시키는 pass@k estimator는 Chen, M. et al., Evaluating Large Language Models Trained on Code, arXiv:2107.03374 (2021)에서 왔습니다. 2 3

  5. Zheng, L. et al. Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena. arXiv:2306.05685 (2023). 세 가지 named bias, 위에서 사용한 consistency 정의("the percentage of cases where a judge gives consistent results when swapping the order of two assistants"), "only GPT-4 outputs consistent results in more than 60 % of cases"라는 발견과 65.0%가 few-shot에서 77.5%로 상승한 결과, 그리고 그대로 인용한 swap-and-require-agreement mitigation의 출처입니다. 긍정적 결과도 중요합니다. GPT-4 judge는 human evaluation과 "an agreement rate exceeding 80 %", 즉 "the same level of human-human agreement"에 도달합니다 — 이것이 judge를 사용할 이유이고, 당신의 judge를 측정해야 할 이유입니다. 2 3

  6. EleutherAI, Language Model Evaluation Harness, project README read 7 September 2026: "over 60 standard academic benchmarks for LLMs, with hundreds of subtasks and variants implemented", 그리고 "the backend for Hugging Face's popular Open LLM Leaderboard". 위에서 인용한 lm_eval invocation은 README 자체의 예시입니다. Liang, P. et al., Holistic Evaluation of Language Models, arXiv:2211.09110 (2022)는 또 다른 standard runner이며 evaluation design에 관해 더 읽을 만합니다.

  7. Hendrycks, D., Burns, C., Basart, S., Zou, A., Mazeika, M., Song, D. and Steinhardt, J. Measuring Massive Multitask Language Understanding. arXiv:2009.03300 (2020). 57개 task. abstract의 claim인 largest GPT-3 model이 "improves over random chance by almost 20 percentage points on average"는 이 benchmark가 saturation된 것이 얼마나 최근 일인지 상기시켜 줍니다.

  8. Liang, P. et al. Holistic Evaluation of Language Models. arXiv:2211.09110 (2022). 16개 core scenario와 30개 model에 대한 일곱 metric — accuracy, calibration, robustness, fairness, bias, toxicity, efficiency — 및 위에서 인용한 coverage 수치. 읽어야 하는 이유는 framing입니다. 일곱 개 중 무엇을 report할지 자체가 선택입니다. 2

  9. Chiang, W.-L. et al. Chatbot Arena: An Open Platform for Evaluating LLMs by Human Preference. arXiv:2403.04132 (2024). 작성 시점 240K표 이상, crowdsourced pairwise preference, 그리고 "the crowdsourced human votes are in good agreement with those of expert raters"라는 claim.

  10. Jimenez, C. E., Yang, J., Wettig, A., Yao, S., Pei, K., Press, O. and Narasimhan, K. SWE-bench: Can Language Models Resolve Real-World GitHub Issues? arXiv:2310.06770 (2023). 12개 Python repository에서 가져온 2,294문제, repository 자체 test로 채점, 당시 최고 model이 "a mere 1.96 %"만 해결했습니다. Chapter 23은 "harness"라는 단어의 다른 의미를 위해 이를 사용합니다.

  11. Zhou, S. et al. WebArena: A Realistic Web Environment for Building Autonomous Agents. arXiv:2307.13854 (2023). 네 domain에 걸친 functioning website, 최고 GPT-4 agent 14.41%, 인간 78.24%.

  12. Xie, T. et al. OSWorld: Benchmarking Multimodal Agents for Open-Ended Tasks in Real Computer Environments. arXiv:2404.07972 (2024). 실제 operating system에서 369 task. 인간은 72.36% 이상, 최고 model은 12.24%, main gap으로 GUI grounding이 지목됩니다.

  13. Mialon, G., Fourrier, C., Swift, C., Wolf, T., LeCun, Y. and Scialom, T. GAIA: A Benchmark for General AI Assistants. arXiv:2311.12983 (2023). 466문항, 인간 92% 대 plugin이 있는 GPT-4 15% — 사람에게 쉬운 것과 assistant에게 쉬운 것 사이의 gap에 대한 가장 깔끔한 published statement입니다.

  14. Liu, X. et al. AgentBench: Evaluating LLMs as Agents. arXiv:2308.03688 (2023). 여덟 distinct environment, 그리고 top commercial model과 comparable size의 open-source model 사이의 significant disparity.

  15. Andriushchenko, M. et al. AgentHarm: A Benchmark for Measuring Harmfulness of LLM Agents. arXiv:2410.09024 (2024). 11개 harm category에 걸친 110개 explicit malicious agent task(augmentation 포함 440개), leading model이 "surprisingly compliant with malicious agent requests without jailbreaking"이며 simple universal jailbreak template이 capability를 유지한 채 agent로 transfer된다는 finding. Chapter 30으로 가는 bridge입니다. capability benchmark와 harm benchmark가 같은 시스템을 측정하고, 준비되었는지에 대해 disagree합니다.

  16. Anthropic, Is my data used for model training?, privacy.claude.com, read 7 September 2026. feedback exception과 submitted feedback의 five-year storage window를 포함해 위에서 그대로 인용한 출처입니다.

  17. OpenAI, Your data (API data controls documentation), developers.openai.com, read 7 September 2026. default no-training statement, thirty-day abuse-monitoring retention, Zero Data Retention 설명 및 eligible endpoint 목록, data residency region의 출처입니다.


제작자

David Vicente Campos

NeuraLIA Labs 창립자 & MyRealFood 공동 창립자

저는 레온 대학교 출신의 컴퓨터 엔지니어입니다. MyRealFood를 공동 창업해 수백만 명이 더 건강하게 먹기 위해 사용해 온 앱을 CTO로서 만들었고, NeuraLIA Labs를 설립해 그곳에서 AI 제품을 만들고 있습니다. 여기서는 제가 그 과정에서 이해해야 했던 것들에 대해, 누군가 제게 설명해줬으면 했던 방식으로 쓰고 있습니다.

저자 더 알아보기

NeuraLIA Labs에서 발행합니다.

새 글을 받은편지함에서 받아보세요

AI 뉴스, 가이드, 제품 업데이트 — 읽을 만한 소식이 있을 때 짧은 이메일로 보내드려요.

메시지가 편하다면 같은 글을 여기서도 받아보세요:WhatsApp 커뮤니티 (새 탭에서 열림)Telegram 채널 (새 탭에서 열림)

강좌 목차

Abstract software decision engine with branching paths, probability nodes, and glowing gates.
jev13분 읽기

Jev AI 모델은 글쓰기가 아니라 결정을 위해 만들어졌다

TypeSafe AI의 Jev가 주목받는 이유는 소프트웨어 지능을 확률 문제로 다루기 때문입니다. 올바른 분기를 선택하고, 신뢰도를 붙이며, 코드에 필요한 것이 결정일 때 LLM에 텍스트 작성을 맡기는 비용을 피합니다.

이제 모델 선택은 LIA에게 맡기세요

모든 AI 모델을 한곳에서. 오늘 무료로 시작하세요.