# 빠른 시작

TRL은 Supervised Fine-Tuning (SFT), Group Relative Policy Optimization (GRPO), Direct Preference Optimization (DPO) 등의 기법을 사용하여 foundation model을 post-training하는 데 사용되는 포괄적인 라이브러리입니다.

## 빠른 예제

TRL의 가장 인기 있는 트레이너로 즉시 시작해 보세요. 각 예제는 빠른 실험을 위해 컴팩트한 모델을 사용합니다.

### Supervised Fine-Tuning

```python
from trl import SFTTrainer
from datasets import load_dataset

trainer = SFTTrainer(
    model="Qwen/Qwen2.5-0.5B",
    train_dataset=load_dataset("trl-lib/Capybara", split="train"),
)
trainer.train()
```

### Group Relative Policy Optimization

`accuracy_reward`에는 math-verify가 필요하며, `pip install trl[math_verify]`로 설치할 수 있습니다.

```python
from trl import GRPOTrainer
from datasets import load_dataset
from trl.rewards import accuracy_reward

trainer = GRPOTrainer(
    model="Qwen/Qwen2.5-0.5B-Instruct",
    train_dataset=load_dataset("trl-lib/DeepMath-103K", split="train"),
    reward_funcs=accuracy_reward,
)
trainer.train()
```

### Direct Preference Optimization

```python
from trl import DPOTrainer
from datasets import load_dataset

trainer = DPOTrainer(
    model="Qwen/Qwen2.5-0.5B-Instruct",
    train_dataset=load_dataset("trl-lib/ultrafeedback_binarized", split="train"),
)
trainer.train()
```

### 보상 모델링

```python
from trl import RewardTrainer
from datasets import load_dataset

dataset = load_dataset("trl-lib/ultrafeedback_binarized", split="train")

trainer = RewardTrainer(
    model="Qwen/Qwen2.5-0.5B-Instruct",
    train_dataset=dataset,
)
trainer.train()
```

## 명령줄 인터페이스

코드를 완전히 건너뛰고 터미널에서 직접 학습을 시작하세요:

```bash
# SFT: Fine-tune on instructions
trl sft --model_name_or_path Qwen/Qwen2.5-0.5B \
    --dataset_name trl-lib/Capybara

# DPO: Align with preferences  
trl dpo --model_name_or_path Qwen/Qwen2.5-0.5B-Instruct \
    --dataset_name trl-lib/ultrafeedback_binarized

# Reward: Train a reward model
trl reward --model_name_or_path Qwen/Qwen2.5-0.5B-Instruct \
    --dataset_name trl-lib/ultrafeedback_binarized
```

## 다음 단계

### 📚 자세히 알아보기

- [SFT Trainer](sft_trainer) - SFT 완벽 가이드
- [DPO Trainer](dpo_trainer) - 선호도 정렬
- [GRPO Trainer](grpo_trainer) - 그룹 상대 정책 최적화

### 🚀 확장

- [분산 학습](distributing_training) - 멀티 GPU 구성
- [메모리 최적화](reducing_memory_usage) - 효율적인 학습
- [PEFT 통합](peft_integration) - LoRA 및 QLoRA

### 💡 예시

- [예제 스크립트](https://github.com/huggingface/trl/tree/main/examples) - 프로덕션에 바로 사용할 수 있는 코드
- [커뮤니티 튜토리얼](community_tutorials) - 외부 가이드

## 문제 해결

### 메모리 부족?

batch size를 줄이고 최적화를 활성화합니다:

```python
training_args = SFTConfig(
    per_device_train_batch_size=1,  # Start small
    gradient_accumulation_steps=8,  # Maintain effective batch size
)
```

```python
training_args = DPOConfig(
    per_device_train_batch_size=1,  # Start small
    gradient_accumulation_steps=8,  # Maintain effective batch size
)
```

```python
training_args = GRPOConfig(
    per_device_train_batch_size=1,  # Start small
    gradient_accumulation_steps=8,  # Maintain effective batch size
    num_generations=4,              # Reduce from default 8 (GRPO generates num_generations completions per prompt)
    max_completion_length=512,      # Tune based on task; longer sequences cost more memory
)
```

### Loss가 감소하지 않나요?

학습률을 조정해 보세요:

```python
training_args = SFTConfig(learning_rate=2e-5)  # Good starting point
```

추가 도움이 필요하면 [GitHub에서 이슈를 생성](https://github.com/huggingface/trl/issues)하세요.

