ServiceNow AI, vLLM V1 마이그레이션 강화학습 정합성 확보… 4가지 백엔드 수정으로 V0 기준선 재현
ServiceNow AI가 강화학습(RL) 학습 파이프라인의 추론 백엔드를 vLLM V0에서 V1으로 이전하며 발생한 학습 결과 차이를 4가지 수정으로 해결한 과정을 공개했다. 처리된 롤아웃 logprobs, V1 전용 런타임 기본값, 인플라이트 가중치 업데이트 경로, 그리고 최종 프로젝션에 사용되는 fp32 lm_head가 그 대상이다.
기준선 실행에는 vLLM 0.8.5가 사용되었고, V1 실행에는 vLLM 0.18.1이 적용되었다. 초기 V1 시도는 trainer 측 logprobs와 보상 곡선이 학습 초반부터 V0 기준선과 어긋나는 양상을 보였으며, GSPO 학습에서 clamp_log_ratio_new_old_indicator, kl_new_old, entropy, reward 등의 지표로 문제가 가시화되었다. 동일 종류의 불일치는 PPO나 GRPO 등 롤아웃 logprobs를 최적화 목표 일부로 다루는 온라인 RL 시스템에서 공통적으로 나타날 수 있다고 팀은 설명했다.
팀은 원인을 세 계층으로 분리했다. 백엔드가 trainer 기대와 다른 의미의 logprobs를 반환하는 시맨틱 불일치, 캐싱·스케줄링·요청 처리에서 다른 런타임 기본값을 쓰는 추론 경로 불일치, 그리고 잔여 staleness나 백엔드 차이를 보정해야 하는 목적함수 불일치다. ServiceNow AI는 세 번째 계층을 너무 일찍 의심했다고 회고했으며, 첫 두 계층을 백엔드 행동 문제로 간주해 먼저 배제하는 접근이 유효한 진단으로 이어졌다고 밝혔다.
첫 번째 수정은 시맨틱 문제였다. vLLM V1은 기본적으로 온도 스케일링·페널티·top-k/top-p 필터링 같은 logits 후처리 이전의 원시 모델 출력에서 logprobs를 반환하지만, PipelineRL은 샘플러가 사용한 처리된 분포의 logprobs를 기대했다. logprobs-mode=processed_logprobs 설정으로 롤아웃 logprobs의 평균 편향이 사라졌고, 정책 비율 그래프에서 평균이 1.0에 매우 가깝게 유지되는 것이 확인되었다.
두 번째는 런타임 기본값이었다. 초기 V1 실행은 prefix caching과 async scheduling을 명시하지 않아 vLLM 0.18.1의 기본값이 적용되었고, disable-cascade-attn 같은 임시 오버라이드도 커밋된 설정 외부에서 전달되고 있었다. 정합성 비교를 위해 use_v1: true와 함께 logprobs-mode: processed_logprobs, enable-prefix-caching: false, async-scheduling: false를 명시적으로 지정했다. 특히 prefix caching은 이번 온라인 RL 환경에서 V0 기준 경로와 다른 캐시 수명·재사용 차이를 만들었으며, 가중치 업데이트 경계를 무시하는 캐시 정책에서는 이전 가중치로 계산된 상태를 재사용할 수 있어 비활성화가 필요했다.
세 번째는 인플라이트 가중치 업데이트 경로다. V0가 사실상 엔진 경계에서 실행을 차단하고 새 가중치를 로드한 뒤 명시적 캐시 무효화 없이 재개하는 방식이었던 점을 고려해, V1에서는 engine.pause_generation(mode="keep", clear_cache=False) 호출 후 receive_weight_update를 RPC로 보내고 engine.resume_generation()으로 재개하는 형태가 가장 가까운 대응이었다. mode="keep"은 wait나 abort와 달리 기존 인플라이트 업데이트 모델에 더 부합하며, clear_cache=False는 업데이트 시 캐시를 유지하는 V0 래퍼 동작을 그대로 따른다.
마지막 잔여 차이는 logits를 계산하는 수치 경로에서 나왔다. trainer가 최종 프로젝션을 fp32 lm_head로 수행하므로 롤아웃 백엔드도 이를 맞춰야 했다. ServiceNow AI는 MiniMax-M1 기술 보고서가 동일 계열의 학습/추론 토큰 확률 불일치를 LM 출력 헤드에서 추적해 fp32로 계산함으로써 해결했음을 언급했고, ScaleRL 논문도 fp32 logits/head 계산을 RL 레시피의 일부로 포함해 대규모 RL의 유용한 설계 선택지로 제거 실험을 진행했다고 인용했다.
추가로 진행한 음성 검증 실험은 일반적인 가설들을 배제하는 데 기여했다. processed_logprobs만 적용했을 때는 시맨틱 logprob 버그는 수정되었으나 학습 불일치는 잔존했다. 배치 불변성(batch invariance) 실험에서도 더 큰 lag, 더 높은 clip rate, NCCL 복잡도 증가와 함께 불일치가 남았다. 또한 다중 V1 전용 기본값이 켜진 첫 V1 실행을 그대로 비교 기준으로 두는 것은 혼입된 마이그레이션 비교라는 점도 지적되었다.
ServiceNow AI는 truncated importance sampling이나 importance-ratio reweighting 같은 목적함수 측 보정이 비동기·오프 폴리시 환경에서 유용한 도구임을 인정하면서도, 추론 백엔드가 잘못된 logprobs를 반환하는 상황에서 이를 곧바로 도입하면 백엔드 정합성 회복 여부와 보정 필요성이 한꺼번에 뒤섞여 학습 곡선 해석이 어려워진다고 강조했다. 두 질문을 분리해 답하기 위해 백엔드 정합성을 먼저 확보한 뒤, 다음 단계로 롤아웃 시점의 행동 정책 logprobs 보존, 최적화 시점의 trainer 측 old-policy logprobs 재계산, 백엔드 불일치 보정과 정책 업데이트 비율의 분리, ESS 같은 보정 항 진단 지표 추적을 제시했다.
관련 기사
에든버러大·케임브리지·스트래스클라이드 공동 연구 '사이버범죄 포럼서 AI 슬롭 반발 확산'… ChatGPT 출시 후 97,895건 대화 분석, Flashpoint '해커들 Claude Mythos Preview 주목'
Carnegie Mellon·MIT·Oxford·UCLA 공동 연구 'AI 챗봇 10분 사용도 문제해결 능력 저하'… 3개 실험·수백명 참가, AI 제거 시 포기율·오답률 유의 상승
Anthropic, Claude Managed Agents에 'dreaming' 리서치 프리뷰 공개… 세션·메모리 자동 큐레이션, 'Code with Claude' 개발자 컨퍼런스서 발표