huggingface/trl
Train transformer language models with reinforcement learning.
TL;DR
TRL (Transformers Reinforcement Learning) 는 🤗 Transformers, Accelerate, PEFT, DeepSpeed 생태계와 통합된 Hugging Face 라이브러리로, 후기 훈련을 위한 즉시 사용 가능한 트레이너 클래스를 제공합니다. SFT, GRPO, DPO, KTO, 보상 모델링, 지식 증류 등의 현대적인 어라이어먼트/파인튜닝 알고리즘을 구현하며, 단일 GPU에서부터 멀티노드 클러스터까지 최소한의 코드로 실행할 수 있습니다.
기능
- 지도 기반 파인튜닝 (SFT) – 전통적인 지시어 응답 파인튜닝.
- 그룹 상대 정책 최적화 (GRPO) – PPO의 메모리 효율적인 대안으로, DeepSeek‑R1 훈련에 사용됨.
- 직접적 선호 최적화 (DPO) – Llama 3를 구동한 선호 기반 어라이어먼트.
- 카하네만-트버스키 최적화 (KTO) – 이진 "좋음/나쁨" 피드백에서 학습.
- 보상 모델링 – 선호 데이터 기반으로 보상 모델 훈련.
- DistillationTrainer – 청크 기반 JSD 손실을 사용하는 온폴리시 지식 증류. vLLM으로 가속화됨.
모든 트레이너는 🤗 Transformers Trainer 위에 얇은 래퍼로 구성되어 있으며, 분산 전략(DDP, DeepSpeed ZeRO, FSDP) 및 혼합 정밀도 지원을 상속합니다.
주요 통합
- 🤗 Accelerate – 단일 GPU에서부터 다수 노드까지 쉽게 확장 가능.
- 🤗 PEFT – LoRA/QLoRA 양자화를 통해 보다 저사양 하드웨어에서도 수십억 파라미터 모델 파인튜닝 가능.
- 🦥 Unsloth – 선택적 최적화 커널로 훈련 속도 향상.
- CLI –
trl sft,trl dpo,trl kto등으로 파이썬 코드를 작성하지 않고도 일반적인 작업을 시작할 수 있음.
빠른 시작 (Python)
from trl import SFTTrainer
from datasets import load_dataset
ds = load_dataset("trl-lib/Capybara", split="train")
trainer = SFTTrainer(model="Qwen/Qwen2.5-0.5B", train_dataset=ds)
trainer.train()
다른 알고리즘을 사용하려면 SFTTrainer 를 GRPOTrainer, DPOTrainer, KTOTrainer, 또는 RewardTrainer 로 교체하고 README에 표시된 대로 모델/데이터셋을 조정하세요.
빠른 시작 (CLI)
trl sft \
--model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name trl-lib/Capybara \
--output_dir ./qwen-sft
dpo 및 kto 용 유사한 명령어도 존재합니다.
설치
pip install trl # 안정 버전
# 또는 최신 코드 사용
pip install git+https://github.com/huggingface/trl.git
누가 사용해야 할까?
- 최근 LLM 어라이어먼트 알고리즘의 검증된 구현이 필요한 연구자 및 엔지니어.
- 🤗 Transformers를 이미 사용 중인 팀으로, 트레이닝 루프를 처음부터 구축하지 않고도 RL 스타일 파인튜닝을 추가하고 싶은 사람.
- 자신의 데이터셋에서 SFT, DPO, GRPO, KTO 또는 지식 증류를 CLI 기반으로 실험하고 싶은 누구나.
더 알아보기
- 공식 문서: https://huggingface.co/docs/trl
- README에 링크된 논문 (예: GRPO 2024‑02‑03, DPO 2023‑05‑18).
- 최신 기능을 시도하려면
trl.experimental패키지 사용.
인용
@software{vonwerra2020trl,
title = {{TRL: Transformers Reinforcement Learning}},
author = {von Werra, Leandro and others},
year = {2020},
url = {https://github.com/huggingface/trl},
license = {Apache-2.0}
}
관련
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch