이종관
Back to Posts

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

훈련이 아닌 추론 시점에서 더 많은 계산 자원을 사용하여 성능을 향상시키는 새로운 패러다임

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

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

개념

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]
[Wait]
"따라서..."
[Final Answer] → "답을 내릴 때"
"42"

사고 시간 제어

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

계산량과 성능의 관계

성능(%)
|           ╱╱╱
|         ╱╱╱
|       ╱╱╱
|     ╱╱╱
|   ╱╱╱━━━━━━━━ (포화)
| ╱╱╱
└────────────────────
  추론 시간 (계산량)

중요한 발견

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

동적 계산량 조절

문제 난이도에 따른 조절

"1 + 1 = ?"
→ 쉬움 → [Wait] × 1 → "2"

"AIME 문제"
→ 어려움 → [Wait] × 50 → 깊은 분석 → 답변

자신감 기반 조절

초기 사고 후 자신감 평가:
- 자신감 높음 → 바로 답변
- 자신감 낮음 → [Wait] 추가 → 더 생각

비용 효율성

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

비용 비교

더 큰 모델 훈련:
- GPU 수천 대 × 수개월 = $수백만

추론 시간 증가:
- 추가 토큰 비용 × 필요할 때만 = $수천

구현 방식

단순 반복

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)

적응적 조절

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: 사고 시간 제어 기법