TRL documentation
واجهات سطر الأوامر (CLIs)
واجهات سطر الأوامر (CLIs)
توفّر TRL واجهة سطر أوامر (CLI) قوية لضبط نماذج اللغة الكبيرة (LLMs) باستخدام طرق مثل الضبط الإشرافي (SFT) وتحسين التفضيلات المباشرة (DPO) وغيرها. تُخفي واجهة سطر الأوامر معظم الشيفرة التمهيدية، مما يتيح لك إطلاق مهام التدريب بسرعة وبشكل قابل للتكرار.
الأوامر
الأوامر المدعومة حاليًا هي:
أوامر التدريب
trl distillation: تقطير نموذج المعلم إلى نموذج الطالب باستخدام تقطير المعرفة على السياسةtrl dpo: ضبط نموذج لغة كبير باستخدام DPOtrl grpo: ضبط نموذج LLM باستخدام GRPOtrl kto: ضبط نموذج لغة كبير باستخدام KTOtrl reward: تدريب نموذج المكافأةtrl rloo: ضبط نموذج لغة كبير باستخدام RLOOtrl sft: ضبط نموذج لغة كبير باستخدام SFT
أوامر أخرى
trl env: الحصول على معلومات النظامtrl vllm-serve: تقديم نموذج باستخدام vLLM (مُتروك، استخدمvllm serveمباشرة، راجع تكامل vLLM)
الضبط الدقيق باستخدام واجهة سطر الأوامر TRL
الاستخدام الأساسي
يمكنك بدء التدريب مباشرةً من سطر الأوامر عن طريق تحديد الحجج المطلوبة مثل النموذج ومجموعة البيانات:
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
استخدام ملفات الإعداد
للحفاظ على أوامر سطر الأوامر نظيفة وقابلة للتكرار، يمكنك تحديد جميع حُجج التدريب في ملف تكوين بصيغة 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، مما يسهّل توسيع نطاق التدريب عبر وحدات معالجة رسومية متعددة أو أجهزة متعددة، أو استخدام إعدادات متقدمة مثل DeepSpeed — كل ذلك من نفس سطر الأوامر.
يمكنك تمرير أي من حُجج 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_config لإعداد Accelerate
يسمح لك علم --accelerate_config بإعداد التدريب الموزّع بسهولة باستخدام 🤗 Accelerate. يقبل هذا العلم أحد الخيارين التاليين:
- اسم ملف تكوين مُعرَّف مسبقًا (مدمج في TRL)، أو
- مسار إلى ملف إعدادات YAML مخصص لـ Accelerate.
ملفات تعريف الإعدادات المحددة مسبقًا
توفر TRL عدة إعدادات جاهزة للاستخدام من Accelerate لتبسيط إعدادات التدريب الشائعة:
| الاسم | الوصف |
|---|---|
fsdp1 | المرحلة الأولى من التوازي الكامل للبيانات المجزأة |
fsdp2 | مرحلة 2 من التوازي الكامل للبيانات المجزأة |
zero1 | DeepSpeed ZeRO المرحلة 1 |
zero2 | DeepSpeed ZeRO المرحلة 2 |
zero3 | DeepSpeed ZeRO المرحلة 3 |
multi_gpu | التدريب على وحدات معالجة رسومات متعددة |
single_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