2026년 오픈 모델은 어떻게 새 능력을 익힐까 — 1부: on-policy distillation으로의 전환

지난 한 해 오픈웨이트 모델이 쏟아지는 걸 지켜봤다면, pre-training(사전학습) 레시피가 하나로 수렴하는 흐름을 느꼈을 거예요. 다들 웹을 긁고, 필터링하고, 다음 토큰을 예측하는 식이죠. 그런데 날것의 사전학습 모델을 실제로 말이 통하는 무언가로 바꿔주는 post-training(사후학습) 레시피는 여전히 지저분하고 베일에 싸여 있었어요. 이 2부작은 그 지저분한 영역에서 2026년에 딱 하나 바뀐 지점을 다뤄요. 직접 모델을 학습시키는 분이든, 그냥 여러분이 쓰는 모델이 어떻게 만들어졌는지 궁금한 분이든, 알아둘 만한 변화예요.
전체 이야기를 한 문장으로 줄이면 이래요. 점점 더 많은 프런티어 오픈 랩이 하나의 모델에게 모든 걸 한꺼번에 가르치려는 시도를 접고, 대신 단일 능력을 가진 여러 모델을 만든 다음 하나로 융합해요. 갈수록 on-policy distillation(OPD, 온-폴리시 증류)이라는 기법을 쓰면서요. 랩들이 쓰는 유일한 방법은 아니지만, 가장 빠르게 번지고 있는 방법이에요. 파트 1(이 글)은 이게 무슨 뜻인지, 왜 통하는지를 실제 수식까지 짚어가며 밑바닥부터 설명해요. 파트 2는 누가 이걸 하는지, 각자의 레시피가 어떻게 다른지, 그리고 여러분이 빌리는 GPU에는 어떤 의미인지 다뤄요.
배경이 명확해야 그 보상이 제대로 와닿으니, 처음부터 차근차근 가볼게요.
post-training이 대체 뭔지, 그리고 딱 하나 어려운 부분
사전학습된 모델은 다음 토큰 예측기(next token predictor)예요. post-training은 그걸 쓸모 있게 만들려고 그 뒤에 하는 모든 작업이고요. 지시를 따르게 하고, 수학 문제를 추론으로 풀게 하고, 올바른 코드를 짜게 하고, 도구를 쓰게 하는 것이죠. 이 분야는 필요한 재료에 관해서는 어느 정도 합의가 됐어요. 먼저 supervised fine-tuning (SFT)(지도 미세조정), 좋은 답변 예시를 보여주고 모델이 그걸 흉내 내게 해요. 그다음 reinforcement learning (RL)(강화학습), 구체적으로는 RL with verifiable rewards (RLVR)(검증 가능한 보상 기반 RL). 이 이름을 붙인 건 Allen Institute for AI의 Tülu 3(arXiv 2411.15124)인데, "모델의 완성 결과가 올바르다고 검증될 때만 보상을 받는" 방법이에요. 이 레시피 대부분이 사용하는 GRPO 알고리즘은 몇 달 앞서 DeepSeek의 DeepSeekMath(arXiv 2402.03300)에서 나왔고, verifiable-reward RL은 그 뒤 DeepSeek-R1이 대규모로 대중화했어요. (현재는 DAPO, GSPO, CISPO 등 GRPO 변형이 많이 나왔어요) 모델에게 수학 문제를 풀리고, 답을 확인하고, 맞으면 보상을 주는 거예요. RLVR 덕분에 모델은 답을 검증할 수 있는 일, Tülu 3의 표현으로는 "수학과 정밀한 지시 이행"을 잘하게 됐어요.
이런 식으로 능력 하나를 학습시키는 건, 2026년 기준으로 꽤 잘 이해되어 있어요. 어려운 건 애초에 능력 하나가 아니었어요. 여러 개를 합치는 것이었죠.
구체적으로 그려볼게요. RLVR로 경시대회 수학에 뛰어난 모델을 만들었어요. 따로 SWE-bench 스타일의 소프트웨어 이슈를 잘 푸는 모델도 만들었고요. 세 번째로, 까다로운 서식 지시를 완벽하게 따르는 모델도 있어요. 각각이 specialist(도메인 전문가 모델)예요. 그런데 사용자는 이 셋을 다 잘하는 하나의 모델을 원해요. 합쳐 놓은 게 각 부분보다 나빠지지 않으려면, 세 모델을 어떻게 하나로 합쳐야 할까요?
이 질문, 앞으로 integration problem(통합 문제)이라 부를 이 문제야말로 2026년의 전환이 진짜로 겨냥하는 지점이에요. 그리고 이게 어려운 이유는, 뻔히 떠오르는 해법들이 저마다의 방식으로 전부 무너지기 때문이에요.
integration problem은 네 가지 방식으로 실패해요
Xiaomi LLM Core 팀의 MOPD(Multi-teacher On-Policy Distillation) 논문(arXiv 2606.30406)은 이 시리즈가 다루는 기법을 정식화한 논문이자, 아래 나오는 모든 ablation(제거 실험) 수치의 출처예요. 이 논문은 각각이 어디서 무너지는지를 펼쳐 보여줘요. 천천히 읽을 가치가 있어요. 대안들이 왜 실패하는지 이해하고 나면, 승리하는 방법이 필연처럼 보이거든요.
각 specialist가 같은 시작 체크포인트에서 갈라져 나왔다고 해볼게요. 이들을 융합하는 방법은 다음과 같아요.
Parameter merging — 가중치를 평균 내기. 세 모델의 수치 가중치를 그냥 평균 내거나, 베이스로부터의 차이를 더해요. 공짜라서 끌려요. 학습도 없고, 오프라인으로 몇 분이면 끝나요. 문제는 뉴럴 네트워크의 가중치가 "두 좋은 모델의 중간 지점"이 그 자체로 좋지만은 않다는 거예요. 가중치 공간에서 평균을 내면 불안정하고, specialist가 하던 걸 다시 재현해내지 못하는 경우가 흔해요. MOPD 논문이 통합 방법을 정면으로 비교했더니, 선형 가중치 병합은 0.328점, 더 영리한 "task arithmetic" 병합은 0.857점이 나왔는데, 같은 태스크에서 on-policy distillation이 찍은 0.937에는 둘 다 한참 못 미쳤어요. 능력이 그냥 바닥에 버려지는 거예요.
Off-policy distillation — 교사의 답을 흉내 내기. 각 specialist에게 좋은 풀이를 잔뜩 만들게 하고, 모아서, student가 그걸 베끼도록 미세조정해요. 교사의 출력을 그대로 따라 하는 지도 미세조정이죠. 이건 dense(밀집)한 학습 신호를 줘요. student가 모든 토큰에서 피드백을 받으니까요. 여기까진 좋아요. 하지만 exposure bias(노출 편향)라는, 미묘하지만 치명적인 결함이 있어요. student는 오직 교사의 궤적으로만 학습하는데, 그 궤적은 student가 스스로 만들어낼 궤적과는 살짝 달라요. 추론 시점에 student는 어쩔 수 없이 조금씩 벗어나고, 교사가 보여준 적 없는 상태에 이르러, 자기가 실수한 곳에서는 배워본 적이 없으니 오차를 눈덩이처럼 키워요. 경로를 따라 하는 법은 배웠지만, 경로에서 벗어났을 때 되돌아오는 법은 못 배운 거예요.
Mix-RL — 하나의 큰 공동 RL 실행. 수학, 코드, 지시 이행을 단일 강화학습 작업에서 함께 학습시켜요. 이건 학습을 on-policy로 유지해서 모델이 자기 시도로 배우니 exposure bias가 풀려요. 하지만 도메인끼리 서로 간섭해요. 수학 정확도를 끌어올리면 코드 정확도가 딸려 내려가고, 코드를 고치려고 튜닝하면 이번엔 수학이 미끄러져요. 실무자들은 이걸 see-saw effect(시소 효과)라고 불러요. 더 골치 아픈 건, 이게 거대한 하나의 결합된 작업이라는 점이에요. 한 도메인의 보상 함수나 데이터 믹스를 바꾸면 전체 실행을 처음부터 다시 돌려야 해요.
Cascade RL — 한 도메인씩 순차적으로. 지시로 RL을 하고, 그다음 수학, 그다음 코드, 이런 식이에요. 이것도 on-policy고요. 하지만 새 단계마다 앞 단계를 갉아먹어서(고전적인 catastrophic forgetting) 길고 취약한 실행을 붙들고 씨름하다가, 이미 비용을 치르고 힘겹게 끌어올린 능력이 쇠퇴하는 걸 지켜보게 돼요.
한 발 물러서 보면 패턴이 선명해요. 모든 방법이 여러분이 원하는 세 가지 속성 중 최소 하나를 놓치고 있어요.
- dense 신호(끝에 점수 하나가 아니라 모든 토큰에 피드백),
- on-policy 학습(모델이 자기 출력으로 배우니 추론 시 견고함),
- 그리고 parallelizable 생산(specialist를 서로 막지 않고 독립적으로, 병렬로 만들 수 있음).
| 통합 방법 | dense 신호 | on-policy | 병렬화 가능 | 실패 양상 |
|---|---|---|---|---|
| Parameter merging (가중치 평균) |
✗ | — | ✓ | 가중치 공간 융합이 불안정; specialist가 재현되지 않음 |
| Off-policy distillation (교사 답에 SFT) |
✓ | ✗ | ✓ | exposure bias / 오차 누적 |
| Mix-RL (하나의 공동 RL 실행) |
✗ | ✓ | ✗ | see-saw / 도메인 간섭 |
| Cascade RL (한 도메인씩 순차) |
✗ | ✓ | ✗ | catastrophic forgetting |
| On-policy distillation | ✓ | ✓ | ✓ | — |
그리고 이 간섭은 랩들이 실제로 측정하는 값으로도 확인돼요. Meituan이 2025년에 LongCat-Flash-Thinking을 만들 때, 모델이 각 도메인에서 답변에 토큰을 몇 개 쓰는지 기록했는데, 분포가 거의 안 겹쳐요. 일반 채팅은 수천 토큰 안에 끝나는데, 코딩 풀이는 5만 토큰 가까이 늘어져요(Fig 1). 이걸 전부 하나의 공유 RL 실행에 밀어 넣으면, gradient 스텝마다 서로 양립 불가능한 목표들이 모델을 동시에 잡아당겨요. 논문은 그 결과를 negative transfer(부정적 전이)라고 불러요. 단일 혼합 실행이 스스로와 싸우는 이유이고, 이건 데이터로 측정되는 구조적 문제예요.

Parameter merging은 어느 정도 dense하지만 off-policy이고 불안정해요. Off-policy SFT는 dense하지만 off-policy예요(exposure bias). Mix-RL과 cascade RL은 on-policy지만 sparse(시도당 보상 하나)하고 병렬화도 안 돼요. 모든 걸 하나로 묶어버리니까요. dense하면서 on-policy이고 병렬화까지 동시에 되는 방법은 딱 하나예요. 그게 on-policy distillation이고, 이 글의 나머지는 왜 그 조합이 운 좋은 우연이 아니라 핵심 그 자체인지에 관한 거예요.
on-policy distillation이 실제로 무엇인지
먼저 직관. 누군가를 코칭한다고 생각해 봐요. 위의 off-policy SFT는 학생에게 풀이집을 한 무더기 건네고 그 스타일을 외우라고 하는 것과 같아요. 맞아 보이는 답을 재현하는 법은 배우지만, 살짝 다른 문제를 만나 첫 발부터 잘못 떼는 순간 길을 잃어요. 아무도 그 학생이 직접 푸는 걸 지켜본 적이 없으니까요. on-policy distillation은 정반대예요. 학생이 자기 방식대로 문제를 풀게 하고, 전문가가 어깨너머로 지켜보며 한 줄 한 줄 쓸 때마다 채점해요. "그 단계는 좋아, 저기가 네가 틀린 곳이야." 학생은 자기가 실제로 밟은 바로 그 경로에 대해 상세한 피드백을 받아요.
메커니즘. on-policy distillation은 2025년 10월 Thinking Machines Lab이 깔끔하고 일반적인 레시피로 정리해 발표했어요(reverse-KL·on-policy 아이디어 자체는 GKD, MiniLLM 같은 이전 연구로, 대략 2023~24년까지 거슬러 올라가요). 세 단계예요.
- student가 자기 궤적을, 즉 프롬프트에 대한 자기 시도를 샘플링해요.
- 더 강한 교사가 그 궤적의 모든 토큰을 채점해요. 이게 핵심이에요. 교사는 아무것도 생성하지 않아요. student가 이미 써놓은 토큰들에 대해 forward pass를 딱 한 번 돌려서, 각 위치마다 그 토큰이 교사 모델 하에서 얼마나 확률적이었는지를 알려줘요. 디코딩이 아니라 채점이에요. (그래서 파트 2에서 밝혀지듯이, 교사를 서빙하는 비용이 싸요. forward만 하는 작업이라, 느린 토큰-바이-토큰 생성이 없거든요.)
- student는 자기 궤적을 교사 하에서 더 확률적으로 만들도록 업데이트돼요. 형식적으로는, student와 교사 사이의 per-token reverse KL divergence(토큰별 역방향 KL 발산)를 최소화하는 것이에요.
풀어 쓰면, 목적함수는 student가 만든 모든 토큰에 대해, 그 위치에서 student와 교사의 다음-토큰 분포 사이 KL 발산을 합한 것이에요.

이 기댓값은 student 자신의 샘플을 대상으로 하고(y ∼ π_θ), 그게 "on-policy" 부분이에요. 안쪽의 D_KL(π_θ ‖ π_T)가 "distillation" 부분이고요. 아이디어는 이게 전부예요. 나머지는 전부 그 KL을 어떻게 계산하고 어떤 교사를 겨눌지에 대한 선택이에요.
왜 하필 이 발산일까요? 여기가 사람들이 자주 헷갈리는 부분인데, 제대로 짚고 갈 가치가 있어요. KL 발산은 대칭이 아니고(D_KL(p ‖ q)는 D_KL(q ‖ p)와 다르죠) 방향이 어마어마하게 중요해요.

교사 분포 p에 서로 떨어진 좋은 답 두 개(두 개의 mode)가 있고, 여러분의 student q는 더 단순해서 사실상 한 형태에만 전념할 수 있다고 해봐요. forward, reverse 각 방향의 KL은 student에게 무엇을 하라고 요구할까요?
- Forward KL,
D_KL(p ‖ q)는p로 가중돼요. 교사가 특정 토큰의 확률을 양수로 예측하는데 student는 거의 0으로 예측하는 곳마다 student를 가장 세게 벌해요. 그 벌을 피하려면 student는 교사가 어느정도 양수로 예측하는 모든 토큰에 어느 정도는 확률을 둬야 해요. 그래서 mode-covering(모드 포괄)이 되어, 두 mode에 자기를 펴 바르고, 필연적으로 그 사이 빈 골짜기에도 펴 발라요. 이게 바로 평범한 최대우도 SFT가 하는 일이고, 지나치게 몸을 사린 모델이 이따금 두 좋은 답의 흐릿한 평균을 내놓는 이유예요. - Reverse KL,
D_KL(q ‖ p)는q로 가중돼요. student 자신이 확률을 예측한 토큰에서 teacher는 동의하지 않을때 (teacher는 해당 토큰에 확률을 거의 0으로 생각할때) student를 벌해요. student는 자기가 전념하는 곳에서 교사가 동의해주기만 하면, 교사의 mode 중 student가 고르지 않은 다른 하나를 통째로 무시해도 돼요. 이게 student를 mode-seeking(모드 추종)으로 만들어요. 좋은 답 하나를 골라 날카롭게 다듬는 거죠.

추론과 코딩에서는 mode-seeking이 정확히 맞아요. 정답이 있으니, student가 그럴듯해 보이는 온갖 변형에 걸쳐 몸을 사리는 게 아니라 그 정답을 만들어내는 쪽으로 수렴하길 바라니까요. on-policy distillation은 일부러 reverse KL을 써요. 뒤에서 다시 나오니 하나만 기억해 두세요. 이건 student가 이미 교사와 공유하는 mode 위로 날카로워질 때만 안전해요. 교사가 student로선 도달할 수 없는 mode 쪽으로 밀면, 바로 그 날카로워짐이 collapse(붕괴)로 뒤집혀요. 이게 바로 이 파트 끝 무렵에 유도할 안정성 조건(stability condition)이에요. (Thinking Machines Lab은 이 목적함수가 "게이밍"하기 어렵다는 실용적인 점도 짚어요. 낮은 reverse KL은 교사 하에서의 높은 확률에 곧바로 대응하니까, 학습된 보상 모델과 달리 악용 가능한 사각지대를 가진 별도의 채점 네트워크가 없어요.)
왜 dense가 sparse를 이기는가: 효율은 우연이 아니라 구조예요
이제 직관의 후반부예요. 왜 토큰별 피드백이 RL의 시도당 보상 하나에 비해 그렇게 큰 차이를 만들까요?
직관. 에세이를 두 방식으로 채점한다고 상상해 봐요.
- 방식 하나: 전체를 읽고 맨 위에 숫자 하나를 써요, 71/100.
- 방식 둘: 문장마다 표시를 남겨요. 이 문장은 예리하다, 이 문장은 요점을 묻어버렸다, 이 전환은 앞뒤가 안 맞는다.
두 번째 학생이 훨씬 빨리 배워요. 어떤 문장을 고쳐야 하는지 아니까요. RLVR은 맨 위의 숫자 하나예요. on-policy distillation은 문장별 첨삭이고요.
메커니즘, 그리고 sparse RL이 실제로 멈춰 서는 지점. RLVR은 rollout이 수백, 수천 토큰을 썼든 말든 rollout당 스칼라 보상 하나만 줘요. 현대 RLVR은 대부분 GRPO(group-relative policy optimization) 또는 그 변형(DAPO, GSPO, CISPO 등) 위에서 돌아가요. DeepSeek이 DeepSeekMath에서 도입하고 DeepSeek-V2에서 규모를 키운 이 알고리즘은, 이 글에 나오는 거의 모든 랩이 그 위에 쌓아 올리는 critic-free 알고리즘이에요. GRPO는 그 스칼라 하나를, 그룹 안에서 rollout들을 비교하는 방식으로 학습 신호로 바꿔요. 같은 프롬프트에 대한 여러 시도를 모아, 별도로 학습한 가치 네트워크 대신 그룹 자신의 평균을 baseline으로 써서, 그 보상들을 advantage로 정규화해요.

문제가 너무 쉽거나 너무 어려울 때 무슨 일이 벌어지는지 읽어보세요. 그룹의 모든 시도가 같은 보상을 받아요. 전부 맞거나, 전부 틀리거나. 그러면 각 보상이 그룹 평균과 같아지고, 분자 r_i − mean(r)가 모든 rollout에서 0이 되어, 모든 advantage가 0이에요. gradient가 아예 없어요. 그룹이 아무것도 안 가르치는 거죠. verifier가 좀처럼 발화하지 않는 어려운 문제에서는, 이 전부-틀림 케이스가 드문 극단이 아니라 오히려 흔한 경우예요. 그래서 RLVR이 가장 어려운 문제들에서는 진전을 거의 못 내면서 수천 GPU-시간을 갈아 넣을 수 있는 거예요. dense한 토큰별 신호에는 이런 데드존이 없어요. "실패한" 궤적조차 모든 위치의 토큰에서 학습 신호를 실어 나르니까요. 사실 GRPO는 표준편차 분모 자체도 논쟁거리예요. 각 그룹을 자기 폭(std)으로 재스케일하다 보니, 거의 동점인 그룹의 미세한 보상 차이는 부풀려지고 넓게 퍼진 그룹의 차이는 줄어드는데, 이건 오히려 가장 밀어줄 값어치가 큰 rollout을 죽이는 셈이라, 최근 여러 GRPO 변형이 이 때문에 std 항을 버려요.
증거. 측정된 격차는 커요.
- 샘플 효율 (MOPD). MOPD 논문 실험에서 on-policy distillation은 교사 수준 plateau에 "IF에서는 약 25K IF 샘플 이내, SWE에서는 약 30K SWE 샘플 이내"로 도달했고, "반면 Mix-RL은 각 도메인에서 150–180K 샘플 예산을 전부 필요로 해요." 같은 품질에 도달하는 데 대략 6× 적은 샘플이에요.
- Wall-clock 비용 (Thinking Machines Lab). 수학 추론 벤치마크에서 on-policy distillation은 약 1,800 GPU-시간에 74.4%에 도달했고, RL은 약 17,920 GPU-시간에 67.6%(대략 1/10 연산량)였으며, off-policy SFT는 40만 샘플을 쓰고도 60%에서 뒤처졌어요.
- Self-distillation (Thinking Machines Lab). RL로 학습한 모델을 자기 base로 다시 증류하니, gradient 스텝은 7–10× 적게, 연산량은 50–100× 적게 쓰고도 교사 성능을 회복했어요.
이걸 "3–10× 저렴" 같은 슬로건으로 압축한 걸 가끔 보게 될 거예요. 단일 수치를 인용하고 싶은 유혹은 참으세요. 그렇게 딱 잘라 말하는 수치는 어떤 논문에도 없어요. 정직하게 종합하면, 도메인과 정확히 무엇을 재느냐에 따라 RL보다 대략 3–10× 더 효율적이라는 것이고, 그 이유는 위에서 짚은 그 하나의 구조적 사실이에요.
(GRPO) rollout당 스칼라 하나 vs (OPD) 모든 토큰에 걸린 gradient.
좀만 더 깊이 들어가기: loss를 계산하는 세 가지 방법, 그리고 안정성을 지배하는 하나의 법칙
초심자는 여기까지만 보고 멈춰도 큰 그림이 잡혀요. student가 풀고,교사가 mode-seeking reverse KL로 모든 토큰을 채점는 방식, 그게 dense-and-on-policy이고, 그래서 효율적이고 병렬화 가능해요. 이어지는 건 여러 랩들에서 실무자들이 고민하고 다투는 정확한 수식이고, 두 질문으로 귀결돼요. 그 토큰별 KL을 어떻게 계산할 것인가, 그리고 어떤 교사를 써야 안전한가.
세 가지 loss 형태
위의 reverse-KL 목적함수는 정확하지만 직접 계산하기엔 비싸요. "교사의 완전한 다음-토큰 분포"라는 게 매 위치마다 모델의 10만 개 넘는 어휘 토큰 하나하나에 대한 확률을 뜻하기 때문이에요. MOPD 논문은 이걸 다루는 세 가지 방법을, 비용과 안정성이 커지는 순서로 펼쳐놔요.
1. Policy-gradient form(MOPD의 기본값). 전체 분포적 KL을 계산하는 대신, 샘플링된 토큰 하나에 대해 REINFORCE 트릭으로 reverse KL을 최적화해요. loss는 policy-gradient 목적함수이고, 각 토큰이 advantage로 가중돼요.

토큰별 advantage Â_t는 student가 실제로 만든 토큰에 대한 교사와 student의 로그 확률 격차일 뿐이에요.

sg[·]는 stop-gradient이고, advantage는 고정 범위로 클리핑돼요(MOPD 논문에서 A_max = 5). 그래야 터무니없이 개연성 없는 토큰 하나가 업데이트를 터뜨리지 못해요. 이 형태는 reverse-KL 증류를 policy-gradient 문제로 처음 정식화한 MiniLLM(Gu et al., ICLR 2024)의 계보에 있어요. 이 방법의 큰 장점은 교사가 내줘야 하는 게 적다는 점이에요. 이미 골라진 토큰 하나의 로그 확률만 있으면 돼요. 그래서 교사 서빙 비용이 최대한 싸져요.
2. Top-k form(k = 64). 샘플링된 토큰 하나 대신, 각 위치에서 교사가 가장 개연성 높다고 본 k개 토큰에 걸쳐 student를 교사에 맞춰요(MOPD는 k = 64를 씀). 목적함수가 여전히 π_θ = π_teacher에서 정확히 최소화되도록 보정 상수를 붙여서요.

합은 오직 T_k, 즉 교사의 top-k 토큰에 대해서만 돌아가므로, 각 위치가 샘플 하나나 전체 10만-차원 분포가 아니라 64개 확률을 움직여요. 보정 C_k는, 논문의 표현으로 "loss가 top-k 토큰에서 π_θ = π_teacher에서 최소화되도록 보장해요." 이게 없으면 top-k로 잘라내는 과정에서 최소점이 옮겨져 student가 편향돼요. 이건 policy-gradient form보다 스텝당 신호가 풍부하고 전체 분포보다는 훨씬 싸지만, 교사가 자기 top-k 확률을 노출하도록 요구하고(첫 형태가 필요로 하는 로그 확률 하나보다 많죠), 곧 보겠지만 교사와 student가 어긋날 때 셋 중 가장 취약해요.
3. Full-vocabulary form. 매 위치에서 전체 어휘 V에 대해 정확한 reverse KL을 계산해요. 아무것도 샘플링하거나 잘라내지 않은, 처음 쓴 그대로의 목적함수예요.

이제 안쪽 합이 V 전체(10만 개 넘는 토큰)에 대해 돌아가므로, 매 위치가 교사의 완전한 다음-토큰 분포에 맞춰져요. 이건 셋 중 가장 충실하고 가장 안정적이에요. 샘플링 노이즈도 없고, 최소점을 옮기는 절단도 없어요. 하지만 교사가 매 위치마다 완전한 10만-차원 분포를 내보내야 하고, 여러분은 그걸 옮기고 저장해야 해요. 그게 규모에서는 심각한 엔지니어링 문제이고, 파트 2에서 DeepSeek이 full-vocabulary distillation을 감당 가능하게 만들려고 쓰는 트릭(각 교사의 hidden state를 캐싱하고 logit을 즉석에서 재구성)을 보여줘요.
무엇을 고를까요? MOPD의 ablation은 저렴한 옵션을 원하는 사람을 안심시켜요. 잘 맞는 교사와 함께라면, policy-gradient와 top-k form은 사실상 같은 지점에 도달해요. 정규화 점수로 0.937(policy-gradient)과 0.909(top-k)예요. 그러니 teacher와 student가 가까울 땐 더 무거운 top-k 기계장치가 거의 아무것도 사주지 못해요. 게다가 가깝지 않을 땐 오히려 더 나빠요. student와 가깝지 않은 teacher로 MOPD 실행에서 top-k form은 오르는 반면, 더 가벼운 policy-gradient form은 그냥 성능이 저하되는 데 그쳐요. 그 "잘 맞는 교사와 함께라면"이라는 단서가 엄청난 일을 하고 있고, 그게 우리를 이 영역 전체에서 절대 틀리면 안 되는 하나의 결론으로 데려가요.
안정성 법칙: 더 강한 교사가 상황을 더 나쁘게 만들 수 있어요
직관. 전문가에게 student를 채점시킬 거라면, 더 나은 전문가가 늘 낫다고 생각하기 쉬워요. on-policy distillation에서는 그 가정이 틀렸고, 왜 틀렸는지를 이해하는 게 곧 이 방법 전체를 이해하는 거예요.
메커니즘. student가 자기 샘플에 대한 reverse KL로 학습한다는 걸 떠올려 봐요. 각 토큰의 gradient는 교사와 student 사이 로그 확률 격차로 가중돼요. 이제 교사가 훨씬 강하면서 다르다고 해봐요. student라면 결코 시도하지 않을 방식으로 teacher가 문제를 풀어요. 그러면 student 자신의 rollout이 teacher가 매우 개연성 없다고 보는 영역에 걸핏하면 떨어져요. 그런 영역에서 reverse-KL 항 log π_T − log π_θ가 급격히 음수로 내려가는데, 이는 큰 징벌적 gradient예요. 교사의 확률이 0으로 향할수록 log π_T가 음의 무한대로 향하니까요. (이때 log π_θ는 어떤 음수일거예요. π_θ, π_T는 확률이라 0에서 1 사이 값이고 이를 로그 그래프 생각해보면 사실 당연해요! ) student가 KL loss를 줄이는 쪽으로 유일하게 업데이트되면서 빠져나갈 수 있는 길은 그 student와 크게 다르지만 성능이 매우 뛰어난 teacher가 싫어하는 것을 만들기를 아예 멈추는 것뿐이고, 이는 자기 다양성을 붕괴시킨다는 뜻이에요. entropy가 쪼그라들고, 탐색이 죽고, 모델이 단일 mode로 좁아져요. student를 가르치려던 신호가 오히려 student를 짓눌러버리는 거예요.
증거 (MOPD). MOPD 논문은 이걸 깔끔하게 보여줘요. 잘 맞는 교사를 더 강한 외부 교사(Qwen3-235B-A22B)로 교체해요. 그랬더니 student의 초기 토큰별 KL이 교사에 대해 약 0.04에서 약 0.19로 뛰어요. 출발점에서 대략 5× 더 먼 거죠. (즉, external strong teacher가 student에서 분포적으로 same-origin teacher보다 떨어져있다는거예요) policy-gradient form 하에서 student의 entropy는 0.30에서 0.21로 쪼그라들며 단일 mode로 좁아지는데, "교사의 저확률 영역에서 오는 징벌적 gradient 신호"에 몰린 결과이고, 정확도가 저하돼요. 더 공격적인 top-k form 하에서는 더 나빠요. 학습이 "18스텝 근처에서 파국적으로 발산"해요.

이것이 세우는 규칙. teacher와 student는 분포적으로 가까이 있어야 하고, 실무적으로 이는 둘 사이의 초기 KL이 낮다는 뜻이에요. 강하지만 동시에 먼 교사는 student를 끌어올리지 않고 오히려 붕괴시켜요. 두 주요 출처(MOPD, Thinking Machines Lab)가 이 요구 조건을 서로 다른 각도에서 짚는데, 둘 다 살펴볼 가치가 있어요.
MOPD 논문은 same-origin 교사를 결정적 재료로 봐요. 모든 specialist 교사와 student를 같은 SFT 체크포인트에서 갈라 내는 것이 낮은 초기 KL을 보장하는 길이고, 논문의 결론은 이 가까움이 분포가 충분히 가까워 보인다고 건너뛸 수 있는 선택적 미덕이 아니라 진짜로 요구되는 조건이라는 거예요.
Thinking Machines Lab은 반대편에서 접근해요. 크기가 어긋난 교사와 student조차, 분포가 가까이 유지되기만 하면 성공적으로 증류될 수 있음을 보여줘요.
둘을 함께 읽으면 서로 양립하고, 같은 근원 변수를 가리켜요. 진짜 요구 조건은 가까움이에요. 공유 체크포인트에서 갈라 내는 건 그걸 보장하는 가장 믿을 만한 방법일 뿐이고, 공유 출처 자체가 마법인 건 아니에요. 이 공통의 핵심 아이디어가 MOPD기법이 strong external teacher를 작은 student로 압축하려 들기보다, 같은 체크포인트라는 출처를 공유하는 동일 스케일의 도메인별 rl을 진행한 specialist를 융합하는 이유예요. 그건 서로 다른 문제이고, 파트 2에서 Alibaba의 Qwen3가 두 번째 문제를 같은 단어 "distillation" 아래에서 아주 다른 목적으로 수행하는 걸 보여줘요.
같은 규칙, 한 층 더 깊이. 아래 소개할 두 불안정성은 하나의 뿌리를 공유해요. 여러분이 학습하는 분포가 실제로 샘플링한 분포에서 벗어나는 순간에도 학습이 흔들려요. "분포를 가까이 유지하라"는 사실 그 하나의 원칙이 두 layer에서 나타나는 거예요.
한 layer는 교사인데, 먼 교사는 student를 스스로라면 결코 만들지 않았을 토큰 쪽으로 밀어요.
다른 layer는 train, rollout 차이에요. rollout을 생성하는 모델(빠른 추론 서버)과 그 위에서 학습하는 모델이, 같은 가중치를 조금 다른 수치 환경에서 돌리기 때문에, 매 업데이트가 미묘하게 다른 분포에서 샘플링된 토큰들에 대해 계산돼요.
같은 문제가 다른 layer에서 재현되는 거고, 큰 규모에서는 이것만으로도 학습을 붕괴시키기에 충분해요. 이 레시피를 프로덕션에 올린 랩들은 어긋난 토큰을 걸러내는 방식으로 이걸 똑같이 고쳐요. Ant의 Ring-1T는 IcePop을 도입했는데, 각 토큰의 train-vs-inference 확률 비를 계산하고 어느 방향으로든 심하게 어긋난 토큰을 masking하거나 clipping해서, 가장 어긋난 토큰이 gradient에 아예 닿지 않게 해요. Zhipu의 GLM-5와 Xiaomi의 MiMo 둘 다 이를 채택했어요(GLM-5는 자기 KL-정규화 항을 떨어뜨려요). Meituan의 LongCat은 이와 관련은 있지만 별개인 truncated-importance-sampling 방식을 써요. 이 교훈은 일반화돼요. 여러분이 배우는 대상이 실제로 샘플링한 대상에서 벗어나는 순간 학습이 불안정해지니, 둘을 가까이 유지하세요. 그 "둘"이 teacher-와-student든 train-과-rollout이든요.
반드시 기억할 하나의 규칙: 교사와 student를 가까이 유지하세요. 먼 교사는 student를 끌어올리기는커녕 붕괴시켜요.
정말로 "RL 스크립트에서 한 줄 바뀐 것"이에요
랩들이 이걸 이토록 빨리 채택한 이유는, 기계적으로 이미 돌리던 인프라에 대한 아주 작은 변경이기 때문이에요. MOPD는 이 점을 직접 짚어요. "MOPD distillation을 RL 프로세스로 캐스팅"하며 이는 "기존 PPO/GRPO 파이프라인에 곧바로 꽂히고", 거기서 "advantage 계산이 유일한 변경"이에요. pseudo code로 보면, 평범한 GRPO 루프와 그 on-policy-distillation 변형은 딱 한 줄 차이예요.
# Standard RLVR / GRPO inner loop
for prompt in batch:
responses = student.sample(prompt, k=G) # student rolls out, on-policy
rewards = [verify(r) for r in responses] # ONE scalar per rollout (sparse)
adv = (rewards - rewards.mean()) / rewards.std() # group-relative advantage
loss = -(adv * logprob(student, responses)).mean()
loss.backward()
# On-policy distillation: same loop, advantage swapped for a per-token teacher gap
for prompt in batch:
responses = student.sample(prompt, k=G) # unchanged: student rolls out, on-policy
with torch.no_grad():
adv = teacher.logprob(responses) - student.logprob(responses) # DENSE, per token
adv = adv.clamp(-A_MAX, A_MAX) # A_MAX = 5
loss = -(adv * logprob(student, responses)).mean()
loss.backward()
rollout 엔진, optimizer, 분산 설정, 전부 그대로예요. sparse한 스칼라 보상을 교사에 대한 dense한 토큰별 격차로 바꿀 뿐이에요. 이게 코드 변경의 전부이고, 2025년 중반에 이미 프로덕션에 도달해 있던 데다 그해 10월에 깔끔하게 정리된 기법이 오픈 프런티어 상당수에 그토록 빠르게 퍼진 큰 이유예요.
결론: 마이크로서비스로서의 도메인별 능력
이제 지금까지 살펴본 내용을 한데 모아봐요. 이게 중요한 이유는 효율 승리보다 더 크거든요.
on-policy distillation은 dense·on-policy·parallelisable을 한꺼번에 만족하는 유일한 통합 방법이에요. 그 마지막 단어를 유심히 봐요. 통합이 이제 저렴하고 안정적인 마지막 단계가 됐기 때문에(same-origin 교사들이 토큰을 채점하는 동안 student가 샘플링하는 것) 능력의 생산과 그것의 통합이 분리됐어요. 수학 specialist, 코드 specialist, 지시 이행 specialist를 각각 독립적인 RLVR 작업으로, 각자 자기 데이터·자기 verifier·자기 스케줄을 가지고, 서로 결코 막지 않는 다른 팀들이 만든 다음, 마지막에 그중 어느 하나에 드는 비용의 일부에 불과한 distillation 패스로 융합할 수 있어요.
그게 점점 더 많은 프런티어 랩이 이 방향으로 움직이는 진짜 이유이고, 하나의 원칙으로 귀결돼요. 도메인별 능력이 마이크로서비스가 되고 있어요. 독립적으로, 병렬로 생산하고, 인터페이스에서 저렴하게 통합해요. 모든 능력이 다른 모든 능력과 얽혀 있어서 하나를 건드리면 전부를 다시 빌드해야 하는 하나의 거대한 multi-domain RL 실행이라는 옛 모놀리스는, 잘 분해된 엔지니어링 조직에 더 가까운 무언가에 자리를 내주고 있어요. 랩이 이런 식으로 일한다고 RLVR이 사라지는 건 아니에요. 맡은 일이 바뀔 뿐이죠. RLVR은 능력을 통합하는 일을 그만두고 specialist를 생산하는 일이 됐어요. 이제 통합은 on-policy distillation의 몫이에요. 그게 따로 만든 specialist를 하나의 모델로 융합하는 것이든, 모델이 자기 이전 단계로부터 증류해 후속 학습이 갉아먹은 걸 되살리는 것이든요. 파트 2가 둘 다 보여줘요.
파트 1에서 아이디어를 하나만 챙긴다면, 이걸 챙기세요. 모든 랩의 레시피를 이해하게 도와주는 렌즈예요.
파트 2는 그 렌즈를 실전에 투입해요. DeepSeek, Xiaomi, Zhipu, Kwai, Meituan이 각자 실제로 어떻게 모델을 만드는지(정확한 loss 형태까지 내려가면 교훈이 될 만큼 방식이 달라요), 같은 레시피가 NVIDIA 같은 다른 여러 랩들에 걸쳐 어떻게 수렴하고 있는지, 그리고 이 세-엔진 워크로드가 여러분이 프로비저닝하는 GPU에 무엇을 의미하는지 다뤄요.
References (Part 1)
- Thinking Machines Lab, On-Policy Distillation (Kevin Lu et al., 27 Oct 2025) — https://thinkingmachines.ai/blog/on-policy-distillation/
- MOPD: Multi-Teacher On-Policy Distillation for Capability Integration in LLM Post-Training (Xiaomi LLM Core) — arXiv 2606.30406
- Tülu 3: Pushing Frontiers in Open Language Model Post-Training (Allen Institute for AI) — arXiv 2411.15124
- DeepSeekMath (DeepSeek-AI) — arXiv 2402.03300
- MiniLLM: Knowledge Distillation of Large Language Models (Gu et al., ICLR 2024)
VESSL AI
뉴스레터 구독
AI 인프라 구축 노하우와 최신 GPU 소식을 매달 보내드려요.