본문으로 건너뛰기

LLM 확률 평가로 에이전트 궤적을 선별하는 검증 프레임워크

LLM-as-a-Verifier가 점수 토큰 확률과 반복 비교로 에이전트 궤적을 선별하고 Terminal-Bench 등에서 Pass@1을 높입니다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

LLM-as-a-Verifier는 에이전트가 생성한 후보 궤적을 추가 학습 없이 반복 평가하고, LLM의 점수 토큰 확률 분포를 이용해 세분화된 보상값을 계산하는 검증 프레임워크입니다. 여러 평가 기준과 반복 검증을 평균내며, 후보가 많을 때는 Probabilistic Pivot Tournament로 비교 횟수를 O(N²)에서 O(Nk)로 줄여 Test-Time Scaling을 수행합니다. Terminal-Bench 2.1의 self-verification에서 Best-of-3은 Pass@1 79.4%를 86.5%로, Best-of-5는 78.7%를 88.0%로 높였고, SWE-Bench Verified와 MedAgentBench에서도 기본 성능보다 높은 점수가 기록됐습니다. 긴 궤적을 반복 채점하는 비용은 Prefix Cache로 줄였으며, 캐시 적중률 78.8%와 검증 토큰 사용량을 라이브러리에서 직접 확인할 수 있습니다.

섹션별 상세

01
LLM-as-a-Verifier는 에이전트의 최종 답만 이산적인 정답·오답으로 판정하지 않고, 문제와 궤적을 여러 평가 기준에 따라 반복 채점합니다. 각 기준에서 모델이 출력할 점수 토큰의 전체 확률 분포를 읽고, 점수 토큰마다 대응하는 스칼라값을 곱해 세분화된 보상값을 계산합니다. 이 구조 덕분에 후보 선택뿐 아니라 에이전트가 어느 단계에서 문제를 해결해 가는지 추적하고, Test-Time Scaling과 Reinforcement Learning에 활용할 수 있습니다.
python
import llm_verifier
problem = "Write a function that reverses a string."
candidates = [
    "def rev(s): return s[::-1]",
    "def rev(s): return s",
    "def rev(s): return ''.join(sorted(s))",
]
result = llm_verifier.select(
    problem=problem,
    candidates=candidates,
    criteria={"Correctness": "Does the code actually reverse the string?"},
)
print(result.index) # index of the best candidate: 0
print(result.scores) # candidate scores: [0.73104, 0.38446, 0.38449]

문자열 뒤집기 문제에 대한 여러 코드 후보를 Correctness 기준으로 평가해 가장 높은 후보의 인덱스와 점수를 반환합니다.

python
reward_a, reward_b = llm_verifier.compare(
    problem, candidates[0], candidates[1],
    criteria={"Overall": "Does the code solve the problem?"},
)
print(reward_a, reward_b) # fine-grained rewards in [0, 1]: 0.99994 0

두 후보 궤적을 직접 비교해 각 후보의 세분화된 보상값을 계산합니다.

Text, Image, Video 입력을 하나의 LLM-as-a-Verifier 프레임워크로 받아 Test-Time Scaling, Progress Tracking, Reinforcement Learning으로 연결하는 구조도입니다.
Diagram중앙의 검증 프레임워크는 Uncertainty, Granularity, Repetition, Decomposition 네 요소를 결합합니다. 특히 LLM logit 확률과 세분화된 점수 토큰을 반복 집계해 보상 R(x, τ)를 만들고, 이를 에이전트 평가와 후속 학습 활용으로 연결한다는 본문의 구조를 시각화합니다.
02
에이전트 후보가 여러 개일 때 모든 쌍을 비교하는 round-robin 방식은 후보 수가 N이면 O(N²)의 비용이 발생합니다. Probabilistic Pivot Tournament는 먼저 무작위 Hamiltonian cycle에서 인접 후보를 비교해 순위를 대략 정한 뒤 상위 k개를 pivot으로 고르고, 비-pivot과 pivot 및 pivot 간 비교에 평가 예산을 집중해 O(Nk)로 줄입니다. 반복 비교에서 A와 B의 프롬프트 위치를 번갈아 바꾸고 ring pass에서 각 후보를 양쪽 슬롯에 한 번씩 배치해 모델의 positional bias를 상쇄합니다.
python
steps = [
    'Read the problem statement',
    'Wrote def rev(s): return s ',
    'Tested: rev("abc") returned "abc"',
    'Changed to def rev(s): return s[::-1]',
    'Tested: rev("abc") returned "cba"',
]
result = llm_verifier.track(problem=problem, steps=steps, checkpoint_steps=[1, 2, 3, 4, 5], n_evaluations=4)
print(result.scores) # progress after each step: [0.00106, 0.02417, 0.03143, 0.62004, 0.99978]

에이전트가 수행한 각 단계까지의 상태를 반복 평가해 작업 진행률 곡선을 계산합니다.

PyTorch 모델 작업의 단계별 진행률을 SUCCESS와 FAILED 궤적으로 나눠 표시한 Progress Tracking 그래프입니다.
Chart가로축은 정규화된 단계이고 세로축은 정규화된 verifier score이며, 성공 궤적은 hidden_dim 업데이트와 DONE 단계에서 1.0에 도달합니다. 실패 궤적은 torchvision 설치, 디스크 공간 부족, 컴파일 오류 지점에서 낮은 점수에 머물러 에이전트의 진행 상태와 실패 원인을 단계별로 구분하는 본문의 활용 사례를 보여줍니다.
후보 궤적을 ring pass로 비교하고 상위 pivot을 선정한 뒤 pivot tournament를 거쳐 최종 후보를 고르는 절차도입니다.
DiagramN개 후보의 인접 쌍을 무작위 Hamiltonian cycle로 비교해 positional bias를 줄이고, ring-pass 점수가 높은 k개 후보를 pivot으로 선택합니다. 이후 non-pivot 대 pivot과 pivot 간 비교를 집계해 정규화된 승리 점수가 가장 높은 후보를 반환하므로, 전체 쌍 비교의 O(N²) 비용을 O(Nk)로 줄이는 PPT 알고리즘의 흐름이 드러납니다.
03
Terminal-Bench 2.1에서는 deepseek-v4-flash가 만든 다섯 개의 mini-swe-agent 궤적을 같은 모델이 검증하는 self-verification 실험을 수행했습니다. Best-of-3은 Pass@1 79.4%에서 LLM-as-a-Verifier 86.5%로, Best-of-5는 78.7%에서 88.0%로 올라갔으며 각각 Oracle의 92.1%, 96.6%에는 미치지 못했습니다. 이는 검증 모델과 생성 모델이 같아도 후보 궤적을 고르는 단계가 단일 시도보다 높은 결과를 낼 수 있음을 보여주지만, Oracle과의 격차도 함께 남깁니다.
bash
python scripts/run.py swe_bench --pivots 2 --n-evaluations 8 --seed 0 --max-workers 50

SWE-Bench 평가를 두 개의 pivot과 여덟 번의 반복 평가로 실행하며 시드와 동시 작업 수를 지정합니다.

04
Gemini 2.5 Flash를 검증 모델로 사용한 다른 벤치마크에서도 후보 선택 뒤 점수가 기본 Pass@1보다 높았습니다. Terminal-Bench V2는 GPT-5.5와 Capy 조합에서 83.1%가 86.5%로, SWE-Bench Verified는 여러 기반 모델과 mini-swe-agent 조합에서 76.1%가 78.2%로, MedAgentBench는 Claude Opus 4.8과 AgentBench 조합에서 70.2%가 73.3%로 상승했습니다. Oracle 점수는 각각 92.1%, 84.4%, 75.0%로 기록돼 검증기가 최선의 후보를 항상 고르는 것은 아니라는 한계를 드러냅니다.
python
import llm_verifier
llm_verifier.USAGE.reset()
result = llm_verifier.select(problem, trajectories, criteria="terminal_bench")
print(llm_verifier.token_usage()) # {'calls': 24, 'input_tokens': 1512480, 'cached_input_tokens': 1190208, # 'uncached_input_tokens': 322272, 'output_tokens': 180224, # 'reasoning_tokens': 145408, 'cache_hit_rate': 0.787}

검증 호출 전 토큰 사용량을 초기화한 뒤 선택 작업을 수행하고 입력·출력·캐시 토큰과 캐시 적중률을 집계합니다.

05
긴 Terminal-Bench 2.1 궤적을 기준과 반복 횟수마다 다시 평가하면 하나의 검증 프롬프트가 약 80k 토큰에 이르러 입력 비용이 커집니다. 프레임워크는 작업, 두 궤적, 평점 척도를 공유 접두사로 두고 평가 기준을 프롬프트 끝에 배치한 뒤, 먼저 한 요청으로 캐시를 데우고 나머지 요청이 이를 재사용하게 만들었습니다. 그 결과 캐시 적중률이 5.2%에서 78.4%로 높아졌고 uncached input tokens가 약 3.4배 줄었으며, 한 실행에서 4,320회의 검증 호출과 input 272,551,552, cached input 214,712,320을 기록할 수 있습니다.

용어 해설

세분화 보상(Fine-Grained Reward)
에이전트의 결과를 단일한 정답·오답이나 이산 점수로 줄이지 않고, 여러 평가 기준과 점수 토큰의 확률 분포를 이용해 연속적인 보상값으로 바꾸는 방식입니다. 작업 진행률 측정과 후보 궤적 선택의 정밀도를 높이는 데 쓰입니다.
로그 확률(Logprob)
언어 모델이 특정 토큰을 출력할 확률의 로그값입니다. 이 프레임워크는 점수 토큰 하나만 선택한 결과가 아니라 여러 점수 토큰에 대한 확률을 읽어 평가자의 불확실성과 세분화된 보상값을 계산합니다.
추론 시점 확장(Test-Time Scaling)
모델을 추가 학습하지 않고 추론 단계에서 여러 후보 생성, 반복 평가, 검색 또는 선택을 수행해 최종 결과의 품질을 높이는 방법입니다. LLM-as-a-Verifier는 에이전트 궤적을 반복 채점하고 가장 높은 후보를 고르는 방식으로 이를 구현합니다.
Bradley-Terry 모델(Bradley-Terry Model)
후보 간 승패나 선호 비교를 바탕으로 각 후보의 상대적인 강도를 추정하는 확률 모델입니다. Probabilistic Pivot Tournament는 쌍별 비교 결과를 승리 질량과 비교 횟수로 집계해 후보 순위를 정합니다.
프리픽스 캐시(Prefix Cache)
반복 요청에서 앞부분의 동일한 입력 토큰을 다시 계산하지 않도록 모델의 처리 결과를 저장하고 재사용하는 방식입니다. 이 프레임워크는 긴 에이전트 궤적과 평가 척도를 공유 접두사로 구성해 Terminal-Bench 2.1에서 캐시 적중률을 5.2%에서 78.4%로 높였습니다.

기술

  • Python
  • llm-verifier
  • deepseek-v4-flash
  • Gemini 2.5 Flash
  • vLLM
  • Qwen/Qwen3.5-9B
  • PyTorch
  • Terminal-Bench 2.1
  • SWE-Bench Verified
  • MedAgentBench

활용 사례

  • 여러 에이전트 궤적 중 최선의 결과 선택
  • 에이전트 작업 단계별 진행률 추적
  • Terminal-Bench, SWE-Bench Verified, MedAgentBench 평가 확장
  • 에이전트 결과에 대한 Test-Time Scaling
  • 세분화된 보상값을 활용한 Reinforcement Learning
AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 09. 06.수집 2026. 09. 06.출처 타입 RSS

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.