TRL documentation

واجهات سطر الأوامر (CLIs)

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

واجهات سطر الأوامر (CLIs)

توفّر TRL واجهة سطر أوامر (CLI) قوية لضبط نماذج اللغة الكبيرة (LLMs) باستخدام طرق مثل الضبط الإشرافي (SFT) وتحسين التفضيلات المباشرة (DPO) وغيرها. تُخفي واجهة سطر الأوامر معظم الشيفرة التمهيدية، مما يتيح لك إطلاق مهام التدريب بسرعة وبشكل قابل للتكرار.

الأوامر

الأوامر المدعومة حاليًا هي:

أوامر التدريب

  • trl distillation: تقطير نموذج المعلم إلى نموذج الطالب باستخدام تقطير المعرفة على السياسة
  • trl dpo: ضبط نموذج لغة كبير باستخدام DPO
  • trl grpo: ضبط نموذج LLM باستخدام GRPO
  • trl kto: ضبط نموذج لغة كبير باستخدام KTO
  • trl reward: تدريب نموذج المكافأة
  • trl rloo: ضبط نموذج لغة كبير باستخدام RLOO
  • trl sft: ضبط نموذج لغة كبير باستخدام SFT

أوامر أخرى

  • trl env: الحصول على معلومات النظام
  • trl vllm-serve: تقديم نموذج باستخدام vLLM (مُتروك، استخدم vllm serve مباشرة، راجع تكامل vLLM)

الضبط الدقيق باستخدام واجهة سطر الأوامر TRL

الاستخدام الأساسي

يمكنك بدء التدريب مباشرةً من سطر الأوامر عن طريق تحديد الحجج المطلوبة مثل النموذج ومجموعة البيانات:

SFT
DPO
المكافأة
GRPO
RLOO
KTO
trl sft \
  --model_name_or_path Qwen/Qwen2.5-0.5B \
  --dataset_name stanfordnlp/imdb

استخدام ملفات الإعداد

للحفاظ على أوامر سطر الأوامر نظيفة وقابلة للتكرار، يمكنك تحديد جميع حُجج التدريب في ملف تكوين بصيغة 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

التوسع باستخدام torchrun

يبدأ TRL CLI التدريب باستخدام torchrun، بعملية واحدة لكل وحدة معالجة رسومية متاحة. يمكن تمرير أي حجة من torchrun مباشرة إلى trl، مثل --nproc_per_node أو --nnodes.

SFT
DPO
المكافأة
GRPO
RLOO
KTO
trl sft \
  --model_name_or_path Qwen/Qwen2.5-0.5B \
  --dataset_name stanfordnlp/imdb \
  --nproc_per_node 4

أو، باستخدام ملف تكوين:

# sft_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: stanfordnlp/imdb
nproc_per_node: 4

شغّل باستخدام:

trl sft --config sft_config.yaml

DeepSpeed و FSDP

يتم تكوين DeepSpeed ZeRO و FSDP من خلال حُجج التدريب، تمامًا كما هو الحال مع أي Trainer: حيث يقبل --deepspeed ملف تكوين JSON الخاص بـ DeepSpeed، بينما يُفعّل --fsdp تقنية FSDP، ويُضبط عبر --fsdp_config. يتطلب استخدام --fsdp وحده في سطر الأوامر إصدار transformers 5.10 أو أحدث؛ أما مع الإصدارات الأقدم، فيجب تعيين fsdp: true في ملف التكوين. توجد ملفات التكوين الجاهزة للاستخدام في examples/deepspeed_configs و examples/fsdp_configs. إذا قمت بتثبيت TRL باستخدام pip، فاحفظ هذا تكوين ZeRO-2 باسم zero2.json وقم بتمرير --deepspeed zero2.json:

{
  "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
المكافأة
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

أو، باستخدام ملف تكوين:

# 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

شغّل باستخدام:

trl sft --config sft_config.yaml

حتى إصدار TRL v2.0.0، ما يزال trl يُشغَّل عبر accelerate launch عندما يستقبل حُججاً لا يعرفها سوى accelerate launch، مثل --num_processes أو --accelerate_config، أو عندما يوجد ملف افتراضي لـaccelerate config. هذا المسار مُتقادم ويُصدر تحذيراً.

استخدام خلطات مجموعات البيانات

يمكنك استخدام خلطات مجموعات البيانات لدمج عدة مجموعات بيانات في مجموعة بيانات تدريب واحدة. وهذا مفيد عند التدريب على مصادر بيانات متنوعة أو عندما ترغب في خلط أنواع مختلفة من البيانات.

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