Articlehuggingface.co·2026년 3월 10일·0

Keep the Tokens Flowing: Lessons from 16 Open-Source RL Libraries

Quick Summary

대규모 강화학습의 생성 병목을 해소하려면 추론과 학습을 별도 GPU 풀로 분리하고, 롤아웃 버퍼와 비동기 가중치 동기화를 통해 두 작업이 끊기지 않고 병행되도록 설계해야 한다.

Keep the Tokens Flowing: Lessons from 16 Open-Source RL Libraries 관련 대표 이미지

🖼️ 인포그래픽

Keep the Tokens Flowing: Lessons from 16 Open-Source RL Libraries 내용을 설명하는 본문 이미지

🖼️ 4컷 인포그래픽

Keep the Tokens Flowing: Lessons from 16 Open-Source RL Libraries 내용을 설명하는 본문 이미지

💡 한 줄 요약

대규모 강화학습의 생성 병목을 해소하려면 추론과 학습을 별도 GPU 풀로 분리하고, 롤아웃 버퍼와 비동기 가중치 동기화를 통해 두 작업이 끊기지 않고 병행되도록 설계해야 한다.

📌 핵심 요약

  • 추론 모델의 장문 생성, 그룹 단위 롤아웃, 도구를 사용하는 에이전트 학습으로 인해 동기식 강화학습에서는 생성 시간이 전체 학습 시간을 지배하고 학습 GPU가 장시간 유휴 상태에 놓인다.
  • 현재 TRL의 GRPOTrainer는 프롬프트 추출부터 생성, 보상 계산, 어드밴티지 계산, 역전파, 최적화, 가중치 동기화까지를 하나의 동기식 단계로 실행하므로 생성과 학습을 겹칠 수 없다.
  • 실질적인 비동기 학습은 추론과 학습을 서로 다른 GPU 풀에 배치하고 롤아웃 버퍼로 연결하는 분리형 구조에서 가능하며, 그 대가로 더 많은 GPU와 별도의 데이터·가중치 전송 체계가 필요하다.
  • 16개 오픈소스 라이브러리를 비교한 결과 오케스트레이션에는 Ray가 가장 널리 쓰였고, 가중치 전송에는 NCCL 브로드캐스트가 일반적이었으며, 오래된 데이터 처리와 부분 롤아웃 지원 방식은 라이브러리마다 달랐다.
  • TRL의 비동기 트레이너 설계 방향으로는 가벼운 오케스트레이션, 토큰별 모델 버전을 기록하는 제한형 큐, 묶음 단위 NCCL 가중치 전송, 에이전트 작업을 위한 부분 롤아웃 지원이 제시된다.

🧩 주요 포인트

  1. 추론 모델의 장문 생성, 그룹 단위 롤아웃, 도구를 사용하는 에이전트 학습으로 인해 동기식 강화학습에서는 생성 시간이 전체 학습 시간을 지배하고 학습 GPU가 장시간 유휴 상태에 놓인다.
  2. 현재 TRL의 GRPOTrainer는 프롬프트 추출부터 생성, 보상 계산, 어드밴티지 계산, 역전파, 최적화, 가중치 동기화까지를 하나의 동기식 단계로 실행하므로 생성과 학습을 겹칠 수 없다.
  3. 실질적인 비동기 학습은 추론과 학습을 서로 다른 GPU 풀에 배치하고 롤아웃 버퍼로 연결하는 분리형 구조에서 가능하며, 그 대가로 더 많은 GPU와 별도의 데이터·가중치 전송 체계가 필요하다.
  4. 16개 오픈소스 라이브러리를 비교한 결과 오케스트레이션에는 Ray가 가장 널리 쓰였고, 가중치 전송에는 NCCL 브로드캐스트가 일반적이었으며, 오래된 데이터 처리와 부분 롤아웃 지원 방식은 라이브러리마다 달랐다.
  5. TRL의 비동기 트레이너 설계 방향으로는 가벼운 오케스트레이션, 토큰별 모델 버전을 기록하는 제한형 큐, 묶음 단위 NCCL 가중치 전송, 에이전트 작업을 위한 부분 롤아웃 지원이 제시된다.

🧠 상세 정리

1. 동기식 강화학습이 한계에 도달한 배경

현대의 사후학습에서는 추론 모델이 수천에서 수만 토큰에 이르는 긴 사고 과정을 생성하므로, 한 번의 롤아웃 배치를 만드는 데 수분에서 수시간이 걸릴 수 있다. GRPO처럼 프롬프트마다 여러 완성을 생성하는 방식은 생성량을 다시 늘리며, 같은 그룹에서 가장 느린 완성이 끝날 때까지 전체 배치가 기다려야 한다. 도구, 샌드박스, 외부 환경과 여러 차례 상호작용하는 에이전트 강화학습에서는 각 궤적의 길이와 지연 시간도 크게 달라진다. MiniMax의 Forge 사례는 최대 20만 토큰의 문맥, 10만 개가 넘는 에이전트 구성과 환경, 하루 수백만 건 규모의 샘플 처리량을 보여 주며, 이런 규모에서는 생성과 학습 사이의 동기화 장벽이 심각한 병목이 된다.

2. 현재 TRL 학습 루프의 직렬 구조

현재 TRL의 GRPOTrainer는 프롬프트 추출, 복수 완성 생성, 보상 평가, 어드밴티지 계산, 순전파와 역전파, 최적화 단계, 추론 엔진으로의 가중치 동기화를 하나의 training_step 안에서 순서대로 수행한다. 이 구조는 단순하고 정확하지만, 각 단계가 끝날 때까지 다음 단계가 시작되지 않으므로 생성과 경사 계산을 동시에 진행할 수 없다. steps_per_generation 설정을 사용하면 한 번 만든 롤아웃을 여러 경사 갱신에 재사용해 생성 비용을 분산할 수 있지만, 최초 생성 호출 자체는 여전히 완전히 동기식이다. vLLM을 별도 서버 프로세스로 실행해도 모든 HTTP 생성 요청이 반환될 때까지 기다리는 장벽과 가중치 전송 중 학습기와 추론 엔진이 함께 멈추는 장벽이 남는다.

3. 동일 GPU 배치 방식의 장점과 제약

동일 GPU 배치 방식은 학습 모델과 vLLM 또는 SGLang 같은 추론 엔진을 같은 GPU 집합에 올리고, 한 시점에는 둘 중 하나만 작동하게 한다. 생성할 때는 학습 모델의 파라미터를 내리거나 추론에 적합한 배치로 다시 나누고, 학습할 때는 추론 엔진을 일시 정지하거나 절전 상태로 전환할 수 있다. 같은 GPU 안에서 파라미터를 재배치하므로 네트워크를 통한 가중치 전송이 거의 필요 없고, 총 GPU 수가 적어 구조와 비용 측면에서 유리하다. 그러나 동일한 GPU 자원을 두 역할이 번갈아 사용하기 때문에 추론과 학습을 실제로 동시에 실행할 수 없으며, 메모리 절전이나 빠른 재분할만으로는 생성 시간과 학습 시간을 중첩하는 진정한 비동기 처리가 되지 않는다.

4. 분리형 GPU 구조와 비동기 학습의 정의

분리형 방식은 추론 엔진과 학습기를 서로 다른 GPU 풀에 배치해 각각 지속적으로 작업하게 한다. 두 풀은 NCCL 브로드캐스트, 파일시스템 체크포인트, HTTP 같은 가중치 동기화 수단과 Ray 객체 저장소, Redis 스트림, 공유 메모리 같은 데이터 전달 수단으로 연결된다. 학습기가 현재 배치의 경사를 계산하는 동안 추론 풀은 이후 배치의 롤아웃을 생성할 수 있으므로, 생성과 학습의 실질적인 시간 중첩이 가능하다. 원문에서 말하는 비동기 학습은 단순히 작업을 독립적으로 예약하는 것이 아니라 이처럼 생성과 학습이 서로 다른 GPU에서 병렬로 진행되는 상태를 뜻하며, 조사 대상 중 의미 있는 중첩을 구현한 라이브러리들은 모두 분리형 구조를 기반으로 삼았다.

5. 수치로 확인되는 자동회귀 생성 병목

단일 H100 80GB GPU의 vLLM 벤치마크에서 7B 모델은 초당 약 6,300개의 출력 토큰을 처리하지만, 32B 모델의 처리량은 초당 약 1,200개로 낮아진다. 프롬프트 64개마다 완성 8개를 생성하는 GRPO 배치는 총 512개의 롤아웃을 요구하며, 각 롤아웃이 2천 토큰이면 전체 생성량은 약 100만 토큰이다. 이 경우 생성 시간은 7B 모델에서 약 3분, 32B 모델에서 약 14분이며, 롤아웃 길이가 8천 토큰이면 각각 약 11분과 56분으로 늘어난다. 롤아웃이 3만 2천 토큰이면 약 1,600만 토큰을 생성해야 하므로 7B 모델은 약 45분, 32B 모델은 약 3.7시간이 필요하다. 추론 GPU를 8개로 늘려 처리량이 거의 선형으로 증가한다고 가정해도, 32B 모델의 3만 2천 토큰 롤아웃 배치는 한 단계에 약 28분이 걸린다.

6. 느린 롤아웃과 가변 지연이 만드는 유휴 시간

생성 병목은 평균 처리량뿐 아니라 가장 늦게 끝나는 롤아웃 때문에 더욱 악화된다. GRPO처럼 프롬프트마다 여러 완성을 묶어 처리하는 알고리즘에서는 그룹 내 가장 느린 완성이 완료되어야 해당 배치를 다음 단계로 넘길 수 있으며, 사고 과정의 출력 길이는 요청마다 크게 달라질 수 있다. 에이전트 작업에서는 단순한 외부 호출이 몇 초 만에 끝날 수 있는 반면 복잡한 추론과 도구 사용이 포함된 궤적은 수분 또는 수시간 동안 이어질 수 있어 편차가 더 커진다. 동기식 구조에서는 소수의 느린 궤적이 전체 배치를 막는 동안 학습 GPU가 쉬게 되지만, 분리형 비동기 구조에서는 추론과 학습이 각자의 작업을 계속하도록 만들어 이러한 전역 대기 시간을 줄이는 것이 핵심 목표가 된다.

7. 16개 라이브러리를 비교한 일곱 가지 기준

저자들은 TRL의 새로운 비동기 트레이너 설계를 위해 비동기 학습을 중심으로 만들어진 16개 오픈소스 라이브러리를 조사했다. 비교 기준은 오케스트레이션과 동시성 수단, 롤아웃 버퍼 구조, 가중치 동기화 프로토콜, 오래된 데이터 관리, 부분 롤아웃 처리, LoRA 학습 지원, 분산 학습 백엔드와 병렬화 방식의 일곱 가지다. 조사 대상의 절반인 8개 라이브러리가 오케스트레이션에 Ray를 사용했으며, 가중치 전송 방식으로는 NCCL 브로드캐스트가 기본적인 선택으로 나타났다. 이전 모델에서 생성되어 현재 정책보다 뒤처진 샘플은 단순 폐기부터 중요도 표본추출을 이용한 보정까지 서로 다른 방식으로 처리되었다. LoRA 학습 지원은 드문 편이었고, 분산 전문가 혼합 모델 지원은 라이브러리를 구분하는 새로운 차별점으로 제시되었다.

8. TRL 비동기 트레이너에 반영할 설계 원칙

조사 결과를 바탕으로 저자들은 TRL의 오케스트레이션 계층을 가볍게 유지하고, 추론과 학습 사이에 제한된 크기의 큐를 두는 방향을 제시한다. 큐의 데이터에는 토큰별 model_version을 기록하고 이중 버퍼링은 사용하지 않으며, 이를 통해 어떤 정책 버전에서 생성된 토큰인지 추적할 수 있는 구조를 목표로 한다. 가중치 동기화에는 전송 항목을 묶어 보내는 NCCL 방식을 채택하고, 길이와 지연이 일정하지 않은 에이전트 작업을 위해 부분 롤아웃도 지원할 계획이다. 또한 학생 모델이 시퀀스를 만들고 교사 모델이 점수를 부여하는 온폴리시 증류는 보상 함수가 교사 모델의 순전파로 바뀐 GRPO와 구조적으로 유사하므로, 이 비동기 인프라의 적용 범위는 강화학습에만 한정되지 않는다.

🧾 핵심 주장 / 시사점

  • 핵심 병목은 학습 연산 자체보다 자동회귀 생성과 단계 사이의 동기화 장벽에 있으므로, 생성 속도 개선만큼 생성과 학습의 시간 중첩이 중요하다.
  • 분리형 구조는 GPU를 추가로 요구하지만, 학습 GPU가 긴 롤아웃을 기다리며 쉬는 시간을 줄여 전체 자원 활용률을 높일 수 있는 공통 해법으로 수렴했다.
  • 비동기화 이후에는 가중치 전송 방식, 데이터의 모델 버전 추적, 오래된 샘플 처리, 부분 롤아웃 지원이 학습의 효율성과 동작을 결정하는 핵심 설계 요소가 된다.

✅ 액션 아이템

  • 16개 오픈소스 비교에서 광범위하게 보인 Ray 오케스트레이션을 기준으로 추론·학습을 분리한 두 GPU 풀과 롤아웃 버퍼 연동 파이프라인을 설계한다.
  • 현재 GRPOTrainer의 프롬프트 추출~가중치 동기화 동기식 단계성을 분해해 생성, 보상 계산, 역전파/최적화 구간을 분리 운영해 학습 GPU 유휴 시간을 줄인다.
  • 토큰별 모델 버전 제한형 큐, 묶음 단위 NCCL 브로드캐스트, 부분 롤아웃 지원을 결합해 에이전트 학습에 맞춘 동기화 규격을 점검한다.

❓ 열린 질문

  • 추론·학습을 별도 GPU 풀에 배치했을 때 생성 병목 완화가 실제로 어느 구간에서 학습 유휴 감소로 확인되는가?
  • 오래된 데이터 처리 방식이 라이브러리별로 다를 때 에이전트 학습 품질을 안정적으로 유지하는 기준은 어디에 둘 것인가?
  • 토큰별 모델 버전 큐 길이와 배치형 NCCL 가중치 동기화 주기를 어떻게 조정해 최신성 확보와 지연 증가를 동시에 통제할 것인가?

관련 문서

공통 태그와 주제 흐름을 기준으로 같이 보면 좋은 문서를 이어서 제안합니다.