TRL (Transformer Reinforcement Learning) هي مكتبة متطورة تم تطويرها بواسطة HuggingFace، وهي متخصصة في التدريب اللاحق للنماذج الأساسية باستخدام تقنيات متقدمة. تم تصميم هذه المكتبة خصيصًا للتدريب اللاحق للنماذج الأساسية، باستخدام تقنيات متقدمة مثل الضبط الدقيق الخاضع للإشراف (SFT)، وتحسين السياسة التقريبية (PPO)، والتحسين المباشر للتفضيلات (DPO).
توفر TRL مجموعة متنوعة من المدربين سهلي الوصول:
يوفر واجهة سطر أوامر بسيطة، مما يسمح بضبط النماذج بدقة دون الحاجة إلى كتابة التعليمات البرمجية.
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()
تعتبر خوارزمية 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()
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()
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]
trl sft --model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name trl-lib/Capybara \
--output_dir Qwen2.5-0.5B-SFT
trl dpo --model_name_or_path Qwen/Qwen2.5-0.5B-Instruct \
--dataset_name argilla/Capybara-Preferences \
--output_dir Qwen2.5-0.5B-DPO
TRL هي مكتبة قوية وسهلة الاستخدام، توفر للباحثين والمطورين مجموعة أدوات كاملة لتدريب وتحسين النماذج اللغوية الكبيرة. فهو يجمع بين أحدث تقنيات التعلم المعزز ومزايا نظام HuggingFace البيئي، مما يجعل تدريب النماذج عالية الجودة أكثر سهولة وكفاءة. سواء كان البحث الأكاديمي أو التطبيقات الصناعية، فإن TRL هو الخيار الأمثل للتدريب اللاحق لنماذج المحولات.