TRL documentation
Komut Satırı Arayüzleri (CLIs)
Komut Satırı Arayüzleri (CLIs)
TRL, Denetimli İnce Ayar (SFT) ve Doğrudan Tercih Optimizasyonu (DPO) gibi yöntemlerle büyük dil modellerini (LLM) ince ayar yapmak için güçlü bir komut satırı arayüzü (CLI) sunar. CLI, çok fazla şablon kodunu soyutlayarak eğitim işlerini hızlı ve tekrarlanabilir bir şekilde başlamanızı sağlar.
Komutlar
Şu anda desteklenen komutlar:
Eğitim Komutları
trl distillation: on-policy knowledge distillation ile bir öğretmen modelini öğrenciye damıtmatrl dpo: DPO ile bir LLM'i ince ayar yapıntrl grpo: GRPO ile bir LLM'i ince ayar yapıntrl kto: KTO ile bir LLM'i ince ayar yapıntrl reward: Ödül Modeli eğittrl rloo: RLOO ile bir LLM'i ince ayar yapıntrl sft: SFT ile bir LLM'yi ince ayar yapın
Diğer Komutlar
trl env: sistem bilgilerini getirirtrl vllm-serve: bir modeli vLLM ile sun (kullanımdan kaldırıldı, doğrudanvllm servekullanın, bkz. vLLM entegrasyonu)
TRL CLI ile İnce Ayar
Temel Kullanım
Eğitimi, model ve veri seti gibi gerekli argümanları belirterek doğrudan CLI'den başlatabilirsiniz:
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
Yapılandırma Dosyalarını Kullanma
CLI komutlarınızı temiz ve yeniden üretilebilir tutmak için tüm eğitim argümanlarını bir YAML yapılandırma dosyasında tanımlayabilirsiniz:
# sft_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: stanfordnlp/imdbŞu komutla başlatın:
trl sft --config sft_config.yaml
# dpo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: anthropic/hh-rlhfŞu komutla başlatın:
trl dpo --config dpo_config.yaml
# reward_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: trl-lib/ultrafeedback_binarizedŞu komutla başlatın:
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Şu komutla başlatın:
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Şu komutla başlatın:
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Şu komutla başlatın:
trl kto --config kto_config.yaml
torchrun ile Ölçeklendirme
TRL CLI, eğitim başlatmak için torchrun kullanır ve kullanılabilir her GPU için bir süreç oluşturur. torchrun argümanları, örneğin --nproc_per_node veya --nnodes gibi, doğrudan trl'ye geçirilebilir.
trl sft \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name stanfordnlp/imdb \ --nproc_per_node 4
veya bir yapılandırma dosyası ile:
# sft_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: stanfordnlp/imdb
nproc_per_node: 4Şu komutla başlatın:
trl sft --config sft_config.yaml
trl dpo \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name anthropic/hh-rlhf \ --nproc_per_node 4
veya bir yapılandırma dosyası ile:
# dpo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: anthropic/hh-rlhf
nproc_per_node: 4Şu komutla başlatın:
trl dpo --config dpo_config.yaml
trl reward \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name trl-lib/ultrafeedback_binarized \ --nproc_per_node 4
veya bir yapılandırma dosyası ile:
# reward_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: trl-lib/ultrafeedback_binarized
nproc_per_node: 4Şu komutla başlatın:
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 \ --nproc_per_node 4
veya bir yapılandırma dosyası ile:
# grpo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: HuggingFaceH4/Polaris-Dataset-53K
reward_funcs:
- accuracy_reward
nproc_per_node: 4Şu komutla başlatın:
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 \ --nproc_per_node 4
veya bir yapılandırma dosyası ile:
# rloo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: HuggingFaceH4/Polaris-Dataset-53K
reward_funcs:
- accuracy_reward
nproc_per_node: 4Şu komutla başlatın:
trl rloo --config rloo_config.yaml
trl kto \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name trl-lib/kto-mix-14k \ --nproc_per_node 4
veya bir yapılandırma dosyası ile:
# kto_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: trl-lib/kto-mix-14k
nproc_per_node: 4Şu komutla başlatın:
trl kto --config kto_config.yaml
DeepSpeed ve FSDP
DeepSpeed ZeRO ve FSDP, herhangi bir Trainer'da olduğu gibi eğitim argümanları üzerinden yapılandırılır: --deepspeed bir DeepSpeed JSON yapılandırması alır, --fsdp ise FSDP'yi etkinleştirir ve --fsdp_config ile ayarlanır. Komut satırında yalnızca --fsdp kullanmak için transformers 5.10 veya daha yeni bir sürüm gereklidir; daha eski sürümlerde yapılandırma dosyasında fsdp: true olarak ayarlayın. Hazır yapılandırmalar examples/deepspeed_configs ve examples/fsdp_configs dizinlerinde bulunur. TRL'yi pip ile yüklediyseniz, bu ZeRO-2 yapılandırmasını zero2.json olarak kaydedin ve --deepspeed zero2.json parametresini iletin:
{
"bf16": {"enabled": "auto"},
"zero_optimization": {
"stage": 2,
"offload_optimizer": {"device": "none"}
},
"gradient_accumulation_steps": "auto",
"gradient_clipping": "auto",
"train_batch_size": "auto",
"train_micro_batch_size_per_gpu": "auto"
}trl sft \
--model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name stanfordnlp/imdb \
--deepspeed examples/deepspeed_configs/zero2.json # or --fsdpveya bir yapılandırma dosyası ile:
# sft_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: stanfordnlp/imdb
deepspeed: examples/deepspeed_configs/zero2.json # or fsdp: trueŞu komutla başlatın:
trl sft --config sft_config.yaml
trl dpo \
--model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name anthropic/hh-rlhf \
--deepspeed examples/deepspeed_configs/zero2.json # or --fsdpveya bir yapılandırma dosyası ile:
# dpo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: anthropic/hh-rlhf
deepspeed: examples/deepspeed_configs/zero2.json # or fsdp: trueŞu komutla başlatın:
trl dpo --config dpo_config.yaml
trl reward \
--model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name trl-lib/ultrafeedback_binarized \
--deepspeed examples/deepspeed_configs/zero2.json # or --fsdpveya bir yapılandırma dosyası ile:
# reward_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: trl-lib/ultrafeedback_binarized
deepspeed: examples/deepspeed_configs/zero2.json # or fsdp: trueŞu komutla başlatın:
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 \
--deepspeed examples/deepspeed_configs/zero2.json # or --fsdpveya bir yapılandırma dosyası ile:
# grpo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: HuggingFaceH4/Polaris-Dataset-53K
reward_funcs:
- accuracy_reward
deepspeed: examples/deepspeed_configs/zero2.json # or fsdp: trueŞu komutla başlatın:
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 \
--deepspeed examples/deepspeed_configs/zero2.json # or --fsdpveya bir yapılandırma dosyası ile:
# rloo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: HuggingFaceH4/Polaris-Dataset-53K
reward_funcs:
- accuracy_reward
deepspeed: examples/deepspeed_configs/zero2.json # or fsdp: trueŞu komutla başlatın:
trl rloo --config rloo_config.yaml
trl kto \
--model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name trl-lib/kto-mix-14k \
--deepspeed examples/deepspeed_configs/zero2.json # or --fsdpveya bir yapılandırma dosyası ile:
# kto_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: trl-lib/kto-mix-14k
deepspeed: examples/deepspeed_configs/zero2.json # or fsdp: trueŞu komutla başlatın:
trl kto --config kto_config.yaml
TRL v2.0.0'a kadar,
trl; yalnızcaaccelerate launch'in bildiği--num_processesveya--accelerate_configgibi argümanlar aldığında ya da biraccelerate configvarsayılan dosyası mevcut olduğunda hâlâaccelerate launchüzerinden başlatılır. Bu yol kullanımdan kaldırılmıştır ve bir uyarı verir.
Veri seti karışımlarını kullanma
Birden fazla veri setini tek bir eğitim veri setinde birleştirmek için veri seti karışımlarını kullanabilirsiniz. Bu, çeşitli veri kaynaklarında eğitim yapmak veya farklı veri türlerini karıştırmak istediğinizde faydalıdır.
# sft_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
datasets:
- path: stanfordnlp/imdb
- path: roneneldan/TinyStoriesŞu komutla başlatın:
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Şu komutla başlatın:
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Şu komutla başlatın:
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Şu komutla başlatın:
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Şu komutla başlatın:
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Şu komutla başlatın:
trl kto --config kto_config.yaml
Veri seti karışımlarını tanımlamak için kullanılabilen tüm anahtar kelimeleri görmek için scripts.utils.DatasetConfig ve DatasetMixtureConfig sınıflarına başvurun.
Sistem Bilgilerini Alma
Aşağıdaki komutu çalıştırarak sistem bilgilerini alabilirsiniz:
trl envBu komut, GPU bilgileri, CUDA sürümü, PyTorch sürümü, transformers sürümü, TRL sürümü ve kurulu isteğe bağlı bağımlılıklar dahil olmak üzere sistem bilgilerini yazdırır.
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 installedBu bilgi, bir sorun bildirirken gereklidir.
Update on GitHub