Transformers 강화학습

Transformers 강화학습 (Transformers Reinforcement Learning, TRL)

RL(강화학습) 훈련에서 GRPO나 Online DPO 같은 온라인 기법을 쓰려면 모델이 완성(completion)을 생성해야 해요. 그 생성 작업을 vLLM이 담당하게 하려면 어떻게 해야 할까요? 이 문서는 Transformers Reinforcement Learning(TRL) 라이브러리와 vLLM을 통합하는 방법을 설명해요.

출처: vLLM 공식 문서 — trl

TRL 개요

TRL은 transformer 언어 모델을 훈련하는 도구 모음을 제공하는 풀스택 라이브러리예요. SFT(Supervised Fine-Tuning), GRPO(Group Relative Policy Optimization), DPO(Direct Preference Optimization), Reward Modeling 같은 기법을 지원하고, 🤗 transformers와 통합되어 있죠.

GRPO나 Online DPO 같은 온라인 기법은 모델이 완성을 생성해야 해요. vLLM이 이 완성들을 생성하는 데 사용될 수 있습니다!

자세한 내용은 TRL 문서의 vLLM 통합 가이드를 참고하세요.

TRL은 현재 다음 온라인 트레이너들을 vLLM과 함께 지원해요.

TRL에서 vLLM을 활성화하려면 트레이너 설정에서 use_vllm 플래그를 True로 설정하면 돼요.

훈련 중 vLLM 사용 모드

TRL은 훈련 중 vLLM을 통합하는 두 가지 모드를 지원해요: server modecolocate mode입니다. vllm_mode 파라미터로 vLLM이 훈련 중 어떻게 동작할지 제어할 수 있어요.

Server mode

server mode에서 vLLM은 전용 GPU에서 독립 프로세스로 실행되고 HTTP 요청을 통해 트레이너와 통신해요. 추론용 GPU가 따로 있을 때 이 구성이 이상적이에요. 생성 워크로드를 훈련에서 격리해 안정적인 성능과 쉬운 확장을 보장하니까요.

from trl import GRPOConfig

training_args = GRPOConfig(
    ...,
    use_vllm=True,
    vllm_mode="server",  # default value, can be omitted
)

Colocate mode

colocate mode에서 vLLM은 트레이너 프로세스 안에서 실행되고 훈련 모델과 GPU 메모리를 공유해요. 별도 서버를 띄우지 않아도 되고 GPU 활용률을 높일 수 있지만, 훈련 GPU에서 메모리 경합이 생길 수 있어요.

from trl import GRPOConfig

training_args = GRPOConfig(
    ...,
    use_vllm=True,
    vllm_mode="colocate",
)

일부 트레이너는 vLLM sleep mode도 지원해요. 훈련 중 파라미터와 캐시를 GPU RAM으로 오프로드해 메모리 사용을 줄여주죠. 자세한 내용은 메모리 최적화 문서를 참고하세요.

참고: 자세한 구성 옵션과 플래그는 사용 중인 특정 트레이너의 문서를 참고하세요.

더 알아보기 (Learn more)