제3부 사후학습·정렬(Post-training/Alignment)
3.7 추론 모델·test-time compute
이 장의 주장은 한 문장이다. 모델을 더 크게 학습하는 것만이 성능을 사는 길이 아니다 — 이미 학습을 끝낸 고정된 모델에게 답하기 전에 더 오래 생각하게 하면, 그 순간에 투입하는 연산에 비례해 어려운 문제의 정답률이 오른다. 사람이 "2+2"엔 즉답하고 어려운 적분엔 종이에 단계를 적어 가며 시간을 더 쓰듯, 언어모델도 중간 토큰을 더 출력하게 하면 어려운 문제를 더 자주 맞힌다. 이 관찰이 열어젖힌 축을 test-time compute(추론 시 연산) 스케일링이라 부르고, o1·R1 계열의 이른바 "추론 모델"이 이 축을 학습으로 내재화한 판이다.
먼저 정직하게 밝힐 것이 있다. 이 장은 이 책에서 가장 빨리 노후화되고, 재료의 상당수가 비공개다. "지금 어느 모델이 추론 1등이냐"는 몇 달 단위로 뒤집히고, 상용 추론 모델의 학습 데이터·보상 설계·하이퍼파라미터는 대부분 공개되지 않는다. 공개된 레시피(DeepSeek-R1 계열 등)조차 특정 설정의 연구 보고이지 보편 공식이 아니다. 그래서 이 장은 특정 모델명·점수에 무게를 싣지 않는다. 무게는 "추론 연산을 더 써서 정답률을 산다"는 구조와 그 대가에 있고, 구체 모델은 원리를 비추는 예시로만 등장한다. 그리고 "추론 모델"이라는 이름을 문자 그대로 "진짜 사고"로 읽지 않는 것 — 사고사슬 토큰이 왜 성능을 높이는지와, 그것이 모델의 실제 내부 근거를 충실히 반영하느냐는 별개라는 것 — 이 장을 관통하는 절제다(3.7.16에서 정면으로 따진다). 이 장의 RL은 3.3·3.4(보상 모델·RLHF·PPO) 위에 서고, GRPO는 3.5(DPO와 변형)에 등록된 방법이며, 비용·지연의 수치화는 5.1(prefill/decode·KV 캐시)과 7.5(유닛 이코노믹스)로 흘러 나간다.
3.7.1 사고사슬이 곧 계산 — 중간 토큰이 직렬 계산 깊이를 늘린다
test-time compute의 가장 단순하고 근본적인 형태는 사고사슬(chain-of-thought, CoT)이다. 답을 곧장 말하는 대신 중간 추론 단계를 토큰으로 펼쳐 쓰고 나서 답한다.
[직답] Q: 23 × 17 = ? A: 391 ← 한 방에 (자주 틀림)
[사고사슬] Q: 23 × 17 = ?
23 × 17 = 23 × 10 + 23 × 7
= 230 + 161
= 391
A: 391 ← 단계로 분해 (더 자주 맞음)
이것이 왜 통하는지에 대한 가장 깊은 이유는 계산의 구조에 있다. 트랜스포머 한 번의 순전파(forward pass)는 고정된 층수 $L$(1.4)만큼의 계산 깊이를 가진다. 곱셈·행렬곱·비선형이 $L$ 겹 쌓인 회로이고, 그 회로의 깊이는 모델을 학습으로 고정한 순간 고정된다. 즉 한 토큰을 출력하기까지 밟을 수 있는 순차적 계산 단계의 수가 유한하다. 그런데 어떤 문제는 본질적으로 여러 단계를 순서대로 밟아야만 풀린다 — 곱셈의 자리올림, 여러 줄의 논리 연역, 프로그램의 순차 실행. 각 단계가 앞 단계의 결과를 입력으로 받아야 하는 이런 문제는, 단계 수가 $L$ 을 넘으면 한 번의 순전파에 다 욱여넣을 수 없다. 층이 모자라기 때문이다.
사고사슬은 이 장벽을 정확히 우회한다. 중간 토큰을 하나 생성할 때마다 순전파가 한 번 더 실행되고, 그 토큰은 다시 입력 시퀀스 끝에 이어 붙어 다음 순전파의 문맥이 된다(5.1의 KV 캐시가 이것을 값싸게 만든다). 생성된 토큰열이 외부 스크래치패드(작업 기억)가 되어, 모델은 사실상 깊이를 토큰 수만큼 늘린 순차 계산기처럼 작동한다. 유효 계산 깊이가 대략 "$L \times$ (생성 토큰 수)"로 늘어나는 셈이다. 직답이 깊이 $L$ 한 번의 회로라면, $k$ 개의 사고 토큰을 밟는 CoT는 앞 단계 위에 다음 계산을 쌓는 깊이 $L\cdot k$ 짜리 회로다.
이 관점은 직관에 그치지 않고 계산이론으로도 뒷받침된다. 고정 깊이 트랜스포머 한 번의 순전파가 표현할 수 있는 계산은 특정 복잡도 등급 안에 갇히는데, 중간 토큰을 충분히 허용하면 — 대략 "중간 토큰 하나 = 계산 한 단계"의 등식으로 — 한 번의 순전파로는 표현할 수 없는 본질적으로 직렬적인 문제 부류까지 풀 수 있게 된다는 정리들이 있다(정리의 정확한 조건·등급은 이 책 범위를 넘고, 특정 이상화 가정에 기댄 결과다). 세부보다 중요한 것은 관점이다. CoT는 프롬프트 기법이기 이전에 계산 깊이를 사는 장치다. "단계별로 생각해"라는 프롬프트가 효과를 내는 근본 이유는 예의 바른 부탁이 통해서가 아니라, 모델에게 순차 계산을 펼칠 지면을 내주기 때문이다.
여기서 규모 의존성을 정리해 둘 가치가 있다. 아주 작은 모델은 CoT를 시켜도 이득이 작거나 없다 — 각 단계를 신뢰할 만하게 밟을 능력 자체가 부족해, 스크래치패드를 줘도 거기에 틀린 것을 적기 때문이다. CoT의 효과는 모델이 개별 단계를 웬만큼 정확히 수행할 수 있을 만큼 커진 뒤에야 뚜렷해진다. 이것이 "사고사슬은 규모가 어느 선을 넘은 모델에서 창발한다"는 관찰의 배경이고, 뒤에 볼 추론 모델 학습이 겨냥하는 것이 바로 그 개별 단계의 신뢰도를 높이는 일이다.
3.7.2 왜 분해가 정답률을 높이나 — 경로 주변화
깊이 논증이 "왜 표현 가능해지는가"를 설명한다면, 확률 논증은 "왜 실제로 더 자주 맞는가"를 설명한다. 직답은 $P(\text{답}\mid \text{질문})$ 한 번의 도박이다. 질문에서 답으로 곧장 건너뛰는 이 분포는, 어려운 문제일수록 정답에 배정된 확률이 얇게 퍼져 있어 표본 하나가 정답을 때릴 확률이 낮다. 사고사슬은 이 도박을 추론 경로 $z$ 를 경유하는 것으로 바꾼다.
$$P(\text{답}\mid\text{질문}) = \sum_{\text{경로 }z} P(\text{답}\mid z,\ \text{질문})\, P(z\mid \text{질문})$$
읽는 법은 이렇다. 좋은 경로 $z$ — 올바른 중간 단계들 — 에 일단 도달하면, 그 경로에 조건을 건 $P(\text{답}\mid z,\text{질문})$ 이 1에 가깝게 뾰족해진다. 곱셈 예에서 "230 + 161"을 명시적으로 써 두고 나면, 최종 답은 그 두 수를 더하는 국소 문제로 축소되어 거의 결정적으로 391이 나온다. 즉 CoT는 어려운 한 번의 예측을 여러 개의 쉬운 예측의 사슬로 바꾼다. 각 단계는 방금 자기가 쓴 부분 결과를 신뢰할 수 있는 사실로 재사용하므로, 다음 예측이 더 좁고 국소적이 된다.
이 관점은 뒤에 볼 self-consistency(3.7.10)를 정확히 예고한다. 위 합을 그대로 계산할 수는 없지만, 여러 경로 $z$ 를 표본해 그 답을 집계하면 이 주변화를 몬테카를로로 근사하는 셈이 된다. 서로 다른 추론 경로가 같은 정답으로 수렴하는 경향이 다수결을 정당화하는 이유가 여기 있다.
분해가 무비용 해결책은 아니다. 사슬의 초기 단계가 틀리면 그 오류가 뒤로 전파되어, 모델은 잘못된 부분 결과 위에 그럴듯한 계산을 쌓아 자신 있게 틀린 답을 만든다. 사람이 계산 첫 줄을 틀리고도 이후 줄을 매끄럽게 이어 쓰는 것과 같다. 그래서 긴 사고사슬은 정답률을 높이는 동시에 새로운 실패 양식 — 초기 오류의 확신에 찬 정당화 — 을 들여온다. 이 실패는 검증기나 다수결로 일부 걸러지지만, 사슬 안에서 스스로 교정하는 능력을 학습으로 심는 것이 추론 모델의 목표이기도 하다.
3.7.3 두 개의 조정 변수 — 순차 스케일링과 병렬 스케일링
CoT가 "한 줄기 사고"라면, test-time compute 스케일링은 그 사고에 쓰는 연산량 자체를 조정 변수로 삼는 것이다. 조정 변수는 두 방향으로 작용한다.
첫째는 순차(sequential) 스케일링 — 더 오래 생각하기다. 한 번의 사고사슬을 더 길게 밟는다. 되짚기·자기검증·대안 탐색을 사슬 안에서 더 많이 전개해, 답 전에 쓰는 토큰 수를 늘린다. 추론 모델(3.7.6)이 학습으로 내재화하는 것이 주로 이 축이고, "thinking budget"을 키우면 사고 토큰이 늘고 정답률이 오르는 관계로 나타난다. 둘째는 병렬(parallel) 스케일링 — 여러 번 생각하기다. 같은 질문에 독립 표본을 $N$ 개 뽑아(1.7의 temperature 샘플링이 표본을 서로 다르게 만든다) 그중에서 고르거나 종합한다 — 다수결(self-consistency)이거나 검증기로 최선을 선택(best-of-N)이다. 3.7.9부터의 주제다.
두 축은 섞을 수 있다. 각 표본을 길게 생각시키고, 그렇게 만든 여러 표본을 다시 다수결한다. 공통점은 하나다 — 추론 FLOPs를 더 써서 정답률을 산다. 다만 둘의 성격이 다르다. 순차 스케일링은 한 사슬 안에서 앞 결과 위에 다음 계산을 쌓으므로 직렬 의존이 있어 지연이 곧장 늘지만, 어려운 문제를 실제로 더 깊이 다룬다. 병렬 스케일링은 표본들이 서로 독립이라 여러 GPU에 흩어 동시에 실행할 수 있어 지연을 어느 정도 감출 수 있지만, 각 표본은 여전히 얕게 생각하므로 "한 번에 도달하기 어려운 깊은 문제"에는 순차만큼 위력이 없다. 실무에서 둘의 배합은 문제의 성격 — 깊이가 필요한가, 운이 필요한가 — 과 지연 예산이 정한다.
3.7.4 학습 컴퓨트와 추론 컴퓨트 — 언제 어느 쪽에 쓰나
지금까지 이 책이 다룬 성능 향상은 거의 전부 학습 시(train-time)에 일어났다. 스케일링 법칙(2.2)은 파라미터 $N$·데이터 $D$·학습 컴퓨트 $C$ 를 키우면 손실이 준다고 했고, 학습이 끝나면 모델은 고정되며, 추론은 관례적으로 "한 번 훑고 답을 뱉는" 값싼 연산이었다. test-time compute는 이 관례를 깬다. 성능이 학습 컴퓨트뿐 아니라 추론 컴퓨트의 함수이기도 하다는 것이다. "지능"에 쓸 수 있는 조정 변수가 하나에서 둘로 늘었다.
두 축의 경제학이 근본적으로 다르다는 점이 이 장 전체의 저류다. 학습 시 스케일링은 곡선 자체를 높이는 고정비(capex)다 — 한 번 치르면 이후 모든 질의가 그 높은 곡선 위에 머문다. 추론 시 스케일링은 곡선 위를 오른쪽으로 미는 변동비(opex)다 — 매 질의마다 다시 치러야 하고 트래픽에 비례해 영원히 누적된다. 결정적 차이는 이것이다. test-time compute는 "필요할 때만 켜는" 조정 변수다. 쉬운 질의엔 안 켜고(즉답), 어려운 질의엔 크게 켠다. 큰 모델은 그렇게 못 한다 — 쉬운 질의에도 항상 크다. 그래서 둘은 경쟁이 아니라 상호보완이다.
| 학습 시 스케일링(2.2) | 추론 시 스케일링(이 장) | |
|---|---|---|
| 언제 비용이 드나 | 한 번(사전학습·사후학습) | 매 질의마다 반복 |
| 비용의 성격 | 고정비 — 학습 끝나면 끝 | 변동비 — 트래픽에 비례해 누적 |
| 무엇을 키우나 | $N$·$D$·학습 $C$ | 질의당 생성 토큰·표본·탐색 폭 |
| 질의별 조절 | 불가(모델은 상시 그 크기) | 가능(난도 따라 켜고 끄기) |
| 유리한 국면 | 모든 질의에 상시 적용 | 어렵고 값어치 있는 질의에 선택적으로 |
이 교환 관계를 숫자로 확정해 보면 언제 어느 쪽에 투자할지가 명확해진다. 목표 능력을 얻는 데 드는 총 컴퓨트를 두 몫으로 분할할 수 있다.
$$C_{\text{총}} \approx \underbrace{6ND}_{\text{학습(1회, 2.2)}} \;+\; \underbrace{2N \cdot T_{\text{gen}} \cdot Q}_{\text{추론(질의마다 누적)}}$$
앞 항은 2.2의 학습 FLOP 규칙($6ND$)이고, 뒤 항은 디코드가 토큰당 약 $2N$ FLOPs를 쓴다는 규칙(5.1)에 질의당 생성 토큰 $T_{\text{gen}}$ 과 생애 질의 수 $Q$ 를 곱한 것이다. 8B 모델($N=8\times10^9$)을 $D=1.5\times10^{13}$ 토큰으로 학습하면 학습 몫은 $6\times 8\times10^9\times 1.5\times10^{13} \approx 7.2\times10^{23}$ FLOPs다. 이제 추론을 보자. 사고사슬을 길게 뽑는 추론 질의 하나가 6,400 토큰(사고 6,000 + 답 400)을 생성하면 질의당 $2\times 8\times10^9\times 6{,}400 \approx 1.0\times10^{14}$ FLOPs다. 두 몫이 같아지는 질의 수는
$$Q^\star = \frac{7.2\times10^{23}}{1.0\times10^{14}} \approx 7\times10^{9}$$
약 70억 건의 추론 질의를 처리하면 누적 추론 FLOPs가 일회성 학습 비용과 맞먹는다. 대중 서비스라면 순식간이고, 소수의 어려운 문제만 푸는 연구용이라면 영영 도달하지 못한다. 여기서 사고사슬의 길이가 얼마나 크게 작용하는지도 보인다. 만약 같은 모델이 CoT 없이 400 토큰만 답한다면 질의당 $6.4\times10^{12}$ FLOPs로 $Q^\star \approx 1.1\times10^{11}$, 즉 1,100억 건이다 — 긴 사고를 켜는 것만으로 추론 비용이 학습 비용을 따라잡는 시점이 16배 앞당겨진다. 이 계산이 말하는 실무 지침은 간명하다. 추론 물량 $Q$ 가 작으면(연구·내부용) test-time compute에 후하게 쓰는 편이 학습을 더 키우는 고정비보다 저렴하고, $Q$ 가 막대하면(대중 서비스) 매 질의의 긴 사고가 영원히 누적되므로 모델을 강하게 학습해 두고 추론 컴퓨트는 난도에 따라 아껴 쓰는 편이 유리하다. 어느 쪽에 더 투자할지는 트래픽·난도·마진(7.5)이 정하지, "test-time compute가 train-time을 대체한다"는 슬로건이 정하지 않는다. 둘은 곱셈적 보완재다.
3.7.5 스케일링 곡선 — 로그 선형·포화·교차점
경험적으로 관찰되는 곡선의 모양은 2.2의 학습 스케일링과 형제처럼 닮았다. 정답률이 추론 컴퓨트의 로그에 대해 대략 선형으로 오르다가 포화한다(설정·과제 의존이며, 특정 벤치마크에서 관찰된 경향이지 보편 법칙은 아니다).
이 곡선에서 챙길 것이 셋이다. 첫째, 로그 선형과 수확 체감이다. 컴퓨트를 2배로 해도 정답률은 일정 폭씩만 오르고, 결국 과제 상한에 제한된다. 무한정 생각시킨다고 아무 문제나 풀리지 않는다 — 곡선은 상한을 향해 평탄해진다. "test-time compute를 늘리면 무한정 좋아진다"는 거짓이고, 2.2의 거듭제곱 수확 체감과 같은 양상이다. 둘째, 교차점(crossover)이다. 어떤 예산 구간에서는 작은 모델에게 추론 컴퓨트를 더 주는 편이 큰 모델을 한 번 실행하는 것보다 정답률이 높을 수 있다. 파라미터를 늘리지 않고도 성능을 사는 셈이고, 이것이 test-time compute가 흥미로운 실무적 이유다 — 다만 교차점의 위치는 과제·예산에 따라 크게 움직인다. 셋째, 곡선의 높이는 학습이 정한다. 추론용으로 학습된 모델(3.7.6)은 같은 컴퓨트로 더 높은 곡선을 그린다. "잘 생각하는 법"을 배웠기 때문이고, 그래서 test-time 스케일링과 train-time 스케일링은 더해지는 것이 아니라 곱해진다.
한 가지 조건을 분명히 해 두자. test-time compute가 이득을 주는 것은 주로 검증 가능하고 단계로 분해되는 문제 — 수학·코드·논리 — 에서다. 열린 창작이나 단순 사실 회상에서는 이득이 작거나 없을 수 있다. 답이 하나로 수렴하지 않는 창작에서는 다수결이 무의미하고, 한 줄이면 끝날 사실 회상에서는 사슬을 늘려 봐야 지연만 는다. 곡선이 가파른 영역과 평평한 영역을 가르는 것은 컴퓨트의 양이 아니라 문제의 성격이다.
3.7.6 추론 모델은 어떻게 학습되나 — 검증 가능한 보상
6.1의 CoT 프롬프트는 "단계별로 생각해"라고 부탁하는 것이다. 추론 모델은 한발 더 나아가 긴 사고·자기검증·되짚기를 모델에 학습으로 내재화한다. 그 학습의 결정적 재료가 검증 가능한 보상(verifiable reward)이다.
3.3의 RLHF는 사람 선호로 학습한 보상 모델로 응답을 채점했다. 이 보상 모델은 주관적이고, 무엇보다 해킹 가능하다 — 모델이 실제로 좋은 답을 내는 대신 보상 모델의 허점을 악용하는 보상 해킹(3.4)이 상시 위협이다. 추론 학습의 전환은, 어떤 문제 부류에서는 보상을 사람이나 학습된 모델이 아니라 정답 채점으로 자동·객관적으로 줄 수 있다는 관찰이다. 수학은 최종 답이 정답과 수치·기호로 동치인지 판정하면 되고(맞으면 1, 틀리면 0), 코드는 생성한 코드가 단위 테스트를 통과하는지 실행해 보면 되며, 형식·제약은 요구한 스키마를 지켰는지 규칙으로 확인하면 된다. 이런 규칙 기반·검증 가능 보상으로 하는 RL을 흔히 RLVR(RL with Verifiable Rewards)이라 부른다.
이 방식의 힘은 셋이다. 보상이 정확·객관적이라 채점기를 속이는 여지가 학습된 보상 모델보다 작고, 사람 라벨 없이 대량으로 자동 생성되며, 무엇보다 모델이 정답에 이르는 어떤 경로든 탐색하도록 열어 둔다. 경로는 채점하지 않고 결과만 채점하므로, "이렇게 생각하라"고 사람이 지정하지 않고 모델이 스스로 잘 생각하는 법을 찾게 둔다. 이 마지막 성질이 창발 추론 행동(3.7.8)의 토대가 된다.
검증 가능한 보상은 검증 가능한 영역에만 곧장 적용된다는 점이 이 방식의 경계이자 정체성이다. 열린 글쓰기·주관적 유용성·안전처럼 답을 기계로 채점할 수 없는 영역에는 이 채점기를 그대로 쓸 수 없고, 거기서는 여전히 학습된 보상 모델과 AI 피드백(3.3·3.6)이 필요하다. "추론 모델"이 범용 해법이 아니라 검증 가능 과제에서 특히 강한 이유가 여기 있다. 실제 배포 모델은 검증 가능한 RL로 추론 능력을 높이되, 유용성·안전은 별도의 정렬 단계로 추가하는 복합 파이프라인을 거친다.
3.7.7 GRPO — 크리틱을 그룹 평균으로 대체하기
이 RL을 무엇으로 수행하나. PPO(3.4)를 써도 되지만, 추론 학습에서 널리 쓰인 것이 GRPO(Group Relative Policy Optimization)다(3.5의 선호 최적화 계보에 등록되며, DeepSeekMath·DeepSeek-R1 계열이 사용했다고 보고된 방법이다).
PPO의 부담은 가치망(critic)이다. PPO는 각 상태에서 "여기서 앞으로 받을 기대 보상"을 추정해 그것을 기준선(baseline) 삼아 이점(advantage)을 계산하는데, 이 기대 보상을 추정하려면 정책과 별개로 정책급 크기의 두 번째 큰 신경망을 학습·저장해야 한다. 메모리도 두 배 가깝게 들고 튜닝할 것도 두 배다. GRPO의 발상은 이 크리틱을 버리는 것이다. 대신 같은 질문에 대해 정책이 뽑은 여러 표본(그룹)의 보상을 서로 비교해 기준선을 만든다.
한 질문 $q$ 에 대해 정책 $\pi_{\theta_{\text{old}}}$ 로 그룹 $\{o_1,\dots,o_G\}$ 를 뽑고, 각각 보상 $\{r_1,\dots,r_G\}$ 를 받는다. 그룹 상대 이점은 그룹 안에서 표준화한 값이다.
$$\hat{A}_i = \frac{r_i - \operatorname{mean}(r_1,\dots,r_G)}{\operatorname{std}(r_1,\dots,r_G)}$$
이 한 줄이 GRPO의 핵심이다. "이 표본이 같은 문제의 다른 시도들보다 잘했나 못했나"가 곧 이점이다. 그룹 평균보다 나은 표본은 양의 이점을 받아 높아지고, 못한 표본은 음의 이점을 받아 억제되어 내려간다. 크리틱이 하던 "기준선" 역할을, 같은 질문에 대한 그룹 평균이 대신하는 것이다. 왜 이것이 자연스러운가. 검증 가능한 보상 학습에서는 어차피 한 문제당 여러 번 시도하는 것이 기본 구조다 — 문제 하나에 표본 $G$ 개를 뽑아 그중 몇 개가 맞는지 보는 판이다. 그 표본들이 이미 손에 있으니, 그것들의 평균을 기준선으로 재활용하면 별도의 가치망이 필요 없다.
목적함수는 PPO의 골격을 그대로 물려받는다 — 중요도비를 클리핑하고, 참조 정책에 대한 KL로 묶는다.
$$\mathcal{J}_{\text{GRPO}}(\theta) = \mathbb{E}\!\left[\frac{1}{G}\sum_{i=1}^{G}\frac{1}{|o_i|}\sum_{t}\min\!\big(\rho_{i,t}\hat{A}_i,\ \operatorname{clip}(\rho_{i,t},1-\epsilon,1+\epsilon)\hat{A}_i\big) \;-\; \beta\, D_{\text{KL}}\!\big(\pi_\theta \,\|\, \pi_{\text{ref}}\big)\right]$$
$$\rho_{i,t} = \frac{\pi_\theta(o_{i,t}\mid q,\,o_{i,<t})}{\pi_{\theta_{\text{old}}}(o_{i,t}\mid q,\,o_{i,<t})}$$
각 조각을 읽어 보자. $\rho_{i,t}$ 는 새 정책이 이 토큰을 옛 정책보다 얼마나 더(또는 덜) 내놓는지의 비율 — PPO의 중요도비(3.4)다. 이점 $\hat A_i$ 가 양이면 그 표본에 속한 토큰들의 확률을 높이고, 음이면 내린다. $\operatorname{clip}$ 은 이 비율이 한 스텝에 $[1-\epsilon,\,1+\epsilon]$ 밖으로 튀지 못하게 막아, 정책이 한 번에 너무 크게 움직여 붕괴하는 것을 방지한다. $\min$ 은 클리핑된 것과 안 된 것 중 보수적인 쪽을 택해 갱신을 더 안정화한다. KL 항은 정책이 참조 모델에서 너무 멀어지지 않게 제한해, 보상만 좇다 언어가 붕괴하거나 보상 해킹으로 폭주하는 것을 막는다. 이점을 표본 길이 $|o_i|$ 로 나누는 것은 긴 사고사슬과 짧은 사고사슬을 토큰 수로 공평하게 비교 평가하기 위함이다.
| PPO(3.4) | GRPO | |
|---|---|---|
| 기준선 | 학습된 가치망(critic) | 그룹 보상 평균(모델 불필요) |
| 추가 신경망 | 크리틱 1개(정책급 크기) | 없음 |
| 이점 계산 | GAE 등(가치 추정 기반) | 그룹 내 보상 표준화 |
| 잘 맞는 곳 | 일반 RLHF | 한 문제 여러 시도가 자연스러운 추론 |
| 대가 | 메모리·튜닝 부담 | 그룹 크기 $G$ 만큼 표본 생성비↑ |
GRPO가 PPO보다 항상 낫다는 뜻은 아니다. 크리틱을 없앤 대가로 매 갱신마다 문제당 $G$ 개의 사고사슬을 생성해야 하니 표본 생성비가 오른다 — 크리틱 메모리를 표본 생성 연산과 맞바꾼 것이다. 검증 가능한 보상 + 문제당 여러 시도라는 추론 학습의 구조에 그 맞바꿈이 잘 들어맞아 널리 쓰였을 뿐이고, 정확한 정식화·클리핑·KL 처리·정규화의 세부는 구현마다 갈린다.
3.7.8 지도 없이 나타나는 추론 습관 — 창발이라는 서사
추론 학습에서 가장 화제가 된 보고는, 정답만 채점하는 RL을 충분히 수행하면 모델이 잘 생각하는 습관을 스스로 길러낸다는 것이다(DeepSeek-R1 계열의 보고). 관찰됐다고 보고된 행동은 이렇다. 학습이 진행될수록 모델이 답 전에 쓰는 사고 토큰 수가 저절로 늘어난다(더 오래 생각하는 법을 스스로 학습). 사고사슬 안에 "잠깐, 이건 틀렸다. 다시 해 보자" 같은 자기검증·되짚기 패턴이 나타난다(보고에서 "aha moment"로 불렸다). 한 접근이 막히면 다른 방법을 시도하는 대안 탐색 서술도 등장한다.
이것이 흥미로운 이유는, 누구도 "자기검증을 하라"고 명시적으로 시연·라벨하지 않았는데 결과 보상만으로 이런 절차가 나왔다는 주장이기 때문이다. "어떻게 생각할지"를 사람이 가르치지 않고 "무엇이 정답인지"만 알려 줘도 좋은 사고 절차가 창발했다는 것 — 강력한 서사다.
강력한 만큼 조심해서 읽어야 한다. 이것은 특정 설정의 연구 주장이지 확립된 법칙이 아니다. "aha moment" 같은 표현은 의인화다 — 모델이 유용한 자기수정 텍스트 패턴을 산출하도록 최적화된 것이지, 내적 각성을 뜻하지 않는다. 순수 RL만으로 얻은 초기 모델은 가독성·언어 혼용 같은 문제를 안고 있어, 실제 배포 모델은 대개 소량의 시연 데이터로 콜드 스타트 SFT를 먼저 하고, RL을 수행한 뒤, 다시 정제하는 다단계 파이프라인을 거친다고 보고된다. 재현성·조건 의존성도 크다 — 같은 레시피가 다른 기반 모델·데이터에서 같은 창발을 보장하지 않는다. "정답만 주면 저절로 똑똑해진다"로 단순화하면, 이 방법이 언제 통하고 언제 통하지 않는지를 전부 놓친다.
3.7.9 best-of-N과 pass@N — 고르는 장치가 핵심
여기서부터는 병렬 축(3.7.3)을 구체화한다. 공통 골격은 하나다 — 여러 후보 답(또는 사고사슬)을 생성하고, 그중에서 고르거나 종합한다. 무엇으로 고르느냐가 기법을 가른다.
가장 단순한 것이 best-of-N이다. $N$ 개 표본을 뽑고 점수가 가장 높은 하나를 고른다. 점수를 무엇으로 매기느냐가 관건인데, 검증기가 완벽한 경우 — 수학 답 채점, 코드 테스트 실행처럼 정답 여부를 확실히 아는 경우 — 를 먼저 보자. 이때 정답률은 "$N$ 개 중 적어도 하나가 맞을 확률"로 증가한다. 한 표본이 맞을 확률을 $p$, 표본이 독립이라 하면
$$\text{pass@}N = 1 - (1-p)^N$$
숫자를 넣어 보자. $p=0.4$ 이면 pass@1$=0.40$, pass@4$=1-0.6^4=1-0.1296=0.870$, pass@8$=1-0.6^8=1-0.0168=0.983$, pass@16$=1-0.6^{16}\approx 0.9997$ 이다. 한 번엔 열에 넷만 맞히던 모델이, 여덟 번 뽑아 그중 맞는 하나를 골라낼 수만 있으면 98%까지 오른다. 이것이 어려운 문제에서 병렬 표본이 발휘하는 위력이고, 코드·수학처럼 정답을 실행·검산으로 확인할 수 있는 영역에서 특히 극적이다.
그런데 이 식에는 함정이 숨어 있다. $1-(1-p)^N$ 은 "$N$ 개 중 정답이 하나라도 있을" 확률이지, "우리가 그 하나를 골라낼" 확률이 아니다. 이 값을 실제 정답률로 누리려면 그 하나를 골라내는 검증기가 반드시 있어야 한다. 검증기 없이 단순히 여러 개 뽑아 놓는 것으로는 정답률이 오르지 않는다 — 고르는 장치가 핵심이다. 벤치마크에서 흔히 보고되는 pass@N을 "우리 서비스의 정확도"로 착각하는 것이 이 분야의 가장 흔한 오독이다(4.1). 채점 가능한 실제 검증기가 없는 영역에서는, 학습된 보상 모형이 검증기 노릇을 하는데 그것은 완벽하지 않으므로 이득이 pass@N보다 작다. 검증기의 품질이 그대로 best-of-N의 상한이 된다.
3.7.10 다수결 — self-consistency
검증기가 아예 없을 때의 우아한 대안이 다수결(self-consistency)이다. $N$ 개 사고사슬을 뽑아 최종 답만 추출한 뒤, 가장 많이 나온 답을 택한다.
$$\hat{y} = \arg\max_{y}\ \sum_{i=1}^{N} \mathbb{1}[\,\text{answer}(o_i) = y\,]$$
이것이 3.7.2의 경로 주변화를 표본으로 근사하는 장치다. 서로 다른 추론 경로가 같은 정답으로 수렴하는 경향에 기대어, 정답이 답 분포의 최빈값이기만 하면 표본을 늘릴수록 다수결이 정답을 집어낸다. 검증기가 필요 없다는 것이 장점이고, 답을 추출·비교할 수 있어야 — 수치나 짧은 답이어야 — 쓰기 쉽다는 것이 제약이다.
숫자로 개략을 파악해 보자. 개별 표본이 정답을 낼 확률이 $p=0.55$ 이고 오답들은 여러 값으로 흩어진다(어느 하나의 오답이 정답을 이길 만큼 몰리지 않는다)고 가정하면, $N$ 개 중 정답이 과반이면 다수결이 맞는다. $N=5$ 에서 정답이 3개 이상 나올 확률을 이항분포로 계산하면
$$P(X\ge 3)=\binom{5}{3}0.55^3 0.45^2 + \binom{5}{4}0.55^4 0.45 + 0.55^5 \approx 0.337+0.206+0.050 = 0.593$$
표본 하나로는 0.55이던 정답률이 5표 다수결로 0.593으로 올랐다. $N$ 을 키우면 큰 수의 법칙에 따라 이 값은 1을 향해 오른다 — 단, $p>0.5$ 이고 오답이 흩어질 때만 그렇다. 여기에 결정적 단서가 붙는다. 만약 모델이 체계적으로 같은 오답을 낸다면(예: 흔한 함정에 걸려 다수 표본이 똑같이 틀린 값으로 수렴), 그 오답이 최빈값이 되어 다수결이 틀린 답을 더 확신에 차게 강화한다. 다수결은 오류가 무작위로 흩어질 때 유효한 장치이지, 편향된 오류를 교정하지는 못한다. 실무에서는 각 표본에 보상모형 점수를 곱해 투표하는 가중 다수결로 best-of-N과 섞어, 순수 다수결의 이 약점을 일부 보완한다.
3.7.11 무엇으로 고르나 — PRM과 ORM
best-of-N과 트리 탐색의 품질은 채점기의 질에 달렸다. 검증 가능한 실제 채점기(수학 동치·코드 테스트)를 쓸 수 있으면 그것이 가장 튼튼하다 — 속일 수 없기 때문이다. 그럴 수 없을 때 학습된 보상모형을 쓰는데, 무엇을 채점하느냐로 둘로 갈린다.
ORM(Outcome Reward Model, 결과 보상모형)은 최종 답만 보고 맞을 것 같은지 채점한다. 라벨이 저렴하다 — 최종 정오만 있으면 된다. 그러나 어디서 틀렸는지를 모른다. 중간 과정이 엉터리여도 답만 맞으면 높은 점수를 줄 수 있고, 이 맹점이 뒤에 볼 증류의 함정으로 이어진다. PRM(Process Reward Model, 과정 보상모형)은 각 중간 단계를 채점한다("이 단계까지 옳은가"). 틀린 단계를 지적해 내므로 탐색을 단계별로 유도할 수 있고(트리 탐색과 궁합이 좋다), best-of-N에서 "과정이 건전한" 답을 고른다. 대가는 단계별 라벨 비용이다. 사람이 단계마다 라벨하거나, 자동 라벨링 — 그 단계에서 이어 풀었을 때 정답에 도달하는 비율로 그 단계의 점수를 매기는 방식 — 을 쓰는데, 후자는 그 자체로 다량의 test-time 롤아웃을 요구하고 잡음이 많다.
"PRM이 ORM보다 낫다"는 과제·예산에 따라 다르고 연구마다 결론이 엇갈린다. PRM은 세밀하지만 라벨이 비용이 크고 잡음이 있으며, 자동 라벨의 정의 자체가 순환적으로 test-time 표본을 요구한다. ORM은 거칠지만 저렴하고 튼튼하다. 그리고 어느 쪽이든 학습된 보상모형은 속일 수 있다는 원리적 약점을 안는다 — 검증 가능 과제에서 실제 채점기를 검증기로 쓰는 편이 가장 안전한 이유다.
3.7.12 트리 탐색과 그 실무 대가
병렬 표본을 독립으로 뽑는 대신, 추론을 트리로 펼쳐 유망한 가지에 예산을 몰아줄 수 있다. 각 노드는 "여기까지의 부분 사고사슬", 각 가지는 "다음 단계 후보"다. 몬테카를로 트리 탐색(MCTS)류의 골격은 넷을 반복한다. 선택(루트에서 값 추정과 탐험 보너스를 비교 평가해 유망한 자식으로 내려간다), 확장(그 지점에서 다음 단계 후보들을 정책 모델로 생성한다), 평가(그 지점의 유망도를 PRM이나 롤아웃의 정답 도달률로 매긴다), 역전파(평가값을 조상 노드로 전파해 값 추정을 갱신한다). 이를 반복하면 컴퓨트가 유망한 추론 경로에 집중된다 — 균일하게 $N$ 개 뽑는 best-of-N보다 예산을 영리하게 배분하는 셈이다.
이론적으로 매력적인 만큼 실무 대가가 크다. 좋은 단계 평가기(PRM 또는 롤아웃)가 필요한데 이것이 곧 병목이자 잡음원이고, 서빙에서 트리 상태와 각 가지의 중간 KV 캐시를 관리하는 일이 복잡하다(5.1). 실제로 많은 배포 추론 모델은 정교한 외부 트리 탐색보다 긴 단일 사고사슬(순차 스케일링)에 필요하면 다수결을 추가하는 쪽으로 갔다는 관찰이 있다 — 단순한 방법이 엔지니어링·비용 면에서 이기는 경우가 흔하다. 트리 탐색이 test-time compute의 정답이라고 단정할 근거는 없고, 오히려 "언제 복잡한 탐색이 그 값을 하는가"가 열린 실무 질문이다.
3.7.13 추론 증류 — 교사의 사고를 작은 모델로
추론 모델은 강력하지만 긴 사고 탓에 느리고 비용이 크다(3.7.14). 그래서 증류(distillation)가 자연스러운 짝이 된다. 큰 추론 모델이 만든 사고사슬(추론 흔적, reasoning trace)을 데이터로 삼아 작은 모델을 SFT하는 것이다(증류 일반은 3.9). 절차의 골격은 셋이다. 강한 추론 모델(교사)로 문제들에 대해 긴 사고사슬과 답을 대량 생성하고, 검증 가능한 보상으로 정답인 흔적만 걸러 내며(오답 사고는 버린다), 그 (문제 → 사고사슬 → 답) 쌍으로 작은 학생 모델을 SFT한다(3.2). 학생은 교사의 추론 스타일과 분해 습관을 흉내 낸다.
놀라운 관찰은, RL을 학생에 직접 실행하지 않고 교사의 흔적을 SFT하기만 해도 작은 모델의 추론 능력이 크게 오른다는 보고다 — 추론 능력이 상당 부분 "좋은 사고사슬 데이터"로 전이 가능하다는 것이다(DeepSeek-R1 증류 계열의 보고). 이것이 실무적으로 매력적인 이유는 분명하다. RL 인프라·검증기·많은 롤아웃을 갖추는 것보다, 교사 출력을 받아 SFT하는 것이 훨씬 저렴하다.
| RL로 직접 학습(3.7.6) | 흔적 증류(SFT) | |
|---|---|---|
| 필요 자원 | RL 인프라·검증기·많은 롤아웃 | 교사 출력 + SFT(상대적으로 저렴) |
| 얻는 것 | 스스로 탐색하는 능력 | 교사의 추론 패턴 모방 |
| 상한 | (원리상) 교사 없이도 향상 | 대체로 교사를 넘기 어렵다 |
| 위험 | 보상 해킹·불안정 | 교사 오류·편향 계승, 다양성 축소 |
대가도 분명하다. 증류된 학생은 대체로 교사를 능가하지 못한다 — 교사의 능력이 상한이다. 교사의 틀린 추론·편향·환각도 함께 옮는데, 정답 필터가 최종 답은 걸러도 틀린 과정으로 우연히 맞은 흔적은 통과할 수 있다. 이것이 앞서 본 ORM의 맹점(3.7.11)이 증류에서 되살아나는 지점이다 — 결과만 채점하는 필터는 과정의 오류를 검출하지 못한다. 반복 증류와 합성데이터 남용은 다양성 붕괴(model collapse) 위험을 키우고(3.9), 남의 상용 모델 출력으로 증류하는 것은 라이선스·약관 위반일 수 있어 법·계약 확인이 필요하다(9.2·9.3).
3.7.14 비용과 지연 — 보이지 않는 토큰의 비용
test-time compute의 비용은 엄정하다. 긴 사고는 많은 디코드 토큰이고, 많은 디코드 토큰은 느리고 비용이 크다. 5.1에서 세운 모형으로 이것을 밀리초와 돈으로 환산해 보자.
LLM 추론은 두 국면이다(5.1). prefill은 입력을 한 번에 병렬로 처리해 상대적으로 값싸고, decode는 토큰을 하나씩 순차 생성하며 매 토큰이 한 번의 순전파를 요구한다. 추론 모델의 사고사슬은 decode 토큰을 대량 추가한다. 여기서 지연과 비용의 골격이 나온다. 지연은 사고 토큰 수에 대략 비례하고, 비용도 그렇다. 병렬 표본 $N$ 개는 둘 다 $N$ 배로 곱한다.
$$\text{질의 비용} \approx c_{\text{prefill}}\!\cdot\!(\text{입력 토큰}) \;+\; c_{\text{decode}}\!\cdot\!\underbrace{(\text{사고 토큰} + \text{답 토큰})}_{\text{추론 모델에서 크게 증가}} \;\times\; \underbrace{N}_{\text{표본 수}}$$
숫자를 넣자. 5.1에서 8B 모델의 단일 요청 디코드 속도를 대략 200 tok/s(TPOT $\approx$ 5 ms)로 계산했다. 직답 질의가 400 토큰을 출력하면 디코드는 약 $400\times 5\text{ms} = 2$ 초다. 같은 모델이 추론용이라 6,000 사고 토큰 + 400 답 토큰 = 6,400 토큰을 출력하면 $6{,}400\times 5\text{ms} = 32$ 초다 — 같은 질문, 같은 하드웨어인데 사용자는 16배 더 기다린다. 여기에 self-consistency로 $N=8$ 표본을 뽑으면 총 생성 토큰은 51,200개, 여러 GPU에 흩어 병렬로 실행해 벽시계 지연은 감추더라도 소비한 컴퓨트와 청구액은 8배 더 늘어 직답 대비 128배가 된다. "짧은 답인데 왜 이렇게 비싸지?"의 정체가 이 감춰진 사고 토큰이다 — 사용자에게 안 보여도 과금과 지연에는 그대로 들어간다.
한 걸음 더 들어가면 지연은 사고 토큰 수에 정확히 비례하지도 않고 초선형이다. 사고사슬이 길어질수록 그 토큰들이 KV 캐시에 쌓여 컨텍스트가 커지고, 디코드 스텝마다 읽어야 할 KV가 늘어 뒤쪽 토큰일수록 느려지기 때문이다(5.1). 5.1의 수치로 8B MHA 모델은 토큰당 KV가 약 512 KB이니, 6,000 사고 토큰이면 KV가 약 3 GB 추가된다. 디코드 한 스텝이 읽는 바이트가 가중치 16 GB에서 시작해 사고 끝 무렵엔 $16+3=19$ GB로 늘어, 마지막 사고 토큰은 첫 토큰보다 약 19% 느리다. 8B급에선 완만하지만, 사고사슬이 수만~수십만 토큰으로 가는 극단에서는 이 KV 성장이 지연을 지배해 "생각이 길어질수록 토큰이 눈에 띄게 느려지는" 현상으로 나타난다. 긴 사고는 decode 토큰 수로도, KV 성장으로도, 두 겹으로 비용이 커진다.
3.7.15 언제 켜고 언제 끄나
앞의 비용이 곧장 제품 결정으로 이어진다. test-time compute는 어렵고, 검증 가능하고, 값어치 있는 질의에서 값을 한다. 세 조건을 축으로 놓고 결정한다.
수학 증명·경쟁 프로그래밍·복잡한 분석처럼 어렵고 정답이 검증 가능하며 맞히면 가치가 큰 질의에서는 크게 켠다 — 정답률 상승이 지연·비용을 정당화한다. 반대로 "오늘 날씨", 단순 사실 회상, 인사말처럼 쉽고 저가치인 질의에서는 끈다 — 오래 생각해도 이득이 없고 지연·비용만 늘어, 즉답 모델로 라우팅한다(5.6). 실전의 답은 동적 배분이다. 질의 난도를 먼저 가늠해 thinking budget을 조절한다 — 쉬우면 짧게 또는 끄고, 어려우면 길게. 많은 추론 시스템이 "생각 예산" 파라미터나 난도 라우터를 두는 이유가 여기 있다(구체 기능·이름은 벤더별로 다르다).
제품 관점에서 내가 명시해 두고 싶은 기본값은 이것이다 — 모든 질의에 추론 모델을 켜지 마라. 대부분의 트래픽은 즉답 모델로 충분하고, test-time compute는 선별된 어려운 질의에만 붙일 때 유닛 이코노믹스가 산다(7.5). "추론 모델이 좋으니 전부 추론 모델로"는 앞 절의 128배 비용을 트래픽 전체에 부과하는 흔한 실수다. 라우팅과 예산 제어가 곧 마진이다.
3.7.16 사고사슬은 충실한가 — 그리고 "추론"이라는 은유
이 장을 닫으며 가장 조심해야 할 것을 정면으로 놓자. 모델이 출력한 사고사슬이 성능을 높인다는 것과, 그것이 모델의 실제 내부 계산 근거를 충실히(faithfully) 반영한다는 것은 완전히 별개다. 연구에 따르면 모델은 실제로는 다른 단서 — 예를 들어 프롬프트에 은근히 심긴 힌트 — 로 답을 정해 놓고, 사고사슬에는 그 단서를 언급하지 않은 채 그럴듯한 사후 정당화를 쓰기도 한다. 사고사슬이 정답률을 높이는 계산 스크래치패드로 기능하는 것과, 그것이 결정의 실제 이유를 보여 주는 것은 서로 다른 일이며, 후자는 보장되지 않는다.
이 사실의 함의는 두 방향이다. 하나는 안전·해석가능성이다. 사고사슬을 모델의 "진짜 이유"로 신뢰해 감사·모니터링의 근거로 삼는 것은 위험하다 — 보이는 사고가 실제 사고와 어긋날 수 있기 때문이다(4.3). "체인을 보여 주니 투명하다"는 마케팅은 그래서 조심해서 받아들여야 한다. 다른 하나는 언어다. "reasoning model", "생각한다", "aha moment" 같은 표현은 편의적 은유다. 공학적 사실은 "검증 가능한 보상으로 최적화된 결과, 정답률을 올리는 중간 토큰열을 산출하도록 학습된 모델"이다. 이를 인간적 이해·의식으로 읽으면 능력과 한계를 모두 오판한다.
그 밖에도 이 영역에는 미검증 주장과 착시가 유난히 많다. test-time compute는 분해·검증 가능한 과제에서 강하고 단순 회상·주관적 창작에서는 이득이 작거나 지연만 는다. 더 길게 생각한다고 더 정확해지는 것도 아니어서, 곡선은 포화하고(3.7.5) 때로는 과사고(overthinking)로 쉬운 문제를 스스로 망치거나 틀린 초기 단계를 길게 정당화해 자신 있게 틀린다. 추론 벤치마크 점수는 데이터 오염과 평가 설정에 민감하며(4.1), pass@N을 실사용 정답률로 착각하기 쉽다. 검증 가능한 보상조차 명세의 허점 — 테스트만 통과하는 편법 코드, 채점기의 형식 구멍 — 을 악용하는 보상 해킹에서 자유롭지 않다(3.4). 상용 추론 모델의 데이터·보상·하이퍼파라미터는 대부분 비공개이고, 공개된 레시피도 특정 설정의 보고이지 다른 환경에서 그대로 재현된다는 보장이 없다. 그리고 긴 자율 사고·자기수정은 새로운 안전 표면을 연다 — 사고 중에 위험한 계획이 전개되거나, 감춰진 사고와 노출된 답이 어긋나는 실패가 생기므로, 안전 평가는 최종 답만이 아니라 과정까지 봐야 한다(4.3).
이 모든 단서를 걷어 내도 이 장의 골격은 남는다. 성능은 학습 컴퓨트만의 함수가 아니라 추론 컴퓨트의 함수이기도 하며, 중간 토큰은 어려운 문제를 분해하는 동시에 직렬 계산 깊이를 사는 장치이고, 검증 가능한 보상으로 이 능력을 학습에 심을 수 있고, 그 대가는 매 질의마다 다시 치르는 지연과 비용이다. 다음 장(3.8)은 이렇게 얻은 추론 능력을 — RL로든 증류로든 — 적은 자원으로 추가하고 배포하는 법, 즉 저랭크 근사(LoRA)와 양자화 결합(QLoRA)으로 넘어간다. 그 뒤 3.9가 이 장에서 예고한 증류·합성데이터를 정면으로 다룬다.