TRL documentation
명령줄 인터페이스(CLI)
명령줄 인터페이스(CLI)
TRL은 Supervised Fine-Tuning(SFT), Direct Preference Optimization(DPO) 등의 방법을 사용하여 대규모 언어 모델(LLM)을 미세 조정하기 위한 강력한 명령줄 인터페이스(CLI)를 제공합니다. CLI는 많은 양의 불필요한 코드를 추상화하여 학습 작업을 빠르고 재현 가능하게 시작할 수 있도록 합니다.
명령어
현재 지원되는 명령어는 다음과 같습니다:
학습 명령
trl distillation: on-policy knowledge distillation을 사용하여 teacher model을 student로 증류trl dpo: DPO를 사용하여 LLM을 파인튜닝trl grpo: GRPO로 LLM을 파인튜닝trl kto: KTO로 LLM을 파인튜닝trl reward: 보상 모델 학습trl rloo: RLOO로 LLM 파인튜닝trl sft: SFT로 LLM을 파인튜닝
기타 명령
trl env: 시스템 정보 가져오기trl vllm-serve: vLLM으로 모델을 서빙합니다 (비권장,vllm serve를 직접 사용하세요. vLLM 통합 참고)
TRL CLI를 활용한 Fine-Tuning
기본 사용법
CLI에서 모델과 데이터셋과 같은 필수 인수를 지정하여 학습을 바로 시작할 수 있습니다:
trl sft \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name stanfordnlp/imdb
trl dpo \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name anthropic/hh-rlhf
trl reward \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name trl-lib/ultrafeedback_binarized
trl grpo \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name HuggingFaceH4/Polaris-Dataset-53K \ --reward_funcs accuracy_reward
trl rloo \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name HuggingFaceH4/Polaris-Dataset-53K \ --reward_funcs accuracy_reward
trl kto \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name trl-lib/kto-mix-14k
설정 파일 사용
CLI 명령어를 깔끔하고 재현 가능하게 유지하려면, 모든 학습 인수를 YAML 구성 파일에 정의할 수 있습니다:
# sft_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: stanfordnlp/imdb다음으로 시작합니다:
trl sft --config sft_config.yaml
# dpo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: anthropic/hh-rlhf다음으로 시작합니다:
trl dpo --config dpo_config.yaml
# reward_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: trl-lib/ultrafeedback_binarized다음으로 시작합니다:
trl reward --config reward_config.yaml
# grpo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: HuggingFaceH4/Polaris-Dataset-53K
reward_funcs:
- accuracy_reward다음으로 시작합니다:
trl grpo --config grpo_config.yaml
# rloo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: HuggingFaceH4/Polaris-Dataset-53K
reward_funcs:
- accuracy_reward다음으로 시작합니다:
trl rloo --config rloo_config.yaml
# kto_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: trl-lib/kto-mix-14k다음으로 시작합니다:
trl kto --config kto_config.yaml
Accelerate를 활용한 스케일 업
TRL CLI는 🤗 Accelerate를 기본적으로 지원하여 여러 GPU, 여러 머신으로 학습을 확장하거나 DeepSpeed와 같은 고급 설정을 사용하는 것이 쉽습니다. 모든 작업은 동일한 CLI에서 수행할 수 있습니다.
accelerate launch 인수를 trl에 직접 전달할 수 있으며, 예를 들어 --num_processes를 사용할 수 있습니다. 자세한 내용은 accelerate launch 사용을 참조하세요.
trl sft \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name stanfordnlp/imdb \ --num_processes 4
또는, 설정 파일을 사용하여:
# sft_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: stanfordnlp/imdb
num_processes: 4다음으로 시작합니다:
trl sft --config sft_config.yaml
trl dpo \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name anthropic/hh-rlhf \ --num_processes 4
또는, 설정 파일을 사용하여:
# dpo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: anthropic/hh-rlhf
num_processes: 4다음으로 시작합니다:
trl dpo --config dpo_config.yaml
trl reward \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name trl-lib/ultrafeedback_binarized \ --num_processes 4
또는, 설정 파일을 사용하여:
# reward_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: trl-lib/ultrafeedback_binarized
num_processes: 4다음으로 시작합니다:
trl reward --config reward_config.yaml
trl grpo \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name HuggingFaceH4/Polaris-Dataset-53K \ --reward_funcs accuracy_reward \ --num_processes 4
또는, 설정 파일을 사용하여:
# grpo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: HuggingFaceH4/Polaris-Dataset-53K
reward_funcs:
- accuracy_reward
num_processes: 4다음으로 시작합니다:
trl grpo --config grpo_config.yaml
trl rloo \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name HuggingFaceH4/Polaris-Dataset-53K \ --reward_funcs accuracy_reward \ --num_processes 4
또는, 설정 파일을 사용하여:
# rloo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: HuggingFaceH4/Polaris-Dataset-53K
reward_funcs:
- accuracy_reward
num_processes: 4다음으로 시작합니다:
trl rloo --config rloo_config.yaml
trl kto \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name trl-lib/kto-mix-14k \ --num_processes 4
또는, 설정 파일을 사용하여:
# kto_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: trl-lib/kto-mix-14k
num_processes: 4다음으로 시작합니다:
trl kto --config kto_config.yaml
Accelerate 설정을 위한 --accelerate_config 사용
--accelerate_config 플래그를 사용하면 🤗 Accelerate로 분산 학습을 쉽게 구성할 수 있습니다. 이 플래그는 다음 중 하나를 허용합니다:
- TRL에 내장된 사전 정의된 구성 프로필의 이름 또는
- 사용자 정의 Accelerate YAML 구성 파일의 경로
사전 정의된 구성 프로필
TRL은 일반적인 학습 설정을 단순화하기 위해 몇 가지 바로 사용 가능한 Accelerate 구성을 제공합니다:
| 이름 | 설명 |
|---|---|
fsdp1 | Fully Sharded Data Parallel Stage 1 |
fsdp2 | Fully Sharded Data Parallel Stage 2 |
zero1 | DeepSpeed ZeRO Stage 1 |
zero2 | DeepSpeed ZeRO Stage 2 |
zero3 | DeepSpeed ZeRO Stage 3 |
multi_gpu | 멀티-GPU 학습 |
single_gpu | 단일 GPU 학습 |
이 중 하나를 사용하려면 이름을 --accelerate_config에 전달하면 됩니다. TRL은 trl/accelerate_config/에서 해당 설정 파일을 자동으로 로드합니다.
사용 예시
trl sft \
--model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name stanfordnlp/imdb \
--accelerate_config zero2 # or path/to/my/accelerate/config.yaml또는, 설정 파일을 사용하여:
# sft_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: stanfordnlp/imdb
accelerate_config: zero2 # or path/to/my/accelerate/config.yaml다음으로 시작합니다:
trl sft --config sft_config.yaml
trl dpo \
--model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name anthropic/hh-rlhf \
--accelerate_config zero2 # or path/to/my/accelerate/config.yaml또는, 설정 파일을 사용하여:
# dpo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: anthropic/hh-rlhf
accelerate_config: zero2 # or path/to/my/accelerate/config.yaml다음으로 시작합니다:
trl dpo --config dpo_config.yaml
trl reward \
--model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name trl-lib/ultrafeedback_binarized \
--accelerate_config zero2 # or path/to/my/accelerate/config.yaml또는, 설정 파일을 사용하여:
# reward_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: trl-lib/ultrafeedback_binarized
accelerate_config: zero2 # or path/to/my/accelerate/config.yaml다음으로 시작합니다:
trl reward --config reward_config.yaml
trl grpo \
--model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name HuggingFaceH4/Polaris-Dataset-53K \
--reward_funcs accuracy_reward \
--accelerate_config zero2 # or path/to/my/accelerate/config.yaml또는, 설정 파일을 사용하여:
# grpo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: HuggingFaceH4/Polaris-Dataset-53K
reward_funcs:
- accuracy_reward
accelerate_config: zero2 # or path/to/my/accelerate/config.yaml다음으로 시작합니다:
trl grpo --config grpo_config.yaml
trl rloo \
--model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name HuggingFaceH4/Polaris-Dataset-53K \
--reward_funcs accuracy_reward \
--accelerate_config zero2 # or path/to/my/accelerate/config.yaml또는, 설정 파일을 사용하여:
# rloo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: HuggingFaceH4/Polaris-Dataset-53K
reward_funcs:
- accuracy_reward
accelerate_config: zero2 # or path/to/my/accelerate/config.yaml다음으로 시작합니다:
trl rloo --config rloo_config.yaml
trl kto \
--model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name trl-lib/kto-mix-14k \
--accelerate_config zero2 # or path/to/my/accelerate/config.yaml또는, 설정 파일을 사용하여:
# kto_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: trl-lib/kto-mix-14k
accelerate_config: zero2 # or path/to/my/accelerate/config.yaml다음으로 시작합니다:
trl kto --config kto_config.yaml
데이터셋 혼합 사용
데이터셋 혼합을 사용하여 여러 데이터셋을 단일 학습 데이터셋으로 결합할 수 있습니다. 이는 다양한 데이터 소스로 학습하거나 서로 다른 유형의 데이터를 혼합하고 싶을 때 유용합니다.
# sft_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
datasets:
- path: stanfordnlp/imdb
- path: roneneldan/TinyStories다음으로 시작합니다:
trl sft --config sft_config.yaml
# dpo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
datasets:
- path: BAAI/Infinity-Preference
- path: argilla/Capybara-Preferences다음으로 시작합니다:
trl dpo --config dpo_config.yaml
# reward_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
datasets:
- path: trl-lib/tldr-preference
- path: trl-lib/lm-human-preferences-sentiment다음으로 시작합니다:
trl reward --config reward_config.yaml
# grpo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
datasets:
- path: HuggingFaceH4/Polaris-Dataset-53K
- path: trl-lib/DeepMath-103K
reward_funcs:
- accuracy_reward다음으로 시작합니다:
trl grpo --config grpo_config.yaml
# rloo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
datasets:
- path: HuggingFaceH4/Polaris-Dataset-53K
- path: trl-lib/DeepMath-103K
reward_funcs:
- accuracy_reward다음으로 시작합니다:
trl rloo --config rloo_config.yaml
# kto_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
datasets:
- path: trl-lib/kto-mix-14k
- path: argilla/ultrafeedback-binarized-preferences-cleaned다음으로 시작합니다:
trl kto --config kto_config.yaml
데이터셋 혼합을 정의하는 데 사용할 수 있는 모든 키워드를 확인하려면 scripts.utils.DatasetConfig 및 DatasetMixtureConfig 클래스를 참조하세요.
시스템 정보 가져오기
다음 명령을 실행하여 시스템 정보를 가져올 수 있습니다:
trl env이 명령은 GPU 정보, CUDA 버전, PyTorch 버전, transformers 버전, TRL 버전 및 설치된 선택적 의존성을 포함한 시스템 정보를 출력합니다.
Copy-paste the following information when reporting an issue:
- Platform: Linux-5.15.0-1048-aws-x86_64-with-glibc2.31
- Python version: 3.11.9
- PyTorch version: 2.4.1
- accelerator(s): NVIDIA H100 80GB HBM3
- Transformers version: 4.45.0.dev0
- Accelerate version: 0.34.2
- Accelerate config:
- compute_environment: LOCAL_MACHINE
- distributed_type: DEEPSPEED
- mixed_precision: no
- use_cpu: False
- debug: False
- num_processes: 4
- machine_rank: 0
- num_machines: 1
- rdzv_backend: static
- same_network: True
- main_training_function: main
- enable_cpu_affinity: False
- deepspeed_config: {'gradient_accumulation_steps': 4, 'offload_optimizer_device': 'none', 'offload_param_device': 'none', 'zero3_init_flag': False, 'zero_stage': 2}
- downcast_bf16: no
- tpu_use_cluster: False
- tpu_use_sudo: False
- tpu_env: []
- Datasets version: 3.0.0
- HF Hub version: 0.24.7
- TRL version: 0.12.0.dev0+acb4d70
- bitsandbytes version: 0.41.1
- DeepSpeed version: 0.15.1
- Diffusers version: 0.30.3
- Liger-Kernel version: 0.3.0
- LLM-Blender version: 0.0.2
- OpenAI version: 1.46.0
- PEFT version: 0.12.0
- vLLM version: not installed이 정보는 문제를 보고할 때 필요합니다.
Update on GitHub