PipelineRL이 대규모 RL의 지연을 줄인 방식

Hugging Face의 「PipelineRL」은 대규모 언어 모델 강화학습의 병목을 다룹니다.

핵심은 추론 중 가중치 갱신입니다.

7B와 32B 실험은 같은 하이퍼파라미터로 돌렸고, 7B는 ~3.5일에 끝났습니다.

PipelineRL은 어떤 병목을 겨냥합니까?

Hugging Face의 글 「PipelineRL」은 ServiceNow가 공개한 실험 보고입니다. 원문은 대규모 강화학습에서 추론 처리량과 정책 일치 데이터 수집이 서로 충돌한다고 봅니다. 추론 서버는 큰 배치를 써야 처리량이 올라갑니다.

그러나 그만큼 여러 정책 최적화 단계의 데이터를 한 번에 만들게 됩니다. 각 최적화 단계가 쌓일수록 수집 데이터는 현재 정책에서 멀어집니다. 원문은 이 문제를 정책 밖 데이터가 늘어나는 문제로 설명합니다.

PipelineRL은 추론을 멈추지 않고 새 가중치를 반영하는 방식으로 이 충돌을 줄입니다. 원문은 이것이 높은 추론 처리량과 더 나은 학습 효율을 함께 돕는다고 말합니다. 또한 이 글은 실행 중 가중치 갱신이 학습을 해치지 않는지와,

Open-Reasoner-Zero보다 단순한 구현으로 경쟁력을 낼 수 있는지를 함께 보여줍니다.

원문이 확인한 값은 무엇입니까?

아래 표는 원문에서 확인된 값만 정리한 것입니다.

원문 값 무엇을 재는 값인지
batch size 4096 7B와 32B 실험에 공통으로 쓴 배치 크기입니다.
learning rate 1e-6 7B와 32B 실험에 공통으로 쓴 학습률입니다.
max number of generated tokens 8192 7B와 32B 실험에 공통으로 허용한 최대 생성 토큰 수입니다.
~3.5 days on 2 nodes 7B 모델 실험의 보고된 실행 시간과 노드 수입니다.
AIME 2024, MATH 500 학습 곡선에서 Open-Reasoner와 비교한 평가 기준입니다.

"We used the same hyperparameters for both 7B and 32B experiments we report here: batch size 4096 learning rate 1e-6 max number of generated tokens 8192"

"~3.5 days on 2 nodes for the 7B model"

원문은 7B와 32B 실험이 같은 설정을 공유했다고 밝힙니다. 원문은 또한 7B 모델이 2개 노드에서 약 ~3.5일 걸렸다고 적습니다. 학습 곡선 기준으로는 PipelineRL이 AIME 2024와 MATH 500에서 Open-Reasoner와 맞먹거나 앞섰다고 합니다.

기존 RL과 PipelineRL의 추론-학습 흐름 비교 도해
기존 RL과 PipelineRL의 추론-학습 흐름 비교 도해

왜 이 방식은 기존 RL과 다릅니까?

원문이 말하는 차이는 추론과 학습 사이의 멈춤을 없앤 데 있습니다. 기존 방식은 높은 처리량을 얻으려면 큰 배치를 써야 합니다. 그 결과 하나의 추론 묶음이 여러 정책 최적화 단계의 데이터를 만들게 됩니다.

이때 데이터는 점점 정책 밖 데이터가 됩니다.

PipelineRL은 각 최적화 단계 뒤에 추론 서버의 가중치를 갱신합니다. 추론은 멈추지 않고 이어집니다. 멈춤은 새 가중치를 받는 짧은 순간에만 일어납니다.

원문은 이 방식이 추론 서버의 배치 크기를 안정적으로 유지하게 만든다고 설명합니다. 또한 수집 데이터가 정책 일치에 더 가깝게 남는다고 말합니다.

원문은 또 다른 기대도 건드립니다. 많은 사람은 이전 모델 버전으로 만든 KV 캐시가 불안정을 부를 수 있다고 생각합니다. 그러나 원문은 그런 현상이 학습 안정성을 해치지 않았다고 보고합니다.

Open-Reasoner-Zero와의 비교도 분명합니다. 원문에 따르면 PipelineRL 구현은 가치 함수를 쓰지 않습니다. 대신 단순화된 GRPO를 사용합니다.

신뢰 구간 중요도 가중치 클램핑도 쓰지 않았습니다. 지나치게 긴 시퀀스 필터링도 없었습니다. DAPO 논문의 보상 조정도 쓰지 않았습니다.

KL 패널티와 엔트로피 보너스도 넣지 않았습니다. 그럼에도 원문은 학습이 매우 안정적이었다고 말합니다.

추론 서버와 학습 서버가 가중치를 주고받는 시점 도해
추론 서버와 학습 서버가 가중치를 주고받는 시점 도해

내 시스템에서는 무엇을 점검해야 합니까?

원문이 주는 실무적 메시지는 모듈 경계를 분명히 하라는 점입니다. PipelineRL은 빠르게 바뀌는 추론 도구와 학습 도구를 함께 쓰도록 설계됐습니다. 원문은 SGLang, vLLM, Nvidia Dynamo, DeepSpeed, FSDP, TorchTitan, FastLLM 같은 도구와의 결합을 염두에 둡니다.

추론 서버가 받아야 할 세 가지 요청

  • POST /init_process_group 는 시작 시 프로세스 그룹을 초기화합니다.
  • POST /request_weight_update 는 학습 한 단계 뒤 가중치 교체를 요청합니다.
  • POST /v1/chat/completion 은 actor가 추론을 요청합니다.

내일 점검할 것은 세 가지입니다. 추론 서버가 가중치 교체를 받는 동안만 짧게 멈출 수 있는지 봐야 합니다. 짧은 시퀀스가 끝날 때 배치 크기가 쉽게 무너지는지도 봐야 합니다.

학습 서버와 추론 서버를 한 덩어리로 묶어 두지 않았는지도 점검해야 합니다.

이 글의 핵심은 새로운 알고리즘 이름이 아닙니다. 핵심은 추론 처리량과 정책 일치 사이의 충돌을 시스템 경계로 푸는 방식입니다. 다음 실험에서 볼 지점은 배치 유지, 정책 지연, 가중치 교체 지점입니다.

자주 묻는 질문

PipelineRL은 무엇이 가장 새롭습니까?

가장 새로운 점은 추론 중 가중치 갱신입니다. 원문은 이것이 높은 처리량과 정책 일치를 함께 돕는다고 말합니다.

PipelineRL은 왜 안정적이라고 하나요?

원문은 안정성 저하를 관측하지 않았다고 말합니다. KV 캐시에 이전 버전의 키와 값이 남아도 학습이 무너지지 않았습니다.

Open-Reasoner-Zero보다 단순합니까?

원문 기준으로는 더 단순합니다. 가치 함수와 여러 보정 기법을 빼고, 단순화된 GRPO를 사용했습니다.

원문: 「PipelineRL」

함께 읽기