2020년 OpenAI의 Kaplan 논문은 컴퓨트가 10배 늘면 모델을 5배, 데이터를 2배 키우라고 했다. 2022년 친칠라는 둘 다 3.2배씩 키우라고 했다. 같은 대상을 측정한 두 논문의 지수가 0.73과 0.50으로 갈렸다. GPT-3가 175B에 300B 토큰(1.7:1)이었던 것은 전자를 따랐기 때문이다.
이 불일치는 오래 "미스터리"로 불렸다. 2024년에 답이 나왔는데, 범인이 모두가 지목하던 쪽이 아니었다. 그리고 그 과정에서 나온 부산물이 실무자에게 훨씬 값지다.
친칠라 저자들의 가설: 학습률 스케줄
친칠라 논문이 스스로 제시한 설명은 두 가지였다. 첫째, Kaplan은 모든 모델에 동일한 코사인 스케줄을 썼다 — 배치 512×1024토큰에 2.5×10⁵ 스텝 고정이니 코사인 사이클이 약 130B 토큰에 박혀 있었다. 실제 학습 토큰보다 긴 사이클을 중간에 끊으면 손실이 과대평가되고, 그러면 짧게 학습하는 작은 모델이 부당하게 불리해 보인다. 둘째, Kaplan의 모델 범위가 768~1.5B로 작은 쪽에 몰려 있어 곡률을 못 봤다.
그럴듯했다. 그런데 Porian 등이 2024년에 실제로 검증했다. Kaplan의 설정을 재현한 뒤 요인을 하나씩 제거하며 지수가 어떻게 움직이는지 추적한 것이다(16개 모델, 55M~901M, 두 개 데이터셋).
어블레이션 사다리 — 0.864에서 0.50까지
| 단계 | 지수 a | 이동폭 |
|---|---|---|
| Kaplan 재현 | 0.864 | — |
| + 마지막 레이어 FLOPs 계상 | 0.699 | −0.17 |
| + 워밍업 보정 | 0.603 | −0.10 |
| + 코사인 감쇠를 토큰 예산에 맞춤 | 0.574 | −0.03 |
| + 스케일 의존 옵티마이저 튜닝 | 0.518 | −0.08 |
최종값은 친칠라의 0.50과 0.6% 이내로 일치한다. 그런데 표를 다시 보자. 친칠라 저자들이 지목했던 학습률 스케줄의 기여는 −0.03으로 가장 작았다. 논문의 문장은 단호하다 — "학습률 감쇠를 추가하는 것만으로는 Hoffmann 등의 스케일링 법칙을 재현하기에 충분하지 않다." 심지어 이들은 학습률을 상수로 두고 하이퍼파라미터만 제대로 튜닝해도 0.50에 도달했다.
진범은 컴퓨트를 잘못 센 것이었다
가장 큰 요인은 회계 실수였다. Kaplan은 FLOPs 계산에서 모델의 마지막 레이어(언임베딩 head)를 뺐다. 어휘 크기 × d_model짜리 행렬곱이 통째로 빠진 것이다.
문제는 이 누락이 모델 크기에 따라 비대칭이라는 점이다. 실제 컴퓨트 대비 과소 추정폭이 큰 모델에서는 약 10%인데 작은 모델에서는 약 90%다. 작은 모델들이 실제보다 훨씬 싸게 계산되니, 그래프에서 작은 모델이 부당하게 효율적으로 보이고, 결국 "컴퓨트가 늘면 모델을 빨리 키워라"는 기울기가 나온다. 이 한 요인이 전체 격차(0.86→0.50)의 절반 가까이를 설명한다.
같은 해 Pearce & Song은 이걸 해석적으로 뒷받침했다. Kaplan은 비임베딩 파라미터를, 친칠라는 전체 파라미터를 셌다. 친칠라의 손실 함수를 Kaplan의 조건(소형 모델 + 비임베딩 카운트)에 넣고 시뮬레이션하면 0.74~0.78이 재현된다. 즉 두 법칙은 서로 다른 법칙이 아니라 같은 함수의 두 점근선이고, 전이점은 비임베딩 파라미터 약 10⁷ — 임베딩이 전체의 절반을 차지하는 지점이다. 임베딩 비중이 5% 아래로 내려가면 둘은 수렴한다.
한국어 모델에는 이게 남의 얘기가 아니다. 어휘 10만에 d_model 768이면 임베딩만 76.8M이다. 소형 모델 스윕에서는 임베딩이 본체보다 크다. 그래서 DeepSeek은 파라미터 수 대신 비임베딩 FLOPs/token M = 72·n_layer·d_model² + 12·n_layer·d_model·l_seq를 스케일 대리변수로 쓴다 — 소형 모델에서 최대 50%의 근사 오차를 제거하기 위해서다. 어휘가 큰 언어에서는 선택이 아니라 필수다.
부산물이 본편보다 값지다 — 실무 처방 세 가지
- 워밍업 토큰 수 = 파라미터 수로 잡아라. Kaplan의 고정 3,000스텝(≈1.57B 토큰)은 작은 모델의 학습 상당 부분을 잡아먹었다. 이 한 줄 수정이 지수를 0.10 움직였다.
- 작은 배치에서는 AdamW β₂를 올려라. 배치 128 이하에서는 β₂ = 0.99~0.999가 최적이고, 관행적인 0.95를 쓰면 소규모 모델이 부당하게 손해를 본다. 스윕을 돌릴 때 이걸 모르면 결론이 통째로 왜곡된다.
- 최적 하이퍼파라미터도 멱법칙을 따른다. Porian은 부수적으로 배치 B ∝ N^0.28~0.32, 학습률 η ∝ N^(−0.08~−0.12)를 얻었고, DeepSeek은 컴퓨트 기준으로 η = 0.3118·C^(−0.125), B = 0.2920·C^0.3271을 보고했다. 다만 배치를 파라미터 수에 묶는 이 형태를 IsoFLOP 스윕에 그대로 쓰면 안 된다 — 이유는 ⑫편에서 따로 다룬다.
이 셋을 관통하는 교훈은 하나다. "작은 모델에서 하이퍼파라미터를 튜닝하지 않으면 스케일링 지수 자체가 왜곡된다." 그리고 이 문제를 구조적으로 없애는 도구가 muP다 — 최적 하이퍼파라미터가 모델 크기에 대해 안정해지므로 작은 프록시에서 튜닝해 큰 모델로 전이할 수 있다. 40M 프록시로 GPT-3 6.7B 공개 성능을 넘겼고, 튜닝 비용은 사전학습 전체의 7%였다. 국내에서는 네이버 HyperCLOVA X THINK가 μP 사용을 명시한 드문 사례다.
2026년 판 같은 질문 — 옵티마이저를 바꾸면 지수가 움직이나
위의 이야기는 전부 AdamW 세계의 것이다. 그런데 2025~26년의 실제 변화는 Muon이다. 여기서 CTO에게 결정적인 질문이 하나 생긴다 — AdamW로 스케일링 법칙을 적합해 놓고 본 런을 Muon으로 돌리면, 그 예측이 살아남는가?
이건 취향 문제가 아니다. 손실 곡선의 지수 α가 바뀌면 법칙을 통째로 다시 적합해야 하고, 상수 A만 바뀌면 곡선이 평행이동할 뿐이라 최적 배분(N:D 비율)은 그대로다. 스윕에 쓴 돈이 날아가느냐 마느냐가 여기서 갈린다.
답은 상수 쪽이다. 옵티마이저별로 친칠라 법칙을 따로 적합하는 것 자체가 불량조건(ill-conditioned)이라는 지적이 나왔다 — (A, α)와 (B, β)가 서로 상쇄해서, "지수가 바뀌었다"는 관찰의 상당수가 적합 아티팩트라는 것이다. 처방은 지수를 공유하고 옵티마이저별 재scaling 계수만 따로 두는 것이다.
| 옵티마이저 | ρ_N | ρ_D | 실효 컴퓨트 배수 |
|---|---|---|---|
| Muon | 0.96 | 2.08 | 약 2.0배 |
| SOAP | — | — | 2.44 |
| Shampoo | — | — | 1.47 |
공유 지수는 α = 0.49 ± 0.03, β = 0.38 ± 0.04다. 해석이 깔끔하다 — Muon은 "데이터를 2배로 늘려 주는 옵티마이저"이고, 법칙의 형태는 다시 적합할 필요가 없다. 몇 개의 앵커 런으로 ρ_N과 ρ_D만 재면 된다.
Moonshot 자신의 적합값도 같은 방향이다 — Muon이 2.506·C^−0.052, AdamW가 2.608·C^−0.054로, 상수는 3.9% 차이인데 지수 차이는 0.002로 사실상 노이즈다. 독립적인 두 집단이 같은 결론에 도달했다는 게 이 항목에서 가장 믿을 만한 부분이다.
그런데 별표가 둘 붙는다.
- 배수가 규모에 따라 줄어든다. 별도 측정에서 속도 향상이 0.1B에서 1.4배 → 1.2B에서 1.1배로 빠르게 감소했다. 위의 "2배"가 큰 모델에서도 유지된다는 보장이 없고, 두 결과는 아직 화해되지 않았다.
- FLOPs 배수와 청구서 배수는 다르다. 같은 연구가 컴퓨트를 FLOPs가 아니라 8×H100 벽시계 초로 재서 다시 적합했더니 Muon의 ρ_C가 1.01이 됐다. 이득이 거의 사라진다. Muon의 Newton-Schulz 연산이 그만큼 시간을 먹는다는 뜻이다.
그래서 실무 권고는 "2.0배가 아니라 1.3~1.5배로 예산을 짜라"다. 그리고 벤더 주장의 근거 범위도 알아 둘 만하다 — Moonshot의 2배는 1.5B 이하 모델, 390억 토큰 이하의 적합에서 나왔고, 5.7T 토큰 규모의 AdamW 대조군은 없다.
부수적이지만 실무에 바로 닿는 차이가 메모리다. AdamW는 파라미터당 16바이트(BF16 가중치 2 + 그래디언트 2 + 옵티마이저 상태 12)인데, Muon은 모멘텀 하나만 들고 있어 12바이트로 25% 줄고, Shampoo·SOAP 계열은 전처리 행렬 때문에 32바이트로 두 배가 된다. 405B 모델의 체크포인트로 환산하면 6.48TB → 4.88TB(하이브리드 Muon) → 12.96TB(SOAP)다. 체크포인트 입출력이 곧 MFU이므로 이 차이는 그대로 원가다.
안정성 쪽도 짚어 두자. Kimi K2가 15.5T 토큰을 loss spike 0으로 학습했다고 보고했고 그 장치가 MuonClip이다. 다만 정확히 말하면 어텐션 로짓 폭발은 Muon이 만든 문제이지 AdamW에는 없던 문제다. 즉 MuonClip은 이득이 아니라 Muon을 쓰기 위한 필요조건에 가깝다. ⑩편에서 볼 Llama 3의 "54일간 466회 중단"과 비교하면, loss spike 제거는 기댓값이 아니라 꼬리 위험에 대한 보험으로 읽는 게 정확하다.
국내에서는 모티프가 유일하게 Muon을 쓴 것으로 확인된다 — MuonClip에 자체 병렬화를 더해 옵티마이저 스텝 처리량을 7.3배(GPU당 80 → 583 TFLOPS, 대신 메모리 4.7배)로 끌어올렸고, 경쟁 모델들이 12~36T를 볼 때 5.5T 토큰으로 학습했다. 데이터가 부족한 팀이 옵티마이저로 D축을 벌충하려 한 사례로 읽을 수 있다.
마지막으로 muP와의 관계. muP의 하이퍼파라미터 전이는 Muon에서도 살아남는다(3.7B / 폭 8192까지 확인). 단 조건이 붙는다 — Moonshot의 RMS 매칭 규칙을 함께 써야 하고, 이걸 빼면 전이가 깨진다.
그래서 20:1은 상수가 아니다
이 시리즈에서 계속 반복될 결론이 여기서 처음 나온다. 스케일링 지수는 자연상수가 아니라 여러분의 실험 설정과 데이터셋의 함수다. DeepSeek이 같은 방법론으로 데이터만 바꿔가며 적합한 값을 보라.
- 초기 사내 데이터 a = 0.450
- 개선된 사내 데이터 a = 0.524
- OpenWebText2 a = 0.578
DeepSeek의 해석은 "데이터 품질이 높을수록 컴퓨트를 모델 크기 쪽에 더 배분해야 한다"는 것이다. 좋은 데이터는 더 큰 모델을 정당화한다.
여기서 이 시리즈를 관통할 정리를 하나 하고 가자. 문헌에 "컴퓨트 최적 토큰/파라미터 비율"이라는 이름으로 최소 세 개의 숫자가 돌아다니고, 이걸 섞으면 독자가 길을 잃는다.
| 숫자 | 출처와 조건 |
|---|---|
| 20 ~ 25.6 | 친칠라·Epoch. 1B 이상 구간, 코사인 스케줄, 특정 데이터 혼합에서의 학습 손실 최적 |
| 192 | MiniCPM. 0.04B~2B의 소형 구간 + WSD 스케줄 + 자체 데이터. 소형 구간이라는 게 결정적이다 |
| 1,256 ~ 10,000 | 추론 비용을 목적함수에 넣은 답(④편) |
세 숫자는 같은 질문의 서로 다른 답이 아니라, 서로 다른 질문의 답이다. 정리하면 이렇다 — "20"은 자연상수가 아니라 (모델 크기 구간 × 학습률 스케줄 × 데이터 품질 × 목적함수)의 함수다. 192와 20이 다른 건 누가 틀려서가 아니라 네 변수 중 셋이 다르기 때문이다. 특히 소형 구간이라는 조건은 앞서 본 Pearce & Song의 전이점(비임베딩 10⁷ 부근에서 지수가 0.74와 0.50으로 갈린다)과 정확히 같은 이야기다.
즉 "우리 팀은 몇 대 몇으로 가야 하나"라는 질문에 남의 논문 계수를 복사해 답할 수 없다. 그건 남의 데이터, 남의 토크나이저, 남의 옵티마이저 설정에서 나온 숫자다. 다행히 직접 적합하는 비용이 생각보다 싸다 — 뒤에서 다룰 레시피 기준으로 IsoFLOP 스윕 실비가 대략 $1,200이다. 다음 글은 방향을 바꿔서, 애초에 왜 다들 20:1을 알고도 무시하는지를 다룬다. 답은 방정식에 빠져 있던 항 하나에 있다.
— 친칠라 법칙 시리즈 ② / 다음 글: C = 6ND는 어디서 깨지는가
댓글 없음:
댓글 쓰기
국정원의 댓글 공작을 지탄합니다.