추론 모델과 Test-Time Compute - LLM이 '생각'한다는 것
같은 문제를 줘도 어떤 모델은 곧바로 답을 뱉고, 어떤 모델은 한참 "생각"한 뒤 답을 냅니다. 후자가 요즘 말하는 추론 모델(reasoning model) 이고, 그 배경에는 test-time compute라는 개념이 있습니다.
이 글에서는 LLM이 답 전에 생각을 길게 하는 게 왜 성능을 올리는지, 그리고 언제 추론 모델을 쓰고 언제 일반 모델이 나은지를 정리합니다.
1. Chain-of-Thought - 생각을 말로 풀어쓰기
시작점은 CoT(Chain-of-Thought, 생각의 사슬) 입니다. 어려운 문제에 대해 모델에게 "바로 답하지 말고 단계별로 풀어봐" 라고 시키면 정확도가 오르는 현상입니다.
[일반 프롬프트]
Q: 사과 3개에 2400원, 5개는 얼마?
A: 4000원 ← 종종 틀림
[CoT 프롬프트]
Q: 사과 3개에 2400원, 5개는 얼마? 단계별로 생각해봐.
A: 사과 1개 = 2400 / 3 = 800원.
5개 = 800 × 5 = 4000원.
답: 4000원 ← 중간 계산을 거쳐 안정적
왜 통할까요. LLM은 토큰을 하나씩 순차적으로 생성합니다. 답을 곧장 내면 한 번의 예측에 모든 계산을 압축해야 하지만, 중간 과정을 토큰으로 풀어쓰면 각 단계가 다음 단계의 근거가 되어 사실상 더 많은 계산 단계를 확보합니다.
비유하자면, 암산으로 답을 외치는 것과 종이에 풀이를 써가며 푸는 것의 차이입니다.
2. 추론 모델은 뭐가 다른가
CoT는 원래 프롬프트 기법이었습니다. 추론 모델은 이 "길게 생각하기"를 모델 자체에 학습시킨 것입니다.
- 답을 내기 전에 내부적으로 긴 사고 과정(reasoning/thinking) 을 먼저 생성합니다.
- 이 과정에서 스스로 접근을 시도하고, 검토하고, 틀리면 방향을 바꾸기도 합니다.
- 사고 과정은 보통 사용자에게 최종 답과 분리되어 보이거나 요약되어 제공됩니다.
[일반 모델]
질문 ──▶ 답변
[추론 모델]
질문 ──▶ [긴 사고 과정: 시도 → 검토 → 수정 → …] ──▶ 답변
핵심은 이 사고 과정이 눈속임이 아니라 실제 연산이라는 점입니다. 모델이 더 많은 토큰을 생성하며 문제를 풀 공간을 확보하고, 그 자체가 성능으로 이어집니다.
3. Test-Time Compute - "추론할 때 더 계산하기"
여기서 test-time compute(추론 시 연산량) 개념이 나옵니다. LLM 성능을 올리는 축은 크게 둘입니다.
| 축 | 언제 투입 | 방식 |
|---|---|---|
| 학습 시 연산 (train-time) | 모델을 만들 때 | 더 큰 모델, 더 많은 데이터로 학습 |
| 추론 시 연산 (test-time) | 질문에 답할 때 | 답하기 전에 더 많이 생각/시도 |
전통적으로는 성능을 올리려면 더 크게 학습해야 했습니다. test-time compute의 통찰은, 모델은 그대로 두고 답할 때 연산을 더 쓰면 성능이 오른다는 것입니다.
추론 시 연산을 늘리는 대표적인 방법들:
- 더 길게 생각하기: 사고 과정 토큰을 더 많이 생성.
- 여러 번 시도 후 다수결: 같은 문제를 여러 경로로 풀고 가장 많이 나온 답 선택(self-consistency).
- 탐색: 여러 풀이 경로를 트리처럼 펼쳐 유망한 쪽을 더 파고들기.
성능
▲
│ ___/‾‾ ← 생각(연산)을 늘릴수록 정확도 상승
│ __/ (단, 어느 지점부터 완만해짐)
│ __/
└───────────────▶ 추론 시 투입 연산(생각 길이)