Home
Login

مكتبة تدريب نماذج اللغة الكبيرة القائمة على التعلم المعزز، تدعم تقنيات التدريب اللاحق المتقدمة مثل SFT و PPO و DPO.

Apache-2.0Python 14.3khuggingface Last Updated: 2025-06-19

TRL - مقدمة تفصيلية لمكتبة التعلم المعزز للمحولات

نظرة عامة على المشروع

TRL (Transformer Reinforcement Learning) هي مكتبة متطورة تم تطويرها بواسطة HuggingFace، وهي متخصصة في التدريب اللاحق للنماذج الأساسية باستخدام تقنيات متقدمة. تم تصميم هذه المكتبة خصيصًا للتدريب اللاحق للنماذج الأساسية، باستخدام تقنيات متقدمة مثل الضبط الدقيق الخاضع للإشراف (SFT)، وتحسين السياسة التقريبية (PPO)، والتحسين المباشر للتفضيلات (DPO).

مميزات المشروع

  • يعتمد على التعلم المعزز: يجمع بين التعلم المعزز وهندسة المحولات، ويوجه عملية الضبط الدقيق للنماذج اللغوية المدربة مسبقًا باستخدام تقنيات التعلم المعزز.
  • حل متكامل: يوفر سلسلة أدوات كاملة لتدريب نماذج لغوية تعتمد على المحولات.
  • تكامل مع نظام HuggingFace البيئي: مبني بالكامل على نظام 🤗 Transformers البيئي.

الوظائف الأساسية

1. طرق تدريب متعددة

توفر TRL مجموعة متنوعة من المدربين سهلي الوصول:

  • SFTTrainer: مدرب الضبط الدقيق الخاضع للإشراف.
  • GRPOTrainer: مدرب تحسين السياسة النسبية الجماعية.
  • DPOTrainer: مدرب التحسين المباشر للتفضيلات.
  • RewardTrainer: مدرب نموذج المكافأة.

2. كفاءة وقابلية للتوسع

  • دعم متعدد للأجهزة: تحقيق التوسع من وحدة معالجة رسومات واحدة (GPU) إلى مجموعة متعددة العقد من خلال 🤗 Accelerate.
  • تحسين الذاكرة: يدعم طرق التدريب الموزعة مثل DDP و DeepSpeed.
  • تكامل PEFT: يتكامل بشكل كامل مع 🤗 PEFT، مما يتيح تدريب النماذج الكبيرة على أجهزة محدودة من خلال التكميم و LoRA/QLoRA.
  • تسريع الأداء: يتكامل مع 🦥 Unsloth، باستخدام نوى محسنة لتسريع التدريب.

3. واجهة سطر الأوامر

يوفر واجهة سطر أوامر بسيطة، مما يسمح بضبط النماذج بدقة دون الحاجة إلى كتابة التعليمات البرمجية.

سيناريوهات التطبيق الرئيسية

1. الضبط الدقيق الخاضع للإشراف (SFT)

from trl import SFTTrainer
from datasets import load_dataset

dataset = load_dataset("trl-lib/Capybara", split="train")
trainer = SFTTrainer(
    model="Qwen/Qwen2.5-0.5B",
    train_dataset=dataset,
)
trainer.train()

2. تحسين السياسة النسبية الجماعية (GRPO)

تعتبر خوارزمية GRPO أكثر كفاءة في استخدام الذاكرة من PPO، وقد استخدمت لتدريب نموذج R1 الخاص بـ Deepseek AI:

from datasets import load_dataset
from trl import GRPOTrainer

dataset = load_dataset("trl-lib/tldr", split="train")

def reward_num_unique_chars(completions, **kwargs):
    return [len(set(c)) for c in completions]

trainer = GRPOTrainer(
    model="Qwen/Qwen2-0.5B-Instruct",
    reward_funcs=reward_num_unique_chars,
    train_dataset=dataset,
)
trainer.train()

3. التحسين المباشر للتفضيلات (DPO)

DPO هي خوارزمية شائعة، وقد استخدمت للتدريب اللاحق لنماذج مثل Llama 3:

from datasets import load_dataset
from transformers import AutoModelForCausalLM, AutoTokenizer
from trl import DPOConfig, DPOTrainer

model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-0.5B-Instruct")
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-0.5B-Instruct")
dataset = load_dataset("trl-lib/ultrafeedback_binarized", split="train")

training_args = DPOConfig(output_dir="Qwen2.5-0.5B-DPO")
trainer = DPOTrainer(
    model=model,
    args=training_args,
    train_dataset=dataset,
    processing_class=tokenizer
)
trainer.train()

4. تدريب نموذج المكافأة

from trl import RewardConfig, RewardTrainer
from datasets import load_dataset
from transformers import AutoModelForSequenceClassification, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-0.5B-Instruct")
model = AutoModelForSequenceClassification.from_pretrained(
    "Qwen/Qwen2.5-0.5B-Instruct", num_labels=1
)

dataset = load_dataset("trl-lib/ultrafeedback_binarized", split="train")
training_args = RewardConfig(output_dir="Qwen2.5-0.5B-Reward")

trainer = RewardTrainer(
    args=training_args,
    model=model,
    processing_class=tokenizer,
    train_dataset=dataset,
)
trainer.train()

طريقة التثبيت

التثبيت القياسي

pip install trl

تثبيت نسخة التطوير

pip install git+https://github.com/huggingface/trl.git

تثبيت من المصدر (للمساهمة في التطوير)

git clone https://github.com/huggingface/trl.git
cd trl/
pip install -e .[dev]

استخدام سطر الأوامر

تدريب SFT

trl sft --model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name trl-lib/Capybara \
--output_dir Qwen2.5-0.5B-SFT

تدريب DPO

trl dpo --model_name_or_path Qwen/Qwen2.5-0.5B-Instruct \
--dataset_name argilla/Capybara-Preferences \
--output_dir Qwen2.5-0.5B-DPO

المزايا التقنية

  1. نظام بيئي كامل: يعتمد بالكامل على نظام HuggingFace البيئي، ويتكامل بسلاسة مع الأدوات الحالية.
  2. دعم متعدد الوسائط: يدعم العديد من هياكل النماذج والوسائط.
  3. قابلية توسع عالية: توسع مرن من وحدة معالجة رسومات واحدة إلى مجموعة متعددة العقد.
  4. كفاءة الذاكرة: تحقيق تدريب فعال للنماذج الكبيرة من خلال التكميم وتقنيات LoRA.
  5. سهولة الاستخدام: يوفر واجهات برمجة تطبيقات وواجهات سطر أوامر بسيطة.
  6. جاهز للإنتاج: يدعم احتياجات التدريب واسعة النطاق في بيئات الإنتاج.

مجالات التطبيق

  • أنظمة المحادثة: تدريب روبوتات محادثة وذكاء اصطناعي للمحادثة أفضل.
  • إنشاء المحتوى: تحسين جودة واتساق نماذج إنشاء النصوص.
  • إنشاء التعليمات البرمجية: تحسين أداء نماذج إنشاء التعليمات البرمجية.
  • أسئلة وأجوبة المعرفة: تحسين دقة أنظمة الأسئلة والأجوبة.
  • الكتابة الإبداعية: تدريب الذكاء الاصطناعي للكتابة الإبداعية وإنشاء المحتوى.

ملخص

TRL هي مكتبة قوية وسهلة الاستخدام، توفر للباحثين والمطورين مجموعة أدوات كاملة لتدريب وتحسين النماذج اللغوية الكبيرة. فهو يجمع بين أحدث تقنيات التعلم المعزز ومزايا نظام HuggingFace البيئي، مما يجعل تدريب النماذج عالية الجودة أكثر سهولة وكفاءة. سواء كان البحث الأكاديمي أو التطبيقات الصناعية، فإن TRL هو الخيار الأمثل للتدريب اللاحق لنماذج المحولات.