TRL documentation
コマンドラインインターフェース(CLI)
コマンドラインインターフェース(CLI)
TRLは、Supervised Fine-Tuning (SFT) や Direct Preference Optimization (DPO) などの手法を用いて大規模言語モデル (LLM) をファインチューニングするための強力なコマンドラインインターフェース (CLI) を提供しています。CLIは多くの定型処理を抽象化しており、トレーニングジョブを迅速かつ再現性高く起動できます。
コマンド
現在サポートされているコマンドは以下の通りです:
トレーニングコマンド
trl distillation: on-policy知識蒸留を用いて、教師モデルを学生モデルに蒸留しますtrl dpo: DPOでLLMをファインチューニングtrl grpo: GRPOでLLMのファインチューニングtrl kto: KTOでLLMのファインチューニングtrl reward: Reward Modelの学習trl rloo: RLOOでLLMのファインチューニングtrl sft: SFTでLLMをファインチューニング
その他のコマンド
trl env: システム情報を取得しますtrl vllm-serve: vLLM でモデルをサーブします(非推奨、vllm serveを直接使用してください。vLLM 統合を参照)
TRL CLIによるファインチューニング
基本的な使用方法
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