HybridFlow 프로그래밍 가이드 — 데이터플로로 RL을 표현하기

HybridFlow 프로그래밍 가이드 — 데이터플로로 RL을 표현하기

verl은 HybridFlow 논문의 구현이에요. 이 가이드는 RL 시스템을 데이터플로(DataFlow) 로 표현하는 기본 개념과 verl API로 프로그램하는 법을 설명해요.

동기

신경망 훈련은 전형적인 데이터플로예요. 노드는 연산자, 엣지는 전방·역방향 전파 방향을 나타내는 계산 그래프로 표현돼요. RL 훈련도 데이터플로로 표현할 수 있는데, 문제는 이 데이터플로가 두 흐름을 섞고 있다는 점이에요.

두 흐름의 분리

  • 계산 흐름(computation flow): 모델 전방·역방향·옵티마이저 같은 신경망 계산의 데이터플로.
  • 제어 흐름(control flow): RL 알고리즘의 루프·스케줄링.

기존 프레임워크는 이 둘이 결합돼 있어 계산 엔진을 FSDP에서 Megatron으로 바꾸면 재사용이 어려웠어요. verl은 제어 흐름과 계산 엔진 구현을 분리해서, 같은 알고리즘을 여러 엔진 위에서 돌릴 수 있게 해요.

실행 구조

단일 프로세스의 컨트롤러가 데이터플로를 지휘하고, generator/actor·critic 워커는 여러 프로세스에서 특정 리소스 그룹에 배치되어 실행돼요. trainer/main_ppo.py 진입점과 ppo/ray_trainer.py 훈련 루프, fsdp/megatron/torchtitan 엔진 디렉터리가 이 구조를 반영해요.

더 알아보기