이종관
글 목록으로

Test-Time Compute Scaling: 추론 시간 최적화

훈련이 아닌 추론 시점에서 더 많은 계산을 투입하여 성능을 끌어올리는 패러다임

2026년 2월 1일·6 min read·
agent
test-time-compute
reasoning
scaling

추론 시점에서 계산 시간 활용

개념

Test-Time Compute Scaling은 훈련이 아닌 추론 시점에서 더 많은 계산 자원을 사용하여 성능을 향상시키는 접근이다.

패러다임 전환

  • 기존 패러다임: 더 큰 모델 + 더 많은 데이터 + 더 많은 훈련 = 더 좋은 성능
  • 새로운 패러다임: 같은 모델 + 추론 시간에 더 많이 생각 = 더 좋은 성능

자원 배분 비교

  • 기존: 훈련 90%, 추론 10% — 대부분의 자원을 훈련에 투자
  • 새로운: 훈련 50%, 추론 50% — 추론 시간에도 동등한 자원 배분

s1: 1,000개 예제의 힘

2025년 1월 발표된 s1은 이 패러다임을 극단적으로 보여준다.

훈련 방식

  1. 데이터 수집: 단 1,000개 어려운 문제
  2. 파인튜닝: 이 데이터만으로 훈련
  3. Budget Forcing: 특수 토큰으로 사고 시간 제어

성능

모델AIME 2024훈련 데이터
GPT-412%조 단위 토큰
o1-preview74%비공개
s1-32B81%1,000개
o1-full85%비공개

1,000개 예제로 o1-preview를 능가한다.

Budget Forcing

s1의 핵심 기법은 Budget Forcing이다.

특수 토큰

  • [Wait]: "더 생각해" — 모델이 추가 사고를 수행하도록 유도
  • [Final Answer]: "답을 내릴 때" — 최종 답변을 출력하도록 지시

동작 예시

일반 생성: "답은 42이다." — 즉시 답변을 출력한다.

Budget Forcing: "음..." → [Wait] → "이 문제를 풀려면 먼저..." → [Wait] → [Wait] → "따라서..." → [Final Answer] → "42" — 여러 번의 사고 단계를 거쳐 더 깊이 생각한 뒤 답변한다.

사고 시간 제어

  • 쉬운 문제: [Wait] x 2 — 빠른 답변
  • 중간 문제: [Wait] x 10 — 적당한 사고
  • 어려운 문제: [Wait] x 50 — 깊은 사고

계산량과 성능의 관계

추론 계산량성능 변화
낮음성능 향상이 제한적
중간성능이 가파르게 향상
높음향상 폭이 줄어들며 포화 구간 진입

중요한 발견

발견설명
성능 향상추론 시간 증가 → 성능 향상
포화점특정 지점 이후 효과 감소
문제 의존쉬운 문제는 포화 빠름

동적 계산량 조절

문제 난이도에 따른 조절

쉬운 문제: "1 + 1 = ?" → [Wait] x 1 → "2" — 최소한의 사고로 즉시 답변

어려운 문제: "AIME 문제" → [Wait] x 50 → 깊은 분석을 거쳐 답변

자신감 기반 조절

초기 사고 후 자신감을 평가하여 계산량을 조절한다:

  • 자신감 높음: 바로 답변
  • 자신감 낮음: [Wait] 추가 후 더 생각

비용 효율성

접근비용성능 향상
더 큰 모델 훈련매우 높음점진적
더 많은 데이터높음점진적
추론 시간 증가낮음큰 폭

비용 비교

  • 더 큰 모델 훈련: GPU 수천 대 x 수개월 = $수백만
  • 추론 시간 증가: 추가 토큰 비용 x 필요할 때만 = $수천

구현 방식

단순 반복

python
def think_longer(model, question, wait_tokens=10):
    prompt = question
    for _ in range(wait_tokens):
        prompt += model.generate(prompt, max_tokens=50)
        prompt += "[Wait]"
    prompt += "[Final Answer]"
    return model.generate(prompt)

적응적 조절

python
def adaptive_thinking(model, question, max_waits=50):
    prompt = question
    for i in range(max_waits):
        response = model.generate(prompt, max_tokens=50)
 
        # 자신감 체크
        confidence = model.evaluate_confidence(response)
        if confidence > 0.9:
            break
 
        prompt += response + "[Wait]"
 
    prompt += "[Final Answer]"
    return model.generate(prompt)

Best-of-N Sampling

또 다른 Test-Time Compute 기법:

같은 문제를 N번 풀어본다:

시도 1: 답 A / 시도 2: 답 B / 시도 3: 답 A / 시도 4: 답 A / 시도 5: 답 C

가장 좋은 것을 선택하거나 다수결을 적용한다 → 답 A

선택 기준

기준설명
다수결가장 많이 나온 답
검증 점수자체 검증 점수 최고
길이 기반더 긴 추론 = 더 신뢰

한계

  1. 포화점: 무한히 생각한다고 무한히 좋아지지 않음
  2. 비용 증가: 추론 비용은 여전히 비용
  3. 지연 시간: 사용자 대기 시간 증가
  4. 문제 유형: 모든 문제에 효과적이지 않음

적합한 사용 사례

적합부적합
수학/과학 문제실시간 대화
코딩 챌린지간단한 QA
복잡한 추론일상적 작업
정확도 중요속도 중요

관련 개념

  • OpenAI o1: 내부 추론 토큰
  • DeepSeek-R1: 오픈소스 추론 모델
  • Budget Forcing: 사고 시간 제어 기법