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知識蒸留を用いて、教師モデルを学生モデルに蒸留します
  • 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から、モデルやデータセットなどの必須引数を指定して、トレーニングを直接開始できます。

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