Rollout and On-Policy Data

마지막 수정:

rollouton-policyrlpost-training

SFT에서는 이미 저장된 target을 읽는다.

prompt -> fixed target answer

RL에서는 현재 모델이 직접 답을 만든다.

prompt -> current policy samples completion -> reward -> update

이때 생성된 completion을 rollout이라고 부른다.

on-policy라는 말

on-policy는 학습에 쓰는 데이터가 현재 policy에서 나왔다는 뜻이다.

policy v10이 rollout 생성
policy v10 또는 바로 다음 update가 그 rollout으로 학습

LLM RL에서 이 조건은 중요하다. 모델이 바뀌면 같은 prompt에도 token 확률이 바뀌기 때문이다.

old model: token A 확률 0.20
new model: token A 확률 0.55

PPO/GRPO가 old logprobs, policy ratio, importance sampling을 챙기는 이유가 여기에 있다.

rollout 하나에 저장해야 하는 것

실전 trainer는 완성 텍스트만 저장하면 부족하다.

prompt id
generated token ids
response mask
old log probabilities
reward
verifier diagnostics
reference model log probabilities

response mask는 prompt token에는 loss를 걸지 않기 위해 필요하다. old log probability는 PPO/GRPO ratio 계산에 필요하다. verifier diagnostics는 reward가 오르지 않을 때 원인을 찾기 위해 필요하다.

rollout 비용

LLM RL은 training step보다 rollout이 병목이 되는 경우가 많다.

1. 모델이 여러 completion을 길게 생성한다
2. reward model/verifier/environment가 평가한다
3. 그제야 optimizer update가 가능하다

수학 문제라면 verifier가 빠르다. 코드나 browser task라면 sandbox 실행, tool call, timeout 때문에 rollout 시간이 길고 들쭉날쭉해진다.

offline data와의 차이

offline preference data:
  이미 저장된 chosen/rejected pair로 학습

on-policy rollout:
  지금 모델이 낸 답을 바로 평가해 학습

DPO는 주로 offline preference data를 쓴다. PPO/GRPO는 rollout을 직접 만들고 그 rollout의 logprob와 reward를 사용한다.

참고 자료

확인

  • on-policy data는 offline preference data와 무엇이 다른가?
  • old logprobs를 저장하지 않으면 PPO/GRPO에서 무엇이 어려워지는가?
  • agentic task에서 rollout 시간이 길어지는 이유는 무엇인가?