LLM 강화학습의 학습 추론 불일치를 DLC로 보정한다
On the Origin and Evolution of Training-Inference Mismatch in LLM Reinforcement Learning
무엇인가
이 논문은 LLM 강화학습에서 학습 데이터가 현재 정책에서 나왔다고 보는 온폴리시 가정이 실제 시스템에서 깨지는 문제를 다룬다. 응답은 vLLM 같은 추론 엔진이 q에서 샘플링하고 그래디언트는 별도 트레이너가 p로 계산하므로, 같은 가중치에서도 커널·정밀도 차이로 분포가 다르고 비동기 샘플링에서는 샘플러 가중치가 낡는다. 저자들은 이 불일치를 하나의 잡음으로 보지 않고, 어떤 성질의 불일치가 어떤 보정을 요구하는지를 묻는다. 기존 관찰대로 양자화 샘플러에서는 score centering이 안정적이고 stale 샘플러에서는 importance sampling이 앞서며, PPO는 staleness에서는 버티지만 양자화에서는 무너지는 식으로 보정의 성패가 원인에 따라 갈리기 때문이다.
어떻게 동작하나
핵심 도구는 트레이너를 샘플러의 가중치 θ_old에서 한 번 더 평가해 샘플 토큰 오차를 정확히 두 항으로 쪼개는 것이다. δ_t = log pθ(y_t|h_t) - log q(y_t|h_t)를 정책 지연 ℓ_t = log pθ - log pθold와 엔진 수치 불일치 e_t = log pθold - log q로 나눈다. 40스텝 학습을 추적하면 수치 불일치는 대략 토큰당 0.02 nats로 거의 일정하고, stale 오차는 정책 지연이며 수치 불일치는 10^-3 미만이다. 정책 지연은 토큰의 score에 누적 업데이트를 투영한 Δ^T s_t로 커지며, 응답 단위 오프셋은 스텝당 약 0.7 nats씩 증가한다. 그래서 수치 불일치는 매 업데이트에 거의 고정된 편향을 주므로 센터링으로 일차 편향을 제거할 수 있지만, 정책 지연은 트레이너 자신의 업데이트가 만든다.
무엇과 다른가
정책 지연은 피드백 루프를 닫는다. 센터링이 남긴 잔차 편향 b_k가 다음 업데이트에 들어가고, 그 업데이트가 다음 지연을 키운다. 1차 근사로 b_k ≈ -M Δ_k이므로 Δ_{k+1} ≈ (I - ηM)Δ_k + η g_k가 되고, M의 고유값이 음수인 방향은 동기화 전까지 증폭될 수 있다. Importance weighting은 지연 비율이 집중되어 있을 때만 이 루프를 끊는다. Qwen3-1.7B에서 지연 비율의 유효 표본 크기가 배치의 절반 아래로 떨어지는 스텝은 11로, 가우시안 예측보다 3스텝 이르며 그 지점에서 importance sampling은 노이즈 바닥을 벗어난다. 논문은 이 유효 표본 크기를 보정이 유효한 범위의 끝으로 본다.
어떻게 쓰나
DLC(discrepancy-lag correction)는 이 분석을 그대로 보정 절차로 옮긴다. 먼저 트레이너를 샘플러 가중치 θ_old에서 추가 순전파해 각 토큰의 ℓ_t와 e_t, 그리고 샘플러가 보고한 top-128 토큰에서 pθold의 로그확률을 얻는다. 정책 지연은 PPO식 클리핑으로 비율 ρ_t=e^{ℓ_t}를 샘플러 가중치 기준으로 자르고(ε=0.2, dual-clip c=3), 토큰을 m_t ρ_t로 가중해 지연의 토큰 항을 제거한다. 수치 불일치는 샘플러 분포 q 아래에서 클리핑된 가중 score의 기대값 C_t를 빼서 센터링한다. 최종 업데이트는 g_DLC = Σ_t A_t(m_t ρ_t s_t - C_t) 꼴이며, head 밖의 꼬리는 q_v=κ pθold(v)로 근사한다. 지연 비율의 유효 표본 크기가 절반 미만이 되면 샘플러 가중치를 트레이너로 복사하는 재동기화를 수행해 Δ, 지연, 프리픽스 오프셋을 0으로 되돌린다. θ=θ_old이면 score centering으로, q=pθold이고 클립이 비활성이면 샘플러 기준 PPO로 퇴화한다.
전제와 한계
실험은 Qwen3-0.6B와 1.7B를 Countdown에서 보상 ±1, 64개 프롬프트, 스텝당 8샘플, SGD 학습률 10^-2, 40스텝, 구성별 3회로 학습한다. 편차는 동일 설정의 온폴리시 모델에 대한 전체 어휘 KL을, 독립적으로 학습한 두 온폴리시 모델 사이 KL인 노이즈 바닥으로 나눈 값이다. 양자화 샘플러에서는 importance sampling과 score centering이 단독·결합 모두 노이즈 바닥에 머물고 정책 그래디언트는 바닥의 13배에 이르며, score centering은 온폴리시의 46.5% 테스트 정확도와 같아진다. Stale 샘플러에서는 score centering이 바닥의 32배, 최종 정확도 12.2%까지 나빠지고, importance sampling에 centering을 더하면 2.1배, 32.0%가 된다. 배치 이전 트레이너를 PPO 기준으로 두면 staleness에서 바닥의 699배(클립 제거 시 534배)까지 벌어지지만, DLC가 쓰는 샘플러 가중치 기준은 1.9배다.
Qwen3-0.6B에서 DLC는 staleness 단독에서 바닥의 1.9배, 양자화와 staleness 결합에서 2.2배를 기록했고, importance sampling+centering은 각각 2.1배와 2.6배였다. Qwen3-1.7B에서 DLC는 40스텝 내내 1.2배 이내, 마지막에는 0.6배까지 내려간다. 같은 임계값으로 importance sampling을 재동기화하면 1.7B 편차가 115배에서 2.6배로 줄어든다. DLC의 1.7B 세 런은 40스텝 중 각각 스텝 20, 35, 36에서 한 번씩 재동기화했고, importance sampling+재동기화는 세 런에서 2·4·5번 필요했으며 고정 간격이라면 11스텝마다 동기화해야 유효 범위를 유지한다. 테스트 정확도는 0.6B staleness에서 DLC 31.7%, importance sampling+centering 32.0%, 온폴리시 46.5%, score centering 12.2%였고, 1.7B에서 DLC는 평균 51.9%로 온폴리시 57.6%와 7%포인트 이내였다. Importance sampling+재동기화는 한 런이 붕괴해 평균 36.6%에 그쳤다. 재동기화 없는 DLC는 1.7B 세 런 중 두 개가 40스텝까지 θ0 정확도 아래로 떨어지고 약 26토큰 답을 냈으며, 초기 정책 지원 밖 질량 비중이 약 90%까지 올랐다. 재동기화를 넣으면 그 비중이 11% 이하로 유지되고 세 런 모두 θ0보다 높은 정확도를 지킨다. 부록에서는 Qwen3-8B에서 DLC와 importance sampling+centering이 약 3배 이내, score centering이 89배였고, 1.7B 연속 비동기에서 DLC가 1.2배였다.
개발자에게 이 논문은 추론 엔진과 트레이너를 분리한 RL 파이프라인에서 불일치를 한 종류의 노이즈로 취급하면 안 된다는 실무 지침을 준다. 먼저 현재 불일치가 양자화·커널 차이 같은 수치 불일치인지, 비동기 샘플링의 가중치 지연인지 구분해야 한다. 수치 불일치가 우세하면 score centering이 일차 편향을 제거하지만, stale 샘플러에서는 지연 비율의 유효 표본 크기와 샘플러가 보지 못한 프리픽스에서의 지원 밖 이동을 함께 봐야 한다. DLC는 샘플러 가중치에서 트레이너를 한 번 더 순전파하는 비용과 top-128 로그확률 저장을 요구하지만, 고정 간격 재동기화보다 필요한 시점에만 샘플러를 맞출 수 있게 한다. PPO를 쓸 때도 기준 정책을 배치 이전 트레이너로 둘지 샘플러 가중치로 둘지가 staleness와 양자화에서 정반대 결과를 낳는다는 점을 확인해야 한다.
저자들이 밝힌 범위는 짧은 40스텝 Countdown 학습, Qwen3-0.6B·1.7B 중심(부록에 8B), SGD 학습률 10^-2, 구성별 3회라는 제한된 설정이다. DLC의 클립 범위 0.2, head 크기 128, 재동기화 임계값 0.5는 실험에서 고정한 하이퍼파라미터이며, 긴 학습·다른 과제·다른 비동기 스케줄에서 그대로 최적이라는 주장은 아니다. 또한 인프라가 샘플링·보고·토큰 시퀀스를 정렬해 수치 불일치와 정책 지연만 남는다는 전제가 있고, DLC는 추가 순전파와 샘플러의 top-k 로그확률을 필요로 한다. 연속 비동기에서는 재동기화 대신 토큰별 생성 가중치를 기준으로 삼고 응답별 유효 표본 크기로 수용 여부를 정하는 변형을 제시하지만, 이 역시 논문의 실험 범위 안에서 검증된 형태다.