TRL documentation

Komut Satırı Arayüzleri (CLIs)

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

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ıtma
  • trl dpo: DPO ile bir LLM'i ince ayar yapın
  • trl grpo: GRPO ile bir LLM'i ince ayar yapın
  • trl kto: KTO ile bir LLM'i ince ayar yapın
  • trl reward: Ödül Modeli eğit
  • trl rloo: RLOO ile bir LLM'i ince ayar yapın
  • trl sft: SFT ile bir LLM'yi ince ayar yapın

Diğer Komutlar

  • trl env: sistem bilgilerini getirir
  • trl vllm-serve: bir modeli vLLM ile sun (kullanımdan kaldırıldı, doğrudan vllm serve kullanı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:

SFT
DPO
Ödül
GRPO
RLOO
KTO
trl sft \
  --model_name_or_path Qwen/Qwen2.5-0.5B \
  --dataset_name stanfordnlp/imdb

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
DPO
Ödül
GRPO
RLOO
KTO
# 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

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.

SFT
DPO
Ödül
GRPO
RLOO
KTO
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

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"
}
SFT
DPO
Ödül
GRPO
RLOO
KTO
trl sft \
  --model_name_or_path Qwen/Qwen2.5-0.5B \
  --dataset_name stanfordnlp/imdb \
  --deepspeed examples/deepspeed_configs/zero2.json  # or --fsdp

veya 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 v2.0.0'a kadar, trl; yalnızca accelerate launch'in bildiği --num_processes veya --accelerate_config gibi argümanlar aldığında ya da bir accelerate config varsayı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
DPO
Ödül
GRPO
RLOO
KTO
# 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

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 env

Bu 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 installed

Bu bilgi, bir sorun bildirirken gereklidir.

Update on GitHub