TRL documentation

명령줄 인터페이스(CLI)

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v1.17.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

명령줄 인터페이스(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에서 모델과 데이터셋과 같은 필수 인수를 지정하여 학습을 바로 시작할 수 있습니다:

SFT
DPO
보상
GRPO
RLOO
KTO
trl sft \
  --model_name_or_path Qwen/Qwen2.5-0.5B \
  --dataset_name stanfordnlp/imdb

설정 파일 사용

CLI 명령어를 깔끔하고 재현 가능하게 유지하려면, 모든 학습 인수를 YAML 구성 파일에 정의할 수 있습니다:

SFT
DPO
보상
GRPO
RLOO
KTO
# sft_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: stanfordnlp/imdb

다음으로 시작합니다:

trl sft --config sft_config.yaml

Accelerate를 활용한 스케일 업

TRL CLI는 🤗 Accelerate를 기본적으로 지원하여 여러 GPU, 여러 머신으로 학습을 확장하거나 DeepSpeed와 같은 고급 설정을 사용하는 것이 쉽습니다. 모든 작업은 동일한 CLI에서 수행할 수 있습니다.

accelerate launch 인수를 trl에 직접 전달할 수 있으며, 예를 들어 --num_processes를 사용할 수 있습니다. 자세한 내용은 accelerate launch 사용을 참조하세요.

SFT
DPO
보상
GRPO
RLOO
KTO
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

Accelerate 설정을 위한 --accelerate_config 사용

--accelerate_config 플래그를 사용하면 🤗 Accelerate로 분산 학습을 쉽게 구성할 수 있습니다. 이 플래그는 다음 중 하나를 허용합니다:

  • TRL에 내장된 사전 정의된 구성 프로필의 이름 또는
  • 사용자 정의 Accelerate YAML 구성 파일의 경로

사전 정의된 구성 프로필

TRL은 일반적인 학습 설정을 단순화하기 위해 몇 가지 바로 사용 가능한 Accelerate 구성을 제공합니다:

이름설명
fsdp1Fully Sharded Data Parallel Stage 1
fsdp2Fully Sharded Data Parallel Stage 2
zero1DeepSpeed ZeRO Stage 1
zero2DeepSpeed ZeRO Stage 2
zero3DeepSpeed ZeRO Stage 3
multi_gpu멀티-GPU 학습
single_gpu단일 GPU 학습

이 중 하나를 사용하려면 이름을 --accelerate_config에 전달하면 됩니다. TRL은 trl/accelerate_config/에서 해당 설정 파일을 자동으로 로드합니다.

사용 예시

SFT
DPO
보상
GRPO
RLOO
KTO
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

데이터셋 혼합 사용

데이터셋 혼합을 사용하여 여러 데이터셋을 단일 학습 데이터셋으로 결합할 수 있습니다. 이는 다양한 데이터 소스로 학습하거나 서로 다른 유형의 데이터를 혼합하고 싶을 때 유용합니다.

SFT
DPO
보상
GRPO
RLOO
KTO
# 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

데이터셋 혼합을 정의하는 데 사용할 수 있는 모든 키워드를 확인하려면 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