Search

pass^k - k번 모두 정답을 생성했는가?

Number
16

pass^k - k번 모두 정답을 생성했는가?

개요

pass^k는 에이전트가 K번 시도했을 때 매번 정답을 생성했는지를 평가하는 지표입니다.
즉, 한 번이라도 맞으면 되는 pass@k와 달리, 모든 시도에서 정답이어야 점수가 높아지는 더 엄격한 지표입니다.
핵심 의미: 일관성(Consistency) 평가
판정 방식: K번 모두 정답이어야 함
특징: K가 증가할수록 점수는 더 낮아짐
주의점: 무조건 높게 만들기보다, 운영에 필요한 안정성 기준을 팀 내에서 정하는 것이 중요함

pass^k의 의미와 특징

일관성 평가

같은 문제를 여러 번 던졌을 때,
에이전트가 매번 같은 수준의 정답을 내는지를 확인합니다.
비결정성(non-determinism)이 있는 LLM/에이전트에서 특히 중요합니다.

점수 특성

K가 커질수록 모든 시도에서 정답을 맞힐 확률은 급격히 줄어듭니다.
예시:
정확도 90%인 모델도
10번 연속 성공할 확률은 약 0.35 수준일 수 있음

실무적 해석

100%를 목표로 무리할 필요는 없음
팀이 여러 번 테스트한 뒤,
“이 정도면 안정적으로 운영 가능하다”
라는 운영 기준선을 정하는 것이 중요합니다.

평가 흐름

기본 구조

1.
에이전트 실행
2.
최종 답변 생성
3.
IsFinalAnswerCorrect 평가로 각 답변이 정답인지 판정
0점 / 1점으로 단순 평가
4.
이 과정을 K번 반복
반복 횟수는 보통 num_repetitions 같은 파라미터로 제어
5.
모든 반복이 끝나면 Summary Evaluatorpass^k를 계산

평가자 구성

개별 평가자: 각 실행 결과가 맞는지 판단
Summary Evaluator: 여러 번의 실행 결과를 모아 최종 pass^k 산출

구현 방식

1) 기본 평가 설정

환경변수 로드
LangSmith 클라이언트 선언
데이터셋 로드 확인
동일한 프롬프트 사용
정답 여부는 0/1로 평가

2) 평가자 재사용

앞에서 사용한 Evaluator를 그대로 활용 가능
예:
IsFinalAnswerCorrect
grade_correctness
다만 강의 실습 목적이라면, 토큰 절약을 위해 0/1 판단 방식을 추천

3) 반복 실행

동일한 문제를 K번 반복 실행
각 실행의 결과를 수집
이후 Summary Evaluator가 전체 결과를 집계

Summary Evaluator와 pass^k 계산

Summary Evaluator의 역할

모든 런이 끝난 뒤 1번만 실행
example(골든 데이터셋의 한 샘플)
run 결과를 비교하여
최종적으로 pass^k를 계산합니다.

스코어 계산 방식

수집된 각 run의 피드백 점수를 가져옴
이를 기반으로 평균을 계산하여 최종 점수로 사용
즉, K번 모두 성공해야 높은 점수가 나옵니다.

코드 흐름에서 중요한 포인트

피드백 수집

List Feedback 형태로 0/1 결과를 모읍니다.
여러 개의 run_id에 대해 점수를 가져옵니다.

time.sleep이 필요한 이유

피드백에는 약간의 지연(delay) 이 있을 수 있습니다.
너무 빨리 조회하면:
마지막 값이 아직 반영되지 않거나
0점/None이 잘못 반환될 수 있음
따라서 결과가 안정적으로 모일 때까지 대기 시간을 둡니다.

결과 확인

각 run의 score가 저장된 후,
전체 결과를 보면 반복 횟수별 점수가 표시됩니다.
점수를 클릭하면 각 시도별 실행 내역도 확인할 수 있습니다.

pass@k와의 차이

pass@k

한 번이라도 정답이 나오면 성공
“시도 중 적어도 하나가 맞았는가”를 봄

pass^k

K번 모두 정답이어야 성공
“매번 안정적으로 맞는가”를 봄

해석 예시

1, 0, 0, 1, 1, 0 같은 결과가 있으면
pass@k는 성공으로 볼 수 있지만
pass^k는 엄격하게 평가되어 더 낮은 점수가 됩니다.

실무에서의 활용 포인트

왜 pass^k를 보는가?

LLM/에이전트는 비결정성 때문에 같은 입력에도 결과가 달라질 수 있음
따라서 단순히 한 번 맞는 것보다,
여러 번 시도해도 일관되게 맞는지
를 확인하는 것이 중요합니다.

결과 해석

동일한 문제라도 문구가 약간씩 달라질 수 있음
예를 들어 비슷한 의미지만 표현이 조금씩 다른 응답이 나올 수 있음
이런 차이 때문에 LLM 기반 평가반복 평가(pass^k) 가 유용합니다.

요약

pass^kK번 모두 정답을 생성했는지 보는 엄격한 평가 지표입니다.
일관성안정성을 측정하는 데 유용합니다.
구현은:
각 시도별 정답 여부를 평가하고
Summary Evaluator로 전체 결과를 집계하는 방식입니다.
실무에서는 무조건 높은 점수보다, 운영 가능한 안정성 기준을 정하는 것이 핵심입니다.