vLLM 네이티브 RL API 릴리스
vLLM 네이티브 RL API 릴리스
vLLM은 훈련과 추론 사이의 가중치 동기화를 표준화하고 비동기 RL 워크로드를 안정화하도록 설계된 네이티브 강화 학습(RL) API를 출시했습니다. 이러한 업데이트는 프레임워크 전반에 걸쳐 가중치 동기화가 임시방편으로 중복 구현된 일반적인 문제와 특히 P/D 및 DPEP 배포에서 비동기 RL 설정이 대규모에서 취약해지는 문제를 해결합니다.
네이티브 가중치 동기화 API
온라인 RL에서 롤아웃이 최신 모델 가중치에서 생성되도록 보장하기 위해, vLLM은 이제 프레임워크별 워커 확장의 필요성을 대체하는 가중치 전송을 위한 표준화된 인터페이스를 제공합니다.
가중치 전송 라이프사이클
가중치 전송 프로세스는 플러그인 가능한 백엔드와 함께 네 개의 구별된 단계로 나뉩니다:
- Initialization (
init_weight_transfer_engine): 훈련 루프가 시작되기 전에 트레이너와 추론 워커 간의 통신 채널을 설정합니다. - Start weight update (
start_weight_update): 일반적으로 각 훈련 단계 후에 호출되며, vLLM 워커가 가중치를 받을 준비를 합니다. - Update weights (
update_weights): 트레이너에서 추론 엔진으로 모든 가중치 또는 일부 가중치를 전송하며, 청크 전송을 지원합니다. - Finish weight update (
finish_weight_update): 양자화와 같은 필요한 후처리를 수행합니다.
지원되는 백엔드 및 커스터마이징
vLLM은 현재 가중치 전송을 위해 두 가지 주요 백엔드를 지원하며, 두 백엔드 모두 직렬화 오버헤드를 줄이기 위해 최적화된 패키드 구현을 사용합니다:
- NCCL: 별도의 GPU에 있는 훈련 및 추론 워커 간에 브로드캐스트 연산을 통해 가중치를 전송하는 데 사용됩니다.
- IPC: 공유 메모리 핸들을 통해 동일 디바이스 내에서 CUDA IPC를 사용하여 가중치를 전송합니다.
개발자는 WeightTransferEngine 추상화를 등록하여 자체 전송 로직을 구현할 수 있으며, 전송 메커니즘을 워커 구현과 분리합니다.
향상된 비동기 RL 지원
비동기 RL은 추론 요청이 진행 중인 상태에서 가중치를 업데이트해야 합니다. vLLM은 클라이언트 요청을 중단하거나 시스템 교착 상태를 일으키지 않도록 이 프로세스를 처리하는 새로운 메커니즘을 도입했습니다.
"Keep Mode" 도입
vLLM은 pause_generation 및 resume_generation 메서드(및 해당 /pause와 /resume HTTP API)에 keep mode를 추가했습니다. 이를 통해 엔진은 진행 중인 요청을 일시 중지하고 스케줄러를 중단하면서 상태를 보존하여 클라이언트가 요청을 재시도할 필요가 없게 됩니다.
| Mode | 설명 | 클라이언트 측 영향 | 비동기 RL 가능 여부 |
|---|---|---|---|
abort |
모든 진행 중인 요청을 중단 | 클라이언트가 재시도를 처리해야 함 | 예 |
wait |
모든 진행 중인 요청을 기다림 | 클라이언트가 재시도할 필요 없음 | 아니오 |
keep |
진행 중인 요청을 일시 중지 | 클라이언트가 재시도할 필요 없음 | 예 |
DPEP 설정에서 교착 상태 해결
데이터 병렬성(DP) 배포에서, 일부 엔진이 일시 중지 신호를 받는 동안 다른 엔진이 요청을 처리하고 동기화를 기다리면서 교착 상태가 발생했습니다. vLLM은 두 가지 주요 변경을 통해 이를 해결합니다:
- EngineCore 통합: 일시 중지 로직이
AsyncLLM진입점 레이어에서EngineCore내부 스케줄러로 직접 이동하여 경쟁 조건을 감소시켰습니다. - 2단계 일시 중지/재개 프로토콜:
- Phase 1 (Local Pause): 엔진은 스케줄링을 일시 중지하지만, 필요한 전방 패스에 참여하기 위해
START_DP_WAVE요청에 계속 응답합니다. - Phase 2 (Global Pause): 엔진은 주기적인 all-reduce(매 32 스텝)를 수행하여 모든 랭크가 "local pause" 상태인지 확인합니다. 합의가 이루어지면 전역 일시 중지로 전환합니다.
- Phase 1 (Local Pause): 엔진은 스케줄링을 일시 중지하지만, 필요한 전방 패스에 참여하기 위해
검증 및 성능
프레임워크 통합
새 API는 SkyRL에 통합되어 DAPO 레시피를 사용한 Qwen3-1.7B의 비동기 훈련을 가능하게 했습니다.
대규모 배포
Prime-RL 팀은 P/D 분리 설정에서 zai-org/GLM-5.1-FP8 모델을 사용해 API를 검증했습니다. 이 배포는 16개의 8xH200 노드(프리필 및 디코드를 위한 DPEP32를 갖춘 4P+4D 복제 2개)로 구성되었으며, CPU KV 캐시 오프로드(노드당 1TB)를 활용했습니다. 설정은 100회 이상의 훈련 단계 동안 가중치 업데이트가 일관되고 평가 성능이 향상되는 등 안정적으로 유지되었습니다.
SUMMARY: vLLM은 훈련과 추론 사이의 가중치 전송을 표준화하고 대규모 DPEP 배포에서 교착 상태를 제거하기 위해 네이티브 가중치 동기화 API와 향상된 비동기 RL 지원을 도입했습니다.
TITLE: vLLM 네이티브 RL API 릴리스
Sources
- OriginalNative RL APIs in vLLM