(i) 레시피의 시대: ScaleRL과 Olmo 3
부품마다 고친 변종이 쌓였다. 연구실마다 몇 가지를 골라 조합했는데, 계산량 수천 GPU 시간짜리 작은 실험에서 고른 조합을 수만 GPU 시간짜리 본 학습에 그대로 쓰곤 했다. 작은 실험에서 좋았던 조합이 계산량을 백 배로 늘려도 좋을까?
어떤 조합이 규모를 키울 때 가장 좋은지 체계적으로 재는 연구가 나왔다.
ScaleRL(Khatri et al., “The Art of Scaling Reinforcement Learning Compute for LLMs”, arXiv:2510.13786, 2025년 10월, Meta 등)은 40만 GPU 시간 이상의 실험으로 RL 성능이 계산량에 따라 시그모이드 곡선(S자 곡선)을 그린다고 보였다.
곡선은 두 숫자로 요약된다 — 도달할 수 있는 천장 A와, 거기까지 가는 효율 B(와 중간점 Cmid). 핵심 발견: 손실을 어떻게 모으고 어드밴티지를 어떻게 정규화하는지, 어떤 순서로 문제를 내는지는 주로 효율을 바꾸고 천장은 거의 바꾸지 않는다. 천장을 바꾸는 것은 손실 함수의 종류(CISPO·GSPO가 DAPO보다 높았다)와 정밀도 같은 선택이었다. 출력층을 FP32로 계산하게 바꾸자 천장이 0.52에서 0.61로 올랐다. 최종 레시피에는 이 장의 부품들이 거의 다 들어 있다.
| ScaleRL의 부품 | 이 장에서 다룬 자리 |
|---|---|
| CISPO 손실 | (d) 가중치를 자른다 |
| 학습을 기다리지 않고 따로 도는 생성(PipelineRL) | (h) 샘플을 뽑은 정책이 뒤처지는 문제 |
| 프롬프트 단위 손실 집계 | (a)·(b) 평균 내는 방식 |
| 배치 단위 어드밴티지 정규화 | (a) 표준편차로 나누기 |
| 출력층 FP32 | (h) 학습과 생성의 불일치 |
| 시그널 없는 그룹 제거 | (b) 동적 샘플링(다시 뽑지는 않고 빼기만) |
| 정답률 0.9 이상 문제 영구 제외 | (b) 쉬운 문제가 늘수록 비싸지는 샘플링 |
| 강제 길이 중단 | (b) 과도한 길이 처리 |
8B 모델 하나를 10만 GPU 시간까지 돌려, 5만 시간까지의 곡선으로 예측한 값과 실제 성능이 맞는 것을 확인했다.
Olmo 3(Ai2, arXiv:2512.13961, 2025년 12월)의 OlmoRL은 완전 공개 모델 쪽의 레시피다: 시그널 없는 그룹 제거, 배치가 찰 때까지 계속 뽑는 능동 샘플링(DAPO 동적 샘플링의 효율적 버전), 토큰 단위 손실, σ 정규화 제거, Clip-Higher, 잘라낸 임포턴스 샘플링, KL 없음. 인프라 쪽(연속 배칭, 생성 중 파라미터 갱신)으로 RL 속도를 약 4배 높였다.
두 레시피를 GRPO 원형과 나란히 놓으면, 원래 부품 중 그룹 베이스라인 말고는 거의 남지 않았다는 것을 알 수 있다.
지도: 무엇이 무엇을 바꿨나
| 변종 | 평균 방식 | 어드밴티지 | 비율 단위 | 클리핑 | KL | 시스템 |
|---|---|---|---|---|---|---|
| GRPO (2024.02) | 응답별 |
토큰 | 대칭 |
— | ||
| Dr. GRPO (2025.03) | 상수 | 토큰 | 대칭 | 없음 | — | |
| DAPO (2025.03) | 토큰 단위 | 토큰 | 비대칭 0.2/0.28 | 없음 | 동적 샘플링 | |
| VAPO (2025.04) | 토큰 단위 | 비평가 + GAE | 토큰 | 비대칭 | — | 가치 모델 워밍업 |
| CISPO (2025.06) | 토큰 단위 | 토큰 | 가중치를 자름 | — | — | |
| GSPO (2025.07) | 응답 | 응답 (기하평균) | 응답 단위, 좁게 | — | Routing Replay 불필요 | |
| GMPO (2025.07) | 기하평균 | 토큰 | 로그 공간, 넓게 | — | — | |
| SAPO (2025.11) | 응답별 | 토큰 | 부드러운 게이트 | — | — | |
| DeepSeek-V3.2 (2025.12) | — | — | 토큰 | + 시퀀스 마스킹 | 치우침 없는 추정 | Keep Routing / Sampling Mask |
| RLOO / ReMax / REINFORCE++ | — | 자기 제외 평균 / 그리디 답 / 배치 정규화 | — | 없음 / 없음 / 있음 | — | — |
("—"는 원형 GRPO에서 그 부품을 특별히 바꾸지 않았거나 해당 논문이 초점을 두지 않았다는 뜻이다.)
graph TD
RF["REINFORCE + 베이스라인"] --> PPO["PPO"]
RF --> RLOO["RLOO · ReMax<br/>2023–24"]
PPO --> GRPO["GRPO<br/>2024.02"]
RLOO -.-> GRPO
GRPO --> DR["Dr. GRPO<br/>나누기 제거"]
GRPO --> DAPO["DAPO<br/>클리핑·샘플링·토큰 손실"]
GRPO --> GSPO["GSPO · GMPO<br/>비율의 단위"]
GRPO --> CISPO["CISPO<br/>가중치를 자름"]
GRPO --> RPP["REINFORCE++<br/>배치 정규화"]
PPO --> VAPO["VAPO<br/>비평가의 귀환"]
DAPO --> ENT["엔트로피 제어<br/>Clip-Cov · KL-Cov · ProRL"]
GSPO --> SAPO["SAPO<br/>부드러운 게이트"]
GRPO --> SYS["학습-생성 불일치<br/>TIS · MIS · FP16 · R3"]
SYS --> V32["DeepSeek-V3.2"]
CISPO --> SCALE["ScaleRL · Olmo 3<br/>레시피"]
DAPO --> SCALE
SYS --> SCALE
class GRPO m-blue
class GRPO m-strong
class SCALE m-orange
class SCALE m-strong
DPO 변형들의 가계도에서 보이던 "빼기의 미학"이 여기서도 반복된다. σ를 빼고, 길이 나누기를 빼고, KL을 뺀다. 동시에 반대 방향도 있다 — 비평가를 다시 넣고(VAPO), 정밀도를 올리고(FP16), 생성 엔진의 상태를 학습에 넣는다(Keep Routing). 규모가 커질수록 알고리즘의 단순함과 시스템의 정확함이 함께 요구된다.
문제 13 — 작은 실험의 승자
두 레시피의 곡선이 위 식을 따른다고 하자(지어낸 값이다). 둘 다 학습 전 정답률










정리 (가) 1,000시간: X 0.264, Y 0.252. 5,000시간: X 0.476, Y 0.405. (나) 10만 시간: X 0.520, Y 0.599. (다) 약 1만 3천 GPU 시간에서 뒤집힌다. 작은 실험의 순위는 효율 B와 중간점이 정하고, 큰 규모의 순위는 천장 A가 정한다. 그래서 작은 실험에서는 지금의 정답률이 아니라 곡선을 맞춰 추정한 천장으로 고른다.