Test-Time Scaling (TTS) 추론 시점 계산량 확장을 통한 대규모 언어모델의 추론 성능 향상
Updated 2026-09-29 · NEXMASON ANITEX▶ Open interactive ANITEX · equations and animations
This accessible text edition preserves the document's narrative. See the interactive edition for typeset equations, diagrams and playback.
개요
대규모 언어모델(LLM)의 성능을 높이는 전통적인 방법은 모델 파라미터 수, 학습 데이터의 양, 그리고 사전학습(pre-training)에 투입되는 계산량을 증가시키는 것이었다. 이를 간단히 표현하면
P f(N,D,C_train)
으로 나타낼 수 있다. 여기서 P는 성능, N은 모델 파라미터 수, D는 학습 데이터 규모, C_train은 학습 계산량이다.
Test-Time Scaling(TTS), 또는 inference-time compute scaling은 관점을 바꾼다. 이미 학습된 모델의 파라미터를 그대로 두고, 문제를 푸는 추론 시점에 추가적인 계산 자원을 투입하여 더 좋은 답을 얻는다.
P f(, x, C_test)
여기서 는 고정된 모델 파라미터, x는 입력 문제, C_test는 추론 과정에서 사용할 계산 예산이다.
따라서 TTS의 핵심 질문은 다음과 같다.
``같은 모델에게 더 많은 추론 계산량을 주면 얼마나 더 어려운 문제를 정확하게 해결할 수 있는가?''
Training-Time Scaling과 Test-Time Scaling
전통적인 scaling은 주로 학습 단계에서 이루어진다.
C_train N D
반면 TTS에서는 학습이 끝난 모델에 대해 추론 계산량을 변화시킨다.
C_test = C_generation + C_search + C_verification + C_revision
즉 단순히 긴 답변을 생성하는 것만이 아니라 여러 후보 생성, 탐색(search), 검증(verifying), 재검토(revision)까지 포함할 수 있다.
[ node distance=12mm, box/.style=draw,rounded corners,minimum width=35mm,minimum height=10mm,align=center, arr/.style=-Latex[length=2.5mm],thick ] (x) 문제 x; (m) 고정된 LLM p_(y|x); (r) 추론 / 탐색 검증 / 수정; (y) 최종 답 y^;
(x)--(m); (m)--(r); (r)--(y); (r) to node[above]추가 계산 (m);
확률론적 관점
언어모델은 입력 x가 주어졌을 때 출력 토큰열 y=(y_1,,y_T)의 확률을
p_(y|x) = _t=1^T p_(y_t|x,y_<t)
로 모델링한다.
일반적인 greedy decoding에서는
y_t^ = _y_t p_(y_t|x,y_<t)
를 반복한다. 그러나 각 단계의 국소 최적 선택이 전체 문제의 최적 해를 보장하지는 않는다. TTS는 여러 reasoning trajectory를 생성하거나 탐색하여
_i = (r_i,1,r_i,2,,r_i,T_i,y_i)
후보 집합
T=\_1,_2,,_K\
을 만든 뒤 가장 좋은 경로 또는 답을 선택한다.
TTS의 기본 수학적 정식화
추론 계산 예산을 B라고 하자. TTS의 목적은 제한된 예산에서 기대 성능을 최대화하는 정책 를 찾는 것이다.
^ = _ E_xD
subject to
E_xD [C_(x)] B.
R은 정답률, reward, verifier score 등의 품질 함수이고, C_(x)는 문제 x에 실제 사용한 추론 계산량이다.
이 식은 중요한 사실을 보여준다. 모든 문제에 동일한 계산량을 배정하는 것이 반드시 최적은 아니다.
방법 1: Longer Reasoning
가장 직관적인 방법은 한 reasoning trajectory를 더 길게 생성하는 것이다.
x r_1 r_2 r_T y
추론 토큰 수 T를 증가시키면 복잡한 문제를 여러 단계로 분해할 기회가 증가한다.
단순화하면
C_test T
로 생각할 수 있다.
그러나 T가 증가한다고 정확도가 항상 증가하지는 않는다. 불필요한 추론, 오류 누적, 이미 얻은 정답을 다시 변경하는 overthinking 등이 발생할 수 있다.
따라서
P C_test > 0
가 모든 계산 영역에서 항상 성립한다고 가정해서는 안 된다.
방법 2: Best-of-N Sampling
동일한 문제에서 N개의 후보를 생성한다.
y_i p_(y|x), i=1,,N.
각 후보를 verifier V_로 평가하고
y^ = _y_i V_(x,y_i)
를 선택한다.
[ node distance=9mm, box/.style=draw,rounded corners,minimum width=25mm,minimum height=8mm,align=center, arr/.style=-Latex,thick ] (x) Problem x; (m) LLM;
(a) y_1; (b) y_2; (dots) ; (c) y_N;
(v) Verifier V_; (best) y^;
(x)--(m); (m)--(a); (m)--(b); (m)--(c); (a)--(v); (b)--(v); (c)--(v); (v)--(best);
만약 각 샘플이 독립이고 한 번의 생성이 정답일 확률을 p라고 단순화하면, N개 중 적어도 하나가 정답일 확률은
P_pass@N = 1-(1-p)^N.
예를 들어 p=0.3이면
P_pass@10 = 1-(0.7)^10 0.972.
하지만 실제 시스템에서는 후보들이 독립이 아니며, 정답 후보가 존재해도 verifier가 그것을 정확하게 선택하지 못할 수 있다. 따라서 pass@N은 실제 최종 정확도와 동일하지 않다.
방법 3: Self-Consistency
Self-Consistency는 여러 Chain-of-Thought 경로를 샘플링한 뒤 최종 답의 일치도를 이용한다.
_i p_(|x)
각 경로의 최종 답을 a_i라 하면
a^ = _a _i=1^N 1(a_i=a)
가 된다.
이는 ``서로 다른 추론 경로가 동일한 결론에 도달한다면 그 답의 신뢰도가 높다''는 아이디어이다.
보다 확률적으로는 reasoning path를 주변화하여
p(a|x) = _ p(a,|x)
를 근사한다고 볼 수 있다.
방법 4: Verifier와 Reward Model
TTS에서 생성 능력만큼 중요한 것이 후보를 평가하는 능력이다.
Outcome Reward Model(ORM)은 전체 답변의 결과를 평가한다.
R_ORM = V_(x,)
반면 Process Reward Model(PRM)은 중간 추론 단계마다 점수를 부여한다.
r_t = V_(x,r_ t)
전체 reasoning score를 예를 들어
S() = _t=1^T w_t r_t
로 정의할 수 있다.
PRM의 장점은 최종 답이 틀렸다는 사실만 확인하는 것이 아니라 어느 추론 단계에서 오류가 발생했는가를 탐색에 활용할 수 있다는 점이다.
방법 5: Search-Based Reasoning
추론을 하나의 경로가 아니라 탐색 문제로 볼 수 있다.
상태를
s_t=(x,r_1,,r_t)
라고 하면 다음 reasoning step은 action a_t가 된다.
s_t+1=f(s_t,a_t).
따라서 문제 해결을
s_0 s_1 s_T
의 탐색으로 표현할 수 있다.
Tree-of-Thought 형태
[ level distance=13mm, level 1/.style=sibling distance=42mm, level 2/.style=sibling distance=20mm, every node/.style=draw,circle,minimum size=7mm,font=, edge from parent/.style=draw,-Latex ] s_0 child node s_1 child node s_3 child node s_4 child node s_2 child node s_5 child node s_6 ;
각 상태에 value function
V(s_t) P(correct solution s_t)
을 부여하면 유망한 reasoning branch에 계산량을 집중할 수 있다.
Beam Search
beam width를 K라 하면 각 단계에서 가장 높은 점수를 가진 K개의 reasoning state만 유지한다.
B_t+1 = TopK \ V(s') : s' Expand(B_t) \.
K가 커질수록 탐색 범위가 넓어지지만 계산 비용도 증가한다.
C_beam O(KTd)
여기서 T는 탐색 깊이, d는 각 상태에서 생성하는 후보 수이다.
Monte Carlo Tree Search와의 연결
더 복잡한 TTS는 Monte Carlo Tree Search(MCTS)와 유사한 구조를 가질 수 있다.
대표적인 UCB 형태는
UCB(s,a) = Q(s,a) + c N(s) N(s,a)
이다.
첫 번째 항은 exploitation,
Q(s,a)
두 번째 항은 exploration을 나타낸다.
c N(s) N(s,a)
따라서 이미 좋은 것으로 알려진 reasoning path와 아직 충분히 탐색하지 않은 경로 사이에서 계산 자원을 배분할 수 있다.
Adaptive Test-Time Compute
모든 문제에 같은 계산량을 쓰는 것은 비효율적이다.
쉬운 문제: C(x_easy) C_
어려운 문제: C(x_hard) C_.
이를 일반화하면
C^(x) = g_( difficulty(x), uncertainty(x), B )
와 같은 compute allocation policy를 생각할 수 있다.
불확실성을 이용한 계산량 조절
모델의 출력 분포 entropy를
H(Y|x) = -_y p(y|x) p(y|x)
라 하자.
불확실성이 낮으면
H(Y|x)<_1 early stop
하고, 불확실성이 높으면
H(Y|x)>_2 additional reasoning/search
을 수행할 수 있다.
Compute-Optimal Scaling
문제 x에 계산량 c를 투입했을 때 기대 성능을
A_x(c)
라고 하자.
전체 계산 예산 B에서 여러 문제에 계산량을 배분하는 문제는
_c_1,,c_M _i=1^M A_x_i(c_i)
subject to
_i=1^Mc_i B
로 쓸 수 있다.
이상적인 경우 한 단위의 추가 compute가 가져오는 marginal gain
A_x(c) c
가 큰 문제에 먼저 계산량을 배정하는 것이 유리하다.
즉 TTS의 핵심은 단순히
More Compute
가 아니라
Right Compute for the Right Problem
이라고 볼 수 있다.
Stopping Criterion
추론을 언제 멈출 것인가도 중요한 문제다.
현재 최고 답의 품질을 Q_t, 한 단계 더 계산했을 때 기대 개선량을 Q_t+1이라 하자.
추가 계산 비용을 C_t+1이라 하면
Q_t+1 < C_t+1
일 때 중단하는 정책을 생각할 수 있다.
이를 optimal stopping 문제로 쓰면
t^ = _t .
TTS와 강화학습의 관계
TTS는 강화학습의 sequential decision making과 자연스럽게 연결된다.
(s_t,a_t,r_t,s_t+1)
구조에서
s_t: 현재 reasoning state a_t: 다음 사고 단계 또는 도구 호출 r_t: verifier/reward s_t+1: 업데이트된 reasoning state
로 해석할 수 있다.
목표는
^ = _ E_ .
즉 정확한 답뿐 아니라 계산 비용까지 고려한 reasoning policy를 학습하는 것이다.
TTS와 Agentic AI
에이전트 시스템에서는 test-time compute가 단순한 토큰 생성에 한정되지 않는다.
Think Act Observe Verify Revise
예를 들어
s_t+1 = F(s_t,a_t,o_t+1)
에서 a_t는 검색, 코드 실행, 계산기 호출, 데이터베이스 조회 등의 외부 행동이며 o_t+1은 그 결과이다.
따라서 현대적인 TTS는 내부 reasoning token뿐 아니라 도구 사용과 외부 환경 상호작용에 소비되는 계산 자원까지 포함하는 방향으로 확장될 수 있다.
TTS의 성능-비용 곡선
이상적인 TTS에서는 계산량 증가에 따라 성능이 증가하지만, 일반적으로 diminishing return이 나타난다.
간단한 모델은
A(C) = A_ - C^-, ,>0
와 같이 표현할 수 있다.
미분하면
dAdC = C^-(+1)
이므로 C가 커질수록 추가 compute의 한계효용이 감소한다.
실제 LLM에서는 더 복잡하다. 특정 전략은 계산량을 증가시켜도 성능이 정체되거나 감소할 수 있으므로, scaling law는 모델 종류, 문제 난이도, verifier 품질, sampling/search 방법에 의존한다.
Pretraining Scaling과 TTS의 비교
p35mmp55mmp55mm & Training-Time Scaling & Test-Time Scaling 확장 대상 & 파라미터, 데이터, 학습 FLOPs & 추론 토큰, 후보 수, 탐색, 검증 비용 발생 시점 & 모델 학습 전/중 & 사용자의 질의 처리 시 문제별 조절 & 어려움 & 가능 모델 파라미터 변경 & 일반적으로 필요 & 필수 아님 대표 전략 & larger model, more data & CoT, Best-of-N, SC, verifier, search 장점 & 기본 능력 자체 향상 & 필요한 문제에 선택적으로 compute 투입 단점 & 막대한 선행 학습 비용 & latency와 inference cost 증가
TTS의 대표적 실패 원인
Overthinking
이미 정답을 얻었음에도 추론을 계속하여 답을 변경하는 현상이다.
y_correct r_t+1 r_t+2 y_wrong
따라서 reasoning length 자체를 지능의 척도로 보아서는 안 된다.
Correlated Samples
Best-of-N에서 후보가 서로 매우 비슷하면 N을 증가시켜도 실제 탐색 다양성은 크게 증가하지 않는다.
이를 effective sample size 관점에서 생각하면
N_eff < N
이 된다.
Verifier Error
생성기가 정답을 만들었더라도 verifier가 오답을 높은 점수로 평가하면 최종 성능이 떨어진다.
Generator Quality Final System Quality.
즉
P_system = f( P_generator, P_verifier, P_search )
로 보아야 한다.
Latency
TTS는 성능 향상의 대가로 latency가 증가한다.
L_total = L_generation + L_verification + L_tool + L_search.
실시간 제어, 로봇, 네트워크 제어와 같이 latency constraint가 강한 전자공학 시스템에서는 중요한 제약이다.
전자공학적 해석
TTS는 제어공학의 피드백 시스템과 비슷하게 해석할 수 있다.
[ node distance=12mm, box/.style=draw,rounded corners,minimum width=27mm,minimum height=9mm,align=center, arr/.style=-Latex,thick ] (input) Problem; (model) Reasoner; (output) Candidate; (verify) Verifier; (control) Compute\;
(input)--(model); (model)--(output); (output)--(verify); (verify)--(control); (control)--(model);
이를 상태공간 형태로 추상화하면
s_t+1 &= F_(s_t,u_t,x), z_t &= G_(s_t), u_t &= (z_t,B_t),
여기서
s_t: reasoning state u_t: 추가 reasoning/search compute z_t: verifier가 측정한 confidence 또는 quality B_t: 남은 compute budget
이다.
즉 TTS를 추론 계산량을 제어 입력으로 사용하는 폐루프 제어 시스템으로 볼 수 있다.
간단한 TTS 알고리즘
[language=Python,caption=Adaptive Best-of-N TTS의 개념적 의사코드] def test_time_scaling(model, verifier, problem, budget): candidates = [] used = 0
while used < budget: candidate = model.sample_reasoning(problem) score = verifier(problem, candidate)
candidates.append((score, candidate)) used += compute_cost(candidate)
best_score, best = max(candidates)
if best_score >= ACCEPT_THRESHOLD: return best
return max(candidates)[1]
실제 시스템에서는 candidate diversity, uncertainty, remaining budget, problem difficulty 등을 함께 고려해야 한다.
통합 구조
현대적인 TTS reasoning system을 다음과 같이 표현할 수 있다.
x \_1,_2,,_N\ _generation V_(_i) _verification search / revision _additional compute y^.
좀 더 일반적으로는
y^ = _yY(x,B) R_(x,y)
로 쓸 수 있다.
여기서 Y(x,B)는 계산 예산 B 안에서 탐색 가능한 답의 집합이다.
향후 연구 방향
TTS의 중요한 연구 문제는 다음과 같다.
[label=.] Adaptive Compute Allocation 문제 난이도를 실시간으로 추정하여 계산량을 동적으로 배정한다.
Better Verifiers 최종 결과뿐 아니라 reasoning 과정의 오류를 정확히 평가한다.
Latent-Space Reasoning 모든 사고 과정을 자연어 토큰으로 표현하지 않고 hidden/latent state에서 계산하는 방법을 연구한다.
Search Efficiency 모든 reasoning path를 탐색하지 않고 유망한 경로에 계산량을 집중한다.
Tool-Augmented TTS 검색, 코드 실행, 시뮬레이션, 수학 도구를 reasoning loop에 포함한다.
Memory + TTS 장기 메모리와 현재 추론 상태를 결합하여 반복 계산을 줄인다.
Embodied / Physical AI 로봇이나 자율 시스템에서 perception--reasoning--action loop의 계산량을 실시간으로 조절한다.
핵심 정리
전통적인 AI scaling의 핵심이
More Parameters + More Data + More Training Compute
였다면 Test-Time Scaling은
More / Better Inference Compute
에 초점을 둔다.
그러나 단순히 ``오래 생각하기''가 핵심은 아니다. 실제 목표는
Generate Explore Verify Revise Stop
과정을 계산 예산에 맞게 최적으로 제어하는 것이다.
따라서 TTS를 가장 일반적으로 표현하면
^ = _ E
라고 할 수 있다.
이는 향후 reasoning model, agentic AI, world model, embodied AI에서 ``얼마나 큰 모델을 만들 것인가''뿐 아니라 ``주어진 문제에 언제, 어디에, 얼마나 많은 추론 계산량을 사용할 것인가'' 가 핵심 연구 문제가 된다는 것을 의미한다.
참고문헌
9
snell2024 C. Snell, J. Lee, K. Xu, and A. Kumar, Scaling LLM Test-Time Compute Optimally can be More Effective than Scaling Model Parameters, arXiv:2408.03314, 2024.
wang2022 X. Wang et al., Self-Consistency Improves Chain of Thought Reasoning in Language Models, arXiv:2203.11171, 2022.
zhang2025 Q. Zhang et al., What, How, Where, and How Well? A Survey on Test-Time Scaling in Large Language Models, arXiv:2503.24235, 2025.
agarwal2025 A. Agarwal, A. Sengupta, and T. Chakraborty, The Art of Scaling Test-Time Compute for Large Language Models, arXiv:2512.02008, 2025.