TRL documentation
فهرس الأوراق
فهرس الأوراق
تربط كل ورقة أدناه إلى صفحة ورقتها على Hugging Face. كما يمكنك قراءة أيٍّ منها من الطرفية باستخدام واجهة
hf، على سبيل المثالhf papers read 2402.03300— وهو أمر مفيد بشكل خاص لوكلاء البرمجة.
تحسين السياسة النسبي للمجموعات
الأوراق البحثية المتعلقة بـ GRPOTrainer.
DeepSeekMath: دفع حدود الاستدلال الرياضي في نماذج اللغة المفتوحة
📜 الورقة البحثية: https://huggingface.co/papers/2402.03300
يُقدّم تحسين السياسة النسبي الجماعي (GRPO) ويُظهر مكاسب قوية في الاستدلال الرياضي من خلال التدريب المسبق المتمحور حول الرياضيات بالإضافة إلى تحسين بأسلوب PPO النسبي على مستوى المجموعة. يُستخدم في TRL عبر GRPOTrainer.
from trl import GRPOConfig, GRPOTrainer
# The paper doesn't specify its hyperparameters, so here we provide hyperparameters from "DeepSeek-R1 incentivizes reasoning in LLMs through reinforcement learning" instead.
training_args = GRPOConfig(
loss_type="grpo",
beta=0.001, # "the KL coefficient to 0.001"
epsilon=10.0, # "the GRPO clip ratio ϵ to 10"
num_generations=16, # "For each question, we sample 16 outputs..."
max_completion_length=32_768, # "...with a maximum length of 32,768"
steps_per_generation=16, # "To accelerate training, each rollout generates 8,192 outputs, which are randomly split into 16 minibatches"
# "resulting in a training batch size of 512". One way to achieve this setting with 1 device is per_device_train_batch_size=4, gradient_accumulation_steps=128
per_device_train_batch_size=4,
gradient_accumulation_steps=128,
)
trainer = GRPOTrainer(
...,
args=training_args,
)DeepSeek-R1: تحفيز القدرة على الاستدلال في نماذج اللغة الكبيرة عبر التعلم المعزز
📜 الورقة البحثية: https://huggingface.co/papers/2501.12948
يحقق DeepSeek-R1 أداءً في الاستدلال يضاهي أداء OpenAI-o1 من خلال خط أنابيب متعدد المراحل ينتقل من التعلم المعزز النقي (RL) إلى نموذج مصقول ومحاذاة مع البشر. وعلى عكس سلفه DeepSeek-R1-Zero الذي استخدم التعلم المعزز النقي على نموذج أساسي، يتبع R1 تطورًا منظمًا على أربع مراحل:
- البداية الباردة: يتم ضبط النموذج الأساسي على مجموعة صغيرة من بيانات سلسلة التفكير (CoT) طويلة وعالية الجودة، لتوفير نقطة انطلاق مستقرة.
- التعزيز التعزيزي الموجّه نحو الاستدلال: يُطبَّق التعزيز التعزيزي على نطاق واسع لتعزيز الأداء في الرياضيات والبرمجة والمنطق، باستخدام مكافآت قائمة على القواعد ومكافأة اتساق لغوي لتقليل الخلط اللغوي.
- العينة الرفضية والتدريب الدقيق الإشرافي: ينتج نقطة التثبيت الخاصة بالتعلم المعزز 600 ألف عينة استدلال عبر العينة الرفضية، والتي تُدمج مع 200 ألف عينة غير استدلال (عامة) لإنشاء مجموعة بيانات جديدة لجولة ثانية من التدريب الدقيق الإشرافي.
- التعزيز التعزيزي لجميع السيناريوهات: مرحلة تعزيز نهائية تُحاذا الموديل مع تفضيلات البشر (المفيدة والبريئة) عبر جميع المجالات مع الحفاظ على قوة الاستدلال.
التقطير: تمكين النماذج الصغيرة
يتمثل أحد المساهمات الرئيسية للورقة في إثبات إمكانية استخلاص أنماط الاستدلال من نموذج كبير (DeepSeek-R1) إلى نماذج كثيفة أصغر (مثل سلسلة Qwen و Llama). وقد تبيّن أن التقطير أكثر فعالية للنماذج الصغيرة مقارنةً بتدريبها من الصفر باستخدام التعلم المعزز النقي.
يمكنك استخدام GRPOTrainer لتكرار المراحل التي تعتمد بشكل كبير على الاستدلال في هذا الخط الأنابيب.
from trl import GRPOConfig, GRPOTrainer
# Example configuration for a reasoning-oriented GRPO stage
# Based on the Open-R1 recipe for Qwen-7B
training_args = GRPOConfig(
learning_rate=4.0e-5,
max_completion_length=32768, # Support for long Chain-of-Thought
num_generations=16, # Sample 16 outputs per prompt for group relative advantage
beta=0.001, # KL coefficient
use_vllm=True, # Use vLLM backend for accelerated rollout generation
)
trainer = GRPOTrainer(
model=model,
args=training_args,
train_dataset=dataset,
reward_funcs=[accuracy_reward, format_reward], # R1-Zero used rule-based rewards
)
trainer.train()تحسين سياسة تسلسل المجموعة
📜 الورقة البحثية: https://huggingface.co/papers/2507.18071
GSPO هو متغير من GRPO يحسب أوزات أخذ العينات المهمة على مستوى التسلسل بدلاً من مستوى الرمز الواحد. لإعادة إنتاج إعداد الورقة البحثية، استخدم هذا التكوين:
from trl import GRPOConfig
training_args = GRPOConfig(
importance_sampling_level="sequence",
loss_type="grpo",
beta=0.0, # GSPO set KL regularization to zero: https://github.com/volcengine/verl/pull/2775#issuecomment-3131807306
epsilon=3e-4, # GSPO paper (v2), section 5.1
epsilon_high=4e-4, # GSPO paper (v2), section 5.1
gradient_accumulation_steps=1,
steps_per_generation=4, # partition rollout batch into 4 mini-batches. GSPO paper (v2), section 5.1. Must be 4 times gradient_accumulation_steps
)لاحظ أن هذه الطريقة لا تؤثر إلا عندما يكون التدريب بعيدًا قليلاً عن السياسة (off-policy) — على سبيل المثال، عندما يكون steps_per_generation > gradient_accumulation_steps أو num_iterations > 1. وإلا، فهي مكافئة فعليًا لعدم إجراء أي تعديل.
أصدر TRL تنفيذًا تجريبيًا لـ GSPO-token حتى الإصدار v1.13؛ لم يعد جزءًا من المكتبة ولا يزال متاحًا في سجل git. اختلف عن هدف مستوى التسلسل أعلاه فقط عندما يتغير الميزة مع , ، وهو ما لا ينتجه TRL حاليًا.
نسبة السياسة: GRPO مقابل GSPO
في GSPO، يُعرَّف نسبة السياسة على مستوى التسلسل. بمعنى آخر، هي النسبة بين احتمال توليد السياسة الحالية للتسلسل واحتمال توليد السياسة القديمة لذلك التسلسل نفسه.
يُعرَّف احتمال التسلسل على النحو التالي:
حيث هو السياسة بالمعاملات , هو -التسلسل الناتج رقم و هو الرمز رقم -في هذا التسلسل، هو الاستعلام المدخل. نسبة احتمال التسلسل معرّفة على النحو التالي:
الأس يمثّل تطبيعًا بناءً على طول التسلسل، ويقلّل من تأثير طول التسلسل في احتمال التسلسل. بعبارة أخرى، يحسب المتوسط الهندسي لاحتمالات الرموز، مما يضمن مقارنة عادلة بين تسلسلات بطول متباين.
بينما يُعرّف GSPO نسبة السياسة على مستوى التسلسل، يعمل GRPO على مستوى الرمز. على وجه التحديد، يحسب GRPO نسبة أهمية لكل رمز في التسلسل:
يتم بعد ذلك دمج هذا النسبة على مستوى الرموز مع ميزة مشتركة , ويقوم هدف GRPO بقص وتحسين كل رمز بشكل مستقل عبر التسلسل.
تحسين سياسة المتوسط الهندسي
📜 الورقة البحثية: https://huggingface.co/papers/2507.20673
تحسين سياسة المتوسط الهندسي (GMPO) هو متغير من GRPO يعظّم المتوسط الهندسي لنسب الأهمية على مستوى الرموز بدلاً من المتوسط الحسابي. المتوسط الهندسي أقل حساسية بكثير للنسب الشاذة، مما يجعل تحديث السياسة أكثر استقراراً ويتسامح مع نطاق قصّ أوسع بكثير. يُطبَّق القصّ لكل رمز، في فضاء اللوغاريتم، وهو جانب واحد حسب إشارة الميزة (منطقة الثقة القياسية في PPO) — والأهم من ذلك، قبل أخذ المتوسط الهندسي. هذا ما يميّز GMPO عن GSPO (importance_sampling_level="sequence")، الذي يقصّ نسبة مستوى التسلسل بعد المتوسط.
يستبدل هدف GMPO المتوسط الحسابي لكل رمز في GRPO بمتوسط النسب الهندسي (المقصوص) للرموز:
حيث هو نسبة الأهمية لكل رمز. عمليًا، يتم حساب الضرب والقص في فضاء اللوغاريتمات لضمان الاستقرار العددي، ونطاق القص أوسع بكثير من GRPO/DAPO لتشجيع الاستكشاف.
توفر TRL تطبيقًا تجريبيًا، راجع تجريبي - GMPO:
from trl.experimental.gmpo import GMPOConfig, GMPOTrainer
training_args = GMPOConfig(
epsilon=0.4, # log-space clip range -> ratios clipped to (exp(-0.4), exp(0.4)); paper, Sec. 4
beta=0.0,
)DAPO: نظام تعليل تعزيزي مفتوح المصدر لنماذج اللغة الكبيرة على نطاق واسع
📜 الورقة البحثية: https://huggingface.co/papers/2503.14476
يتضمن خوارزمية DAPO خمسة مكونات رئيسية:
- التصفية الطويلة
- Clip-Higher
- عقاب ناعم للردود الطويلة
- خسارة على مستوى الرموز
- العينة الديناميكية (⚠️ غير مدعومة في TRL)
لإعادة إنتاج إعدادات الورقة البحثية، استخدم هذا الإعداد:
from trl import GRPOConfig, GRPOTrainer
training_args = GRPOConfig(
# Overlong Filtering
mask_truncated_completions=True,
# Token-level Loss
loss_type="dapo",
# Clip-Higher
epsilon_high=0.28, # DAPO paper: section 4.1
epsilon=0.2, # DAPO paper: section 4.1
# Other parameters used
per_device_train_batch_size=512, # mini-batch size for training in the paper, DAPO paper: section 4.1
num_generations=16, # number of sample responses in the paper, DAPO paper: section 4.1
max_completion_length=20480, # maximum number of tokens for generation in the paper, DAPO paper: section 4.1
beta=0.0, # section 2.3, DAPO paper
)
# Soft Overlong Punishment
sop_reward = get_soft_overlong_punishment(max_completion_len=20480, soft_punish_cache=4096) # DAPO paper: section 4.1
trainer = GRPOTrainer(
...,
args=training_args,
reward_funcs=[..., sop_reward],
)إزالة الغموض عن الاستدلال طويل السلسلة الفكرية في نماذج اللغة الكبيرة
📜 الورقة البحثية: https://huggingface.co/papers/2502.03373
تدرس هذه الورقة البحثية تعزيز التعلم بطول سلسلة التفكير الطويل، وتقدم مكافأتين قاعدتين متكاملتين:
- مكافأة مقيّسة بطول جيب التمام (get_cosine_scaled_reward()، الملحق C.1) تقوم بمقياس مكافأة الصوابية حسب طول الإكمال: يُكافأ الإكمال الصحيح بمقدار أكبر عندما يكون أقصر، بينما يُعاقب الإكمال الخاطئ بمقدار أقل عندما يكون أطول (مع الحفاظ على الاستكشاف).
- عقوبة تكرار n-gram (get_repetition_penalty_reward()، الملحق C.2) تُثبّط الإكمالات المتدهورة والمكررة التي تظهر كاستراتيجية لتلاعب المكافآت تحت تأثير تشكيل الطول.
صُمِّم الاثنان ليُستخدمَا معًا:
from trl import GRPOTrainer
from trl.rewards import get_cosine_scaled_reward, get_repetition_penalty_reward
# max_len should match the generation budget (in tokens)
cosine_scaled_reward = get_cosine_scaled_reward(max_len=4096)
# Penalize repeated 3-grams, down to -1.0 for fully repetitive completions
repetition_penalty = get_repetition_penalty_reward(ngram_size=3, max_penalty=-1.0)
trainer = GRPOTrainer(
...,
reward_funcs=[cosine_scaled_reward, repetition_penalty],
)INTELLECT-2: نموذج استدلال مُدرَّب عبر التعلم المعزز اللامركزي عالمياً
📜 الورقة البحثية: https://huggingface.co/papers/2505.07291
INTELLECT-2 هو أول تدريب موزّع عالميًا باستخدام التعلم المعزز لنموذج لغوي يحتوي على 32 مليار معامل، باستخدام التعلم المعزز غير المتزامن بالكامل عبر سرب ديناميكي غير متجانس من مساهمي الحوسبة غير المصرّح لهم. يقترح المؤلفون تعديلات على وصفة تدريب GRPO القياسية، بما في ذلك قصّ GRPO من الجانبين لزيادة استقرار التدريب. لإعادة إنتاج إعداد الورقة، استخدم هذا التكوين:
from trl import GRPOConfig
training_args = GRPOConfig(
delta=4, # δ in section 4.1 of the paper
epsilon=0.2, # ε in section 4.1 of the paper
beta=0.001, # KL divergence coefficient in section 4.1 of the paper
num_generations=16, # responses per prompt in section 4.1 of the paper
learning_rate=3e-7, # section 4.1 of the paper
)Skywork-OR1: نماذج الاستدلال المفتوحة
📜 الورقة البحثية: https://huggingface.co/papers/2505.22312
Skywork-OR1 هي عائلة من نماذج الاستدلال المفتوحة التي تم تدريبها باستخدام GRPO. يقدم الورقة العلمية التحكم التكيفي في الإنتروبيا: حيث يُضاف حد تنظيم الإنتروبيا −α·H(π_θ) إلى هدف GRPO، ويُضبط المعامل α تلقائيًا في كل خطوة من خطوات المُحسِّن. عندما تنخفض إنتروبيا النموذج المتوسطة لكل رمز إلى مستوى الهدف أو أقل، يتم زيادة α لتشجيع المزيد من الاستكشاف؛ وإلا يتم تقليله. لا يُطبق المكافأة إلا طالما أن الإنتروبيا عند مستوى الهدف أو أقل. لتكرار هذا التحكم التكيفي في الإنتروبيا، استخدم الإعداد التالي:
from trl import GRPOConfig, GRPOTrainer
training_args = GRPOConfig(
use_adaptive_entropy=True, # enable adaptive entropy control (Section 3.3 of the paper)
entropy_coef=0.01, # initial entropy regularization coefficient
entropy_target=5.0, # target mean per-token entropy (nats); tune for your model
entropy_coef_delta=0.005, # step size for coefficient updates per optimizer step
)
trainer = GRPOTrainer(
...,
args=training_args,
)ما وراء قاعدة 80/20: الرموز الأقلية عالية الإنتروبيا تقود التعلم المعزز الفعال لاستدلال نماذج اللغة الكبيرة
📜 الورقة البحثية: https://huggingface.co/papers/2506.01939
تعمل نسبة قليلة من الرموز ذات الإنتروبيا العالية كـ"تفرعات" في مسار الاستدلال (CoT)، مما يدفع عملية الاستكشاف ويحقق مكاسب في الأداء لخوارزمية RLVR، بينما تساهم الأغلبية من الرموز ذات الإنتروبيا المنخفضة بشكل ضئيل أو حتى تعيق التعلم. تعالج خوارزمية RLVR بشكل رئيسي الرموز ذات الإنتروبيا العالية، مع الحفاظ إلى حد كبير على أنماط الإنتروبيا العامة للنموذج الأساسي. وبذلك، فإن التدريب على 20% فقط من الرموز ذات أعلى إنتروبيا (وفقاً لقاعدة 80/20) يكون مماثلاً أو يتفوق على تحديثات التدرج الكامل لنماذج Qwen3.
تستخدم النتائج الرئيسية للورقة DAPO الصافي (⚠️ لا يدعم TRL العينة الديناميكية). لتكرار النتائج الرئيسية، استخدم الإعداد التالي:
from trl import GRPOConfig, GRPOTrainer
from trl.rewards import get_soft_overlong_punishment
training_args = GRPOConfig(
# --- vanilla DAPO parameters (80/20 rule: section 5.2) --- #
# Overlong Filtering
mask_truncated_completions=True,
# Token-level Loss
loss_type="dapo",
# Clip-Higher
epsilon_high=0.28, # DAPO paper: section 4.1
epsilon=0.2, # DAPO paper: section 4.1
# Other parameters used
per_device_train_batch_size=512, # mini-batch size for training in the paper, DAPO paper: section 4.1
num_generations=16, # number of sample responses in the paper, DAPO paper: section 4.1
max_completion_length=20480, # maximum number of tokens for generation in the paper, DAPO paper: section 4.1
beta=0.0, # section 2.3, DAPO paper
# --- Gradients on the highest entropy tokens --- #
top_entropy_quantile=0.2
)
# Soft Overlong Punishment
sop_reward = get_soft_overlong_punishment(max_completion_len=20480, soft_punish_cache=4096) # DAPO paper: section 4.1
trainer = GRPOTrainer(
...,
args=training_args,
reward_funcs=[..., sop_reward],
)د. GRPO: فهم التدريب المشابه لـ R1-Zero: منظور نقدي
📜 الورقة البحثية: https://huggingface.co/papers/2503.20783
يحدد دراسة حول تدريب R1-Zero تأثيرات ما قبل التدريب على أداء التعلم المعزز، وتقترح Dr. GRPO لتعزيز كفاءة الرموز، محققة دقة أعلى في AIME 2024. لإعادة إنتاج إعدادات الورقة، استخدم هذا التكوين:
from trl import GRPOConfig
training_args = GRPOConfig(
loss_type="dr_grpo",
per_device_train_batch_size=1, # train_batch_size_per_device in the Training section of the repository
num_generations=8, # num_samples in the Training section of the repository
max_completion_length=3000, # generate_max_length in the Training section of the repository
beta=0.0, # β in the Training section of the repository
)الجزء الأول: حيل أم فخاخ؟ غوص عميق في التعلم المعزز لاستدلال نماذج اللغة الكبيرة (Lite PPO)
📜 الورقة البحثية: https://huggingface.co/papers/2508.08221
وجد مؤلفو هذا البحث أن الجمع بين:
- مضاعفة المكافآت بانحراف معياري محسوب على الدفعة الكاملة
- تجميع الخسارة على إجمالي عدد الرموز
يمكن أن يفتح إمكانات التعلم في السياسات الخالية من النقاد باستخدام خسارة PPO التقليدية. تُظهر نتائجهم أن هذا المزيج البسيط يحسّن الأداء باستمرار، متجاوزاً استراتيجيات مثل GRPO وDAPO.
يدعم TRL استخدام هذه المخرجات لتدريب نموذج GRPO من خلال:
from trl import GRPOConfig
training_args = GRPOConfig(
...
scale_rewards="batch",
loss_type="dapo",
# Other parameters used
beta=0.0, # = init_kl_coef in the paper
top_p=0.99,
top_k=100,
temperature=0.99,
num_generations=8, # = num_return_sequences in the paper
num_iterations=1, # = ppo_epochs in the paper
per_device_train_batch_size=4,
gradient_accumulation_steps=32,
steps_per_generation=8, # (rollout_batch_size*num_return_sequences) / (per_device_train_batch_size*gradient_accumulation_steps)
)لاحظ أنه عند استخدام تراكم التدرجات، يتم تجميع الخسارة على إجمالي عدد الرموز في الدفعة، وليس على الدفعة المتراكمة. لمزيد من التفاصيل، راجع GRPO Trainer - Loss types.
عينة الأهمية المقطوعة
📰 المدونة: https://fengyao.notion.site/off-policy-rl
📜 الورقة البحثية: https://huggingface.co/papers/1606.02647
تستخدم طرق تعلّم السياسة عبر الإنترنت بشكل شائع إطار استدلال مُحسَّن لتوليد التمريرات (مثل vLLM) منفصلًا عن بيئة التدريب. وهذا يُدخل عدم تطابق بين التمرير والتدريب، كما هو موضح في هدف PPO التالي:
على الرغم من أن و يتشاركان نفس معاملات النموذج , إلا أنهما قد ينتجان احتمالات رموز مختلفة بشكل كبير. يكسر هذا السلوك غير المتوقع افتراض السياسة الحالية ضمنياً، ويحوّل التدريب إلى سياسة غير حالية بصمت.
تعالج عينة الأهمية المقطوعة (TIS) هذه المشكلة من خلال تكييف تحديث النموذج عبر تصحيح عينة الأهمية. تصبح حسابات التدرّج لدالة PPO المذكورة أعلاه
حيث و هي معاملات خارقة. يتم تنفيذ TIS في GRPO، ويُفعَّل عن طريق اختيار vllm_importance_sampling_mode متغير يتضمن المصطلح truncate, مثل "sequence_truncate" أو "token_truncate".
from trl import GRPOConfig
training_args = GRPOConfig(
...
use_vllm=True,
vllm_importance_sampling_correction=True, # default True
vllm_importance_sampling_mode="sequence_truncate", # or "token_truncate"
vllm_importance_sampling_clip_max=2.0, # hyper-parameter C_max
)عينة الأهمية المقنّعة
📰 المدونة: https://ringtech.notion.site/icepop
📜 الورقة البحثية: https://huggingface.co/papers/2510.18855
يعالج أخذ العينات ذو الأهمية المقنّعة (MIS) نفس المشكلة التي يعالجها أخذ العينات ذو الأهمية المقطوع لكنه يستبدل القصّ بالقناع. يتخذ MIS موقفاً أكثر حسمًا من خلال استبعاد التحديثات التي يقع فرقها خارج النطاق .
يُنفَّذ MIS لـ GRPO، ويُفعَّل عن طريق اختيار متغير لـ vllm_importance_sampling_mode يتضمن المصطلح "mask"، مثل "sequence_mask" أو "token_mask".
from trl import GRPOConfig
training_args = GRPOConfig(
...
use_vllm=True,
vllm_importance_sampling_correction=True, # default True
vllm_importance_sampling_mode="sequence_mask", # or "token_mask"
vllm_importance_sampling_clip_max=2.0, # hyper-parameter C_max
vllm_importance_sampling_clip_min=0.5, # hyper-parameter C_min
)في AsyncGRPOTrainer, تكون احتمالات اللوغاريتم القديمة تابعةً للمُعيّن، لذا يُحسب النسبة مباشرةً بين السياسة المُدرَّبة والمُعيّن، وتُستبعد الرموز خارج من دالة الخسارة. تكون هذه الخاصية مفعّلةً افتراضيًا:
from trl import AsyncGRPOConfig
training_args = AsyncGRPOConfig(
...,
vllm_importance_sampling_clip_min=0.5, # hyper-parameter C_min
vllm_importance_sampling_clip_max=5.0, # hyper-parameter C_max
)عينة الأهمية على مستوى التسلسل
الطريقة المبنية على مبادئ نظرية لتصحيح انزياح التوزيع بين التدريب والاستدلال هي أخذ العينات بأهمية نسبية، كما طُرحت في الورقتين أعلاه أخذ العينات بأهمية نسبية مع القطع وأخذ العينات بأهمية نسبية مع الأقنعة. ومع ذلك، فإن اختيار الصياغة أمر بالغ الأهمية للحفاظ على عدم تحيز التدرّج وضمان تدريب مستقر.
يُظهر هذا العمل أن أخذ العينات المهمة على مستوى التسلسل هو النهج السليم لمعالجة عدم التطابق بين التدريب والاستدلال. على الرغم من أن أخذ العينات المهمة على مستوى الرمز يحقق تباينًا أقل من نسبة على مستوى التسلسل، إلا أنه يُدخل تحيزًا، ولذلك يُحجج بأنه غير مناسب للنماذج الذاتية التوليد. مُقدِّر التدرّج على مستوى الرمز هو يُطبّق مُقدِّر تدرّج السياسة الصحيح وغير المتحيز نسبة أهمية واحدة على كامل التسلسل المولَّد (المسار) , يبدو مُقدِّر أخذ العينات المهمة على مستوى التسلسل على النحو التالي:
تُتيح TRL مستوى حُبيبية أخذ العينات المهمة من خلال معامل الإعداد vllm_importance_sampling_mode حيث تُمثّل أوضاع "sequence_*" نسبة أخذ عينات مهمة على مستوى التسلسل، بينما تُمثّل أوضاع "token_*" نسبة لكل رمز.
فن توسيع نطاق التعلم المعزز
📜 الورقة البحثية: https://huggingface.co/papers/2510.13786
دراسة منهجية تُعرّف إطارًا لتحليل وتوقع توسيع التعلم المعزز في نماذج اللغة الكبيرة، وتحدد الخيارات التصميمية الرئيسية التي تؤثر على كفاءة الحوسبة، وتقترح وصفة أفضل الممارسات تُسمى ScaleRL.
يمكنك إعادة إنتاج وصفة ScaleRL جزئيًا باستخدام GRPOTrainer مع الإعدادات التالية:
from trl import GRPOConfig
training_args = GRPOConfig(
loss_type="cispo",
epsilon_high=5.0,
num_generations=16,
scale_rewards="batch",
cast_lm_head_to_fp32=True
)يتطلب الأمر اثنين: GRPO الخاص بك هو DPO بشكل سري
📜 الورقة البحثية: https://huggingface.co/papers/2510.00977
يُظهر أن فعالية GRPO تنبع من هدف تبايني ضمني وليس من تقدير دقيق للمزايا عبر أحجام مجموعات كبيرة. وهذا يُرسّخ ارتباطًا رسميًّا بين GRPO وDPO، حيث يؤثر حجم المجموعة فقط على مقدرات مونت كارلو للهدف التبايني. وقد قدّم المؤلفون 2-GRPO — باستخدام مسارين فقط — والذي يطابق أداء 16-GRPO بتكلفة تدريب أقل بكثير. يُستخدم في TRL عبر GRPOTrainer مع num_generations=2. لإعادة إنتاج إعداد الورقة، استخدم هذا التكوين:
from trl import GRPOConfig, GRPOTrainer
training_args = GRPOConfig(
num_generations=2, # minimal two-rollout case (2-GRPO) from the paper
loss_type="grpo",
)
trainer = GRPOTrainer(
...,
args=training_args,
)تحسين السياسة التكيفية الناعمة
📜 الورقة البحثية: https://huggingface.co/papers/2511.20347
يستبدل تحسين السياسة التكيفي الناعم (SAPO) القصّ الصارم ببوابة ناعمة تتحكم فيها درجة الحرارة، تُخفِّض بشكل تكيفي تحديثات خارج السياسة مع الحفاظ على إشارات التعلم المفيدة. مقارنةً بـ GSPO و GRPO، يجمع SAPO بين الاتساق على مستوى التسلسل والتكيف على مستوى الرمز. وكما في GSPO، يحافظ SAPO على الاتساق على مستوى التسلسل، لكن بوابته الناعمة تُشكّل منطقة ثقة مستمرة تتجنّب نطاق القصّ الصارم الهشّ المستخدم في GSPO.
لإعادة إنتاج إعدادات الورقة البحثية، استخدم هذا الإعداد:
from trl import GRPOConfig
training_args = GRPOConfig(
loss_type="sapo",
sapo_temperature_pos=1.0, # default value
sapo_temperature_neg=1.05, # default value
scale_rewards="group",
...
)DeepSeek-V3.2: دفع حدود نماذج اللغة الكبيرة المفتوحة
📜 الورقة البحثية: https://huggingface.co/papers/2512.02556
تُقدّم التقرير التقني الخاص بـ DeepSeek-V3.2 عدة تقنيات لتعزيز أداء GRPO. في TRL، نُنفّذ ما يلي:
- المقدّر غير المتحيز لـ Unbiased KL Estimate, ، الذي يُصحّح مقدّر K3 (كما استُخدم في تطبيق GRPO الأصلي) للحصول على تقدير غير متحيز لـ KL باستخدام نسبة أخذ العينات المهمة بين السياسة الحالية والسياسة السلوكية .
تكون هذه الميزة مفعّلة افتراضيًا (use_bias_correction_kl=True في GRPOConfig)، لذا يكفيك ضبط beta > 0:
from trl import GRPOConfig
training_args = GRPOConfig(
...,
beta=0.001, # the paper doesn't specify the value used, so we use the value from "DeepSeek-R1 incentivizes reasoning in LLMs through reinforcement learning"
)- إخفاء خارج السياسة، الذي يُثبّت التدريب عن طريق تجاهل التسلسلات التي يؤدي فيها النموذج أداءً ضعيفًا (ميزة سالبة) و التي ابتعدت بشكل كبير عن السياسة القديمة (انحراف كولباك-ليبلينغ مرتفع).
قناع ثنائي خارج السياسة يُعرَّف على النحو التالي:
يتم تطبيق هذا القناع على خسارة GRPO على النحو التالي:
لتفعيل هذه الميزة، استخدم off_policy_mask_threshold (المقابل لـ ) في GRPOConfig:
from trl import GRPOConfig
training_args = GRPOConfig(
...,
off_policy_mask_threshold=0.5,
)على الرغم من أن الورقة البحثية لا تحدد قيمة المستخدمة، إلا أن نقطة بداية جيدة قد تكون . إذا بدا التدريب محافظًا للغاية أو تم إخفاء عدد كبير من التسلسلات، يمكنك زيادة القيمة. للمقارنة، تتوافق مع متوسط انحراف نسبة اللوغاريتمية قدره 1 نات لكل رمز، أي أنه في التسلسلات التي تتجاوز هذا العتبة، كانت السياسة القديمة على الأرجح مرات أكثر احتمالًا لتوليد هذه الرموز مقارنة بالسياسة الحالية.
- استراتيجية Keep Sampling Mask التي تحافظ على عدم تحيّز أخذ العينات top-k/top-p. يسحب المُعيّن كل رمز من نطاق مقصوص , ، أي الرموز المتبقية بعد القص، لذا يتم إعادة تطبيع احتمال السجل للسياسة على ذلك النطاق نفسه:
بدونها، يكون معدل الأهمية منحازًا نحو القيم المنخفضة، ويواصل التدرّج دفع كتلة الاحتمال نحو الرموز التي لا يسحبها المُعيّن أبدًا، مما يؤدي إلى انهيار التدريب. يدعم AsyncGRPOTrainer ذلك: عند استخدام top_p < 1.0 أو top_k > 0 أو min_p > 0.0، يسجّل عامل التوليد دعم كل رمز من vLLM (الإصدار 0.28 فأعلى، بدءًا من --return-sampling-mask --enable-scale-out)، ثم يعيد المدرب تطبيع الاحتمالات على هذا الدعم:
from trl import AsyncGRPOConfig
training_args = AsyncGRPOConfig(
...,
top_p=0.95,
top_k=512,
)يُؤيَّد ذلك أيضاً في GRPOTrainer مع vLLM في وضع التشارك (>= 0.28): عند استخدام top_k > 0 وتمكين تصحيح أخذ العينات المهمة (وهو الإعداد الافتراضي)، يُرجع vLLM نطاق كل رمز ويعيد المدرب تطبيع الاحتمالات على هذا النطاق:
from trl import GRPOConfig
training_args = GRPOConfig(
...,
use_vllm=True,
top_p=0.95,
top_k=512,
)GDPO: تحسين سياسة تطبيع مكافأة المجموعة غير المقترنة لتحسين التعلم المعزز متعدد المكافآت
📜 الورقة البحثية: https://huggingface.co/papers/2601.05242
GDPO هو أسلوب تحسين لتعلم المعززات مصمم للتدريب متعدد المكافآت. في حين أن الأساليب القائمة تطبّق بشكل شائع تحسين السياسة النسبي للمجموعات (GRPO) في الإعدادات متعددة المكافآت، يُظهر المؤلفون أن هذا يؤدي إلى انهيار مزايا المكافآت، مما يقلل من دقة إشارة التدريب ويسبب تقاربًا غير مستقر أو فشلًا في التقارب. يحل GDPO هذه المشكلة عن طريق فك ارتباط تطبيع المكافآت عبر المكافآت الفردية، مما يحافظ على فروقها النسبية ويمكّن من تحسين تفضيلات أكثر أمانة. لتفعيل GDPO لتدريب تعلم المعززات متعدد المكافآت، ما عليك سوى ضبط:
لمجموعة من مكافآت و عينات لكل مجموعة، تُطبّق GDPO تطبيعًا مستقلًا لكل مكافأة:
يتم بعد ذلك تجميع ميزة المجموعة المُطبَّعة عبر المكافآت:
تُنتج عملية التطبيع لكل دفعة في النهاية:
هنا، و يُشيران إلى الإحصاءات على جميع المجموعات في الدفعة.
from trl import GRPOConfig
training_args = GRPOConfig(
...,
multi_objective_aggregation="normalize_then_sum",
)لاحظ أن هذه الطريقة لا يكون لها تأثير إلا عندما تتضمن عملية التدريب أكثر من دالة مكافأة واحدة.
يقدّم المؤلفون مثال تدريب سهل الاستخدام وخاليًا من slurm يمكّن المجتمع من التحقق بسرعة من فعالية GDPO مقارنةً بـ GRPO، انظر تجربة - لحظة "أها".
تحسين سياسة التسلسل غير المتحيز للطول: الكشف عن تباين طول الاستجابة والتحكم فيه في RLVR
📜 الورقة البحثية: https://huggingface.co/papers/2602.05261
تعديل سياسة التسلسل غير المتحيز للطول (LUSPO) يعدّل GSPO عن طريق قياس خسارة كل تسلسل بطوله. هذا يصحح انحياز التدرج في GSPO الذي يعاقب الاستجابات الأطول. لإعادة إنتاج إعداد الورقة، استخدم هذا التكوين:
from trl import GRPOConfig
training_args = GRPOConfig(
loss_type="luspo",
importance_sampling_level="sequence",
epsilon=2e-3, # section 5.1 of the paper
epsilon_high=2.5e-3, # section 5.1 of the paper
)VESPO: تحسين سياسة ناعمة على مستوى التسلسل التبايني لتدريب مستقر لنماذج اللغة الكبيرة خارج السياسة
📜 الورقة البحثية: https://huggingface.co/papers/2602.10693
تعالج VESPO عدم الاستقرار في التدريب في التعلم المعزز خارج السياسة (off-policy) الناتج عن قِدم السياسة، والتحديثات غير المتزامنة، وعدم التطابق بين التدريب والاستدلال. بدلاً من الاعتماد على قصّ (clipping) على مستوى الرموز (tokens) القائم على القواعد التجريبية (GRPO) أو تطبيع طول التسلسل (GSPO)، تستنتج VESPO نواة إعادة تشكيل مبدئية من إطار تبايني (variational framework). عملياً، يؤدي هذا إلى دالة وزن Gamma غير متماثلة وسلسة تكبح بأناقة أوزان الأهمية القصوى على مستوى التسلسل دون إدخال تحيز في الطول.
حيث نسبة الأهمية على مستوى التسلسل، و مفصولة عن رسم الحساب لتعمل كمعامل لتدرّج التدرّجات.
from trl import GRPOConfig
training_args = GRPOConfig(
loss_type="vespo",
use_vllm=True, # or False if not using any token-level `vllm_importance_sampling_correction` methods
vllm_importance_sampling_mode="token_truncate", # default correction mode for VESPO, `token_mask` also supported
vespo_k_pos=2.0, # power exponent (c1 in paper Section 3.4) for positive advantages
vespo_lambda_pos=3.0, # decay factor (c2 in paper Section 3.4) for positive advantages
vespo_k_neg=3.0, # power exponent (c1 in paper Section 3.4) for negative advantages
vespo_lambda_neg=2.0, # decay factor (c2 in paper Section 3.4) for negative advantages
)مركزية الدرجات تُثبّت التعزيز التعزيزي خارج السياسة
📜 الورقة البحثية: https://huggingface.co/papers/2609.20807
في حالة عدم التطابق بين التدريب والاستدلال، فإن الدرجة لا تتوسط إلى صفر تحت المُعيّن , لذلك كل تحديث يُحرّض السياسة نحو المُعيّن، بمقدار يتزايد مع الميزة. يقوم توسيط الدرجة بطرح ذلك التوقع في كل موضع، بحيث لم تعد الميزة الثابتة تُحرّك السياسة:
بقيمة وزن الأهمية الخاص بـ Masked Importance Sampling: داخل و خارجها. يُحسب التوقع الداخلي على أكثر الرموز احتمالًا في كل موضع، والتي تُبلَّغ عن احتمالاتها اللوغاريتمية؛ أما على بقية المفردات، فيُعتدّ بمُعيّن العينات بوصفه السياسة المُدرَّبة المُعاد تحجيمها لتغطية الكتلة المتبقية.
إنه الهدف الافتراضي لـ AsyncGRPOTrainer، حيث يطلب عامل التوليد (rollout worker) أعلى احتمالات السجلات (log-probabilities) لكل رمز تم توليده من vLLM:
from trl import AsyncGRPOConfig
training_args = AsyncGRPOConfig(
...,
score_centering=True, # default; `False` trains with the clipped objective instead
vllm_importance_sampling_clip_min=0.5, # hyper-parameter C_min
vllm_importance_sampling_clip_max=5.0, # hyper-parameter C_max
num_sampler_logprobs=8, # tokens per position the expectation is taken over
)الانحدار المميز الأمثل
الأوراق البحثية المتعلقة بـ experimental.a2po.A2POTrainer.
تسريع التعزيز التعزيزي للاستدلال في نماذج اللغة الكبيرة باستخدام الانحدار الأمثل للميزة
📜 الورقة البحثية: https://huggingface.co/papers/2505.20686
طريقة A*-PO (الانحدار الأمثل للميزة) هي طريقة من مرحلتين لتعلّم المعززات في الاستدلال بلغة LLM، تتجنّب كلًّا من المُقيِّم (Critic) عبر الإنترنت والتوليدات الجماعية متعددة العينات. في المرحلة الأولى، تُقدَّر القيمة المثلى V*(x) = β·log E_{y∼π_ref}[exp(r(x, y)/β)] بشكل غير متصل من عينات سياسة المرجع؛ وفي المرحلة الثانية، تُنفَّذ تحديثات على السياسة باستخدام توليد واحد لكل موجه، مع خسارة انحدار مربع الخطأ (β·log(π(y|x)/π_ref(y|x)) − (r(x, y) − V*(x)))². وهذا يؤدي إلى تدريب أسرع وذاكرة ذروة أقل مقارنةً بـ PPO/GRPO/REBEL. تفترض الطريقة مكافأة ثنائية قابلة للتحقق، ولا يمكنها تجاوز Pass@K لسياسة المرجع. راجع A2PO. يمكن العثور على الكود الرسمي في ZhaolinGao/A-PO.
from trl.experimental.a2po import A2POConfig, A2POTrainer
# Hyperparameters from the paper (Qwen2.5, GSM8K/MATH)
training_args = A2POConfig(
beta1=0.5, # KL temperature for offline V* estimation
beta2=1e-3, # KL temperature for the on-policy regression target
num_value_samples=8, # N samples per prompt from the reference policy
)
trainer = A2POTrainer(
model=...,
reward_funcs=..., # should return a binary reward in {0, 1}
args=training_args,
train_dataset=...,
)
trainer.train()تحسين التفضيلات المباشرة
الأوراق البحثية المتعلقة بـ DPOTrainer
تحسين التفضيلات المباشرة: نموذج اللغة الخاص بك هو في الحقيقة نموذج مكافأة
📜 الورقة البحثية: https://huggingface.co/papers/2305.18290
يحسّن تحسين التفضيلات المباشرة (DPO) نماذج اللغة بكفاءة أعلى وأداء أفضل مقارنةً بالتعلم المعزز من التغذية الراجعة البشرية (RLHF)، وذلك من خلال تحسين تدريب السياسة مباشرةً بناءً على تفضيلات البشر. لإعادة إنتاج إعداد الورقة البحثية، استخدم هذا الإعداد:
from trl import DPOConfig
training_args = DPOConfig(
loss_type="sigmoid", # losses in Appendix B of the paper
per_device_train_batch_size=64, # batch size in Appendix B of the paper
learning_rate=1e-6, # learning rate in Appendix B of the paper
beta=0.1, # β in Appendix B of the paper
)SLiC-HF: معايرة احتمال التسلسل باستخدام الملاحظات البشرية
📜 الورقة البحثية: https://huggingface.co/papers/2305.10425
يُثبت أن معايرة احتمال التسلسل (SLiC) بديل فعّال وأبسط لتعلم التعزيز من تغذية راجعة بشرية (RLHF) للتعلم من تفضيلات البشر في نماذج اللغة. لإعادة إنتاج إعداد الورقة، استخدم هذا التكوين:
from trl import DPOConfig
training_args = DPOConfig(
loss_type="hinge", # Section 2 of the paper
per_device_train_batch_size=512, # batch size in Section 3.2 of the paper
learning_rate=1e-4, # learning rate in Section 3.2 of the paper
)تظهر هذه المعلمات فقط في النسخة المنشورة
تحسين تفضيلات التحسين عبر العينة الرفضية الإحصائية
📜 الورقة البحثية: https://huggingface.co/papers/2309.06657
يُقترح RSO, اختيار أزواج تفضيل أقوى عبر أخذ عينات الرفض الإحصائي لتعزيز تحسين التفضيلات دون اتصال؛ يكمل DPO/SLiC. كما يقدمون خسارة جديدة تُعرَّف على النحو التالي:
لتدريب النموذج باستخدام البيانات المفلترة عبر RSO وخسارة hinge-norm، يمكنك استخدام الكود التالي:
from trl import DPOConfig, DPOTrainer
dataset = ...
def rso_accept(example): # replace with your actual filter/score logic
return example["rso_keep"]
train_dataset = train_dataset.filter(rso_accept)
training_args = DPOConfig(
loss_type="hinge",
beta=0.05, # correspond to γ in the paper
)
trainer = DPOTrainer(
...,
args=training_args,
train_dataset=train_dataset,
)
trainer.train()ما وراء دالة كوهين-شيفر: تعميم تحسين التفضيلات المباشر باستخدام قيود تباعد متنوعة
📜 الورقة البحثية: https://huggingface.co/papers/2309.16240
يقترح f-DPO، حيث يوسّع DPO عن طريق استبدال مُنظّم reverse-KL المعتاد بانحراف f-عام، مما يتيح لك الموازنة بين سلوك البحث عن الأنماط (mode-seeking) وسلوك تغطية الكتلة (mass-covering) (مثل forward KL وJS و(( \alpha \)-divergences). التغيير الوحيد هو استبدال هامش نسبة اللوغاريتم في DPO بـ درجة f′:
حيث هو مشتق الدالة المحدبة التي تُعرّف تباعد (( f \) المختار.
لإعادة الإنتاج:
from trl import DPOConfig
training_args = DPOConfig(
loss_type="sigmoid",
beta=0.1,
f_divergence_type="js_divergence", # or "reverse_kl" (default), "forward_kl", "js_divergence", "alpha_divergence"
f_alpha_divergence_coef=0.5, # only used if f_divergence_type="alpha_divergence"
)نموذج نظري عام لفهم التعلم من تفضيلات البشر
📜 الورقة البحثية: https://huggingface.co/papers/2310.12036
يمكن كتابة التعلّم من تفضيلات البشر كهدف واحد مُنظَّم بواسطة KL على احتمالات التفضيل الزوجية،
مما يُظهر أن RLHF و DPO هما حالتان خاصتان تتوافقان مع اختيار اللوجيت . يُظهر البحث أن تحويل اللوجيت هذا يُضخّم التفضيلات شبه الحتمية ويُضعف تنظيم KL بشكل فعال، مما يفسّر الإفراط في التخصيص. باستخدام تحويل الهوية (IPO) يتجنّب هذا العيب من خلال تحسين التفضيلات مباشرةً، دون افتراض نموذج مكافأة Bradley–Terry. لإعادة إنتاج إعدادات البحث، استخدم هذا التكوين:
from trl import DPOConfig
training_args = DPOConfig(
loss_type="ipo", # Section 5.1 of the paper
per_device_train_batch_size=90, # mini-batch size in Section C.1 of the paper
learning_rate=1e-2, # learning rate in Section C.1 of the paper
)تظهر هذه المعلمات فقط في النسخة المنشورة
نحو تحسين فعّال ودقيق لمواءمة نماذج اللغة
📜 الورقة البحثية: https://huggingface.co/papers/2402.00856
يُظهر البحث أن أساليب التفضيل المباشر مثل DPO تُحسّن اتجاه KL الخاطئ، مما يؤدي إلى التقاط ضبابي للتفضيلات، ويقترح EXO كطريقة فعالة لتحسين هدف محاذاة تفضيلات البشر بدقة من خلال الاستفادة من مطابقة الاحتمالات العكسية لـ KL بدلاً من تقريب KL الأمامي. لإعادة إنتاج إعداد البحث، استخدم هذا التكوين:
from trl import DPOConfig
training_args = DPOConfig(
loss_type="exo_pair", # Section 3.2 of the paper
# From Section B of the paper
per_device_train_batch_size=64,
learning_rate=1e-6,
beta=0.1,
)المواءمة التباينية الضجيجية لنماذج اللغة مع مكافآت صريحة
📜 الورقة البحثية: https://huggingface.co/papers/2402.05369
يعيد الورقة تأطير محاذاة نماذج اللغة على أنها مشكلة تصنيف تبايني مع الضوضاء، مقترحةً InfoNCA لتعلم سياسة من مكافآت صريحة (أو تفضيلات) عن طريق مطابقة توزيع هدف مستمد من المكافآت على الاستجابات، ومُبيّنةً أن DPO حالة ثنائية خاصة. ثم تُقدّم NCA، التي تضيف حدًّا لإحتمالية مطلقة لمنع انهيار الاحتمالية المرصود في الأهداف النسبية (التباينية) المحضة.
مع التفضيلات الزوجية، تعامل مع المُختار/المرفوض, حدّد النقاط, وطبّق خسارة التفضيل NCA.
لإعادة إنتاج إعدادات الورقة البحثية، استخدم هذا الإعداد:
from trl import DPOConfig
training_args = DPOConfig(
loss_type="nca_pair",
# From Section C of the paper
per_device_train_batch_size=32,
learning_rate=5e-6,
beta=0.01,
)DPO القوي بإثبات: محاذاة نماذج اللغة مع ملاحظات ضجيج
📜 الورقة البحثية: https://huggingface.co/papers/2403.00409
يفشل DPO في ظل تفضيلات بشرية مليئة بالضوضاء لأن قلب التسميات يُحيز الدالة الهدف. يُصلح Robust DPO هذه المشكلة من خلال إزالة التحيز تحليليًا عن خسارة DPO تحت نموذج ضوضاء بسيط، مع ضمانات قابلة للإثبات.
حيث هي خسارة DPO المعرّفة في تحسين التفضيلات المباشر: نموذج اللغة الخاص بك هو في الحقيقة نموذج مكافأة سرًا و هو احتمال قلب التسمية.
يُحوِّل هذا التصحيح المفرد بيانات التفضيل الضجيجية إلى مُقدِّر غير متحيز للهدف النظيف لـ DPO.
from trl import DPOConfig
training_args = DPOConfig(
loss_type="robust",
per_device_train_batch_size=16, # batch size in Section B of the paper
learning_rate=1e-3, # learning rate in Section B of the paper
beta=0.1, # β in Section B of the paper,
max_length=512, # max length in Section B of the paper
label_smoothing=0.1 # label smoothing {@html ""} in Section 6 of the paper
)تحسين المصنّف الثنائي لمواءمة نماذج اللغة الكبيرة
📜 الورقة البحثية: https://huggingface.co/papers/2404.04656
تحليل نظري وخوارزمية جديدة، Binary Classifier Optimization، تشرح وتحسّن محاذاة نماذج اللغة الكبيرة باستخدام إشارات تغذية راجعة ثنائية. لإعادة إنتاج إعداد الورقة، استخدم هذا التكوين:
يعيد BCO صياغة محاذاة نماذج اللغة على أنها استنساخ سلوكي من توزيع مثالي موزون بالمكافآت، مما يؤدي إلى أهداف إشرافية بسيطة تتجنب التعلم المعزز مع الحفاظ على أساس نظري متين. يدعم كلًا من بيانات المكافآت غير المزدوجة وبيانات التفضيلات الزوجية، مع صياغة غير متغيرة إزاء إزاحة المكافآت، والتي تختزل إلى خسارة بنمط DPO في سياق التفضيلات.
في إعداد التفضيلات الزوجية، يُعرَّف خسارة BCO على النحو التالي:
لإعادة إنتاج الورقة البحثية في هذا الإعداد، استخدم هذا التكوين:
from trl import DPOConfig
training_args = DPOConfig(
loss_type="bco_pair",
# From Section C of the paper
per_device_train_batch_size=128,
learning_rate=5e-7,
beta=0.01,
)تعلم نموذجك المرجعي لتحقيق محاذاة حقيقية
📜 الورقة البحثية: https://huggingface.co/papers/2404.09656
تحديث سياسة المرجع أثناء التدريب في Trust Region DPO (TR-DPO) يُظهر فعاليةً أكبر مقارنةً بـ DPO على مجموعات بيانات Anthropic HH وTLDR، متفوقًا على DPO بنسبة تصل إلى 19% عند القياس عبر التقييم التلقائي باستخدام GPT-4، مع تحسين الاتساق، والصحة، ومستوى التفصيل، والمفيدة، والسلامة. لإعادة إنتاج إعدادات الورقة البحثية، استخدم هذا الإعداد:
from trl import DPOConfig
training_args = DPOConfig(
sync_ref_model=True, # enable TR-DPO (Section 3 of the paper)
ref_model_mixup_alpha=0.6, # α soft update weight (Table 1 of the paper)
ref_model_sync_steps=512, # τ update frequency in steps (Table 1 of the paper)
beta=0.05, # β temperature (Table 1 of the paper)
learning_rate=1e-6, # learning rate (Table 2 of the paper)
num_train_epochs=1, # Table 2 of the paper
max_length=1024, # max tokens length (Table 2 of the paper)
max_grad_norm=2, # max gradient norm (Table 2 of the paper)
warmup_steps=100, # warm-up steps (Table 2 of the paper)
)تحسين التفضيلات للاستدلال التكراري
📜 الورقة البحثية: https://huggingface.co/papers/2404.19733
يحسّن RPO التكراري الاستدلال من خلال توليد مرشّحات متسلسلة التفكير بشكل متكرر، وبناء أزواج تفضيل من الإجابات الصحيحة مقابل الخاطئة، والتدريب باستخدام هدف DPO + NLL. يُعدّ حد NLL الإضافي أساسيًا لتعلّم توليد المسارات الفائزة فعليًا.
يمكن لـ TRL التعبير عن هدف DPO + NLL عن طريق خلط "sigmoid" (DPO) مع "sft" (NLL):
from trl import DPOConfig, DPOTrainer
training_args = DPOConfig(
loss_type=["sigmoid", "sft"],
loss_weights=[1.0, 1.0], # alpha in the paper, recommended value is 1.0
)
trainer = DPOTrainer(
...,
args=training_args,
)لاحظ أن الورقة البحثية تستخدم حلقة تكرارية: في كل تكرار، يعيد النموذج الحالي توليد مرشحات CoT، ثم يعيد التدريب على أزواج تفضيل جديدة. لا يقوم TRL بأتمتة تلك الحلقة نيابةً عنك.
تحسين التفضيلات باللعب الذاتي لمواءمة نماذج اللغة
📜 الورقة البحثية: https://huggingface.co/papers/2405.00675
تحقق طريقة اللعب الذاتي المسمى SPPO لمواءمة نماذج اللغة من أداء متقدم من خلال تقريب سياسة التوازن الناش في إطار لعبة ذات مجموع ثابت، متفوقةً على الأساليب الأخرى باستخدام بيانات محدودة. لإعادة إنتاج إعدادات الورقة البحثية، استخدم هذا الإعداد:
from trl import DPOConfig
training_args = DPOConfig(
loss_type="sppo_hard",
# From Section 5 of the paper
beta=0.001, # β = η^−1
per_device_train_batch_size=64,
learning_rate=5e-7,
)التخفيف الموثق من الإفراط في التحسين في RLHF: خسارة SFT الخاصة بك هي ضابط عدائي ضمني
📜 الورقة البحثية: https://huggingface.co/papers/2405.16436
تخفف تحسين التفضيلات المنتظمة (RPO) من الإفراط في التحسين في RLHF عن طريق دمج خسارة DPO مع خسارة SFT، مما يمنع بشكل مثبت أن يختار النموذج إجراءات ذات مكافآت بديلة عالية زائفة. لإعادة إنتاج إعداد الورقة، استخدم هذا التكوين:
from trl import DPOConfig
training_args = DPOConfig(
loss_type=["sigmoid", "sft"], # RPO loss = DPO + SFT (Section 5 of the paper)
loss_weights=[1.0, 0.005], # η=0.005 SFT weight in Appendix E.1 of the paper
beta=0.01, # β in Appendix E.1 of the paper
learning_rate=5e-7, # learning rate in Appendix E.1 of the paper
num_train_epochs=1, # Appendix E.1 of the paper
)محاذاة التفضيلات التوزيعية لنماذج اللغة الكبيرة عبر النقل الأمثل
📜 الورقة البحثية: https://huggingface.co/papers/2406.05882
يُحاظي Alignment via Optimal Transport (AOT) نماذج اللغة الكبيرة توزيعياً من خلال معاقبة انتهاكات الهيمنة العشوائية بين توزيعات العينات الإيجابية والسلبية، مما يحقق أداءً متقدماً على معايير المحاذاة. لإعادة إنتاج إعداد الورقة، استخدم هذا التكوين:
from trl import DPOConfig
training_args = DPOConfig(
loss_type="aot",
beta=0.01, # from the caption of Figure 2
)أو، بالنسبة للإصدار غير المزدوج:
from trl import DPOConfig
training_args = DPOConfig(
loss_type="aot_unpaired",
beta=0.01, # from the caption of Figure 2
)لا يوجد معامل فائق إضافي في الورقة البحثية.
اكتشاف خوارزميات تحسين التفضيلات مع نماذج اللغة الكبيرة ولأجلها
📜 الورقة البحثية: https://huggingface.co/papers/2406.08414
تكتشف طريقة يقودها نموذج لغوي كبير (LLM) تلقائيًا خوارزميات تحسين التفضيلات عالية الأداء، مما أدى إلى خوارزمية جديدة تُسمى DiscoPOP تمزج بين خسائر لوغستية وأخرى أسية. لإعادة إنتاج إعدادات الورقة البحثية، استخدم هذا الإعداد:
from trl import DPOConfig
training_args = DPOConfig(
loss_type="discopop",
per_device_train_batch_size=64, # batch size in Section B.1 of the paper
learning_rate=5e-7, # learning rate in Section B.1 of the paper
beta=0.05, # β in Section B.1 of the paper,
discopop_tau=0.05 # τ in Section E of the paper
)WPO: تعزيز RLHF عبر تحسين التفضيلات الموزونة
📜 الورقة البحثية: https://huggingface.co/papers/2406.11827
يعيد WPO وزن أزواج التفضيل بناءً على احتمالات السياسة لتقليل الفجوة خارج السياسة في التدريب بنمط DPO. الخسارة هي:
حيث يُعرَّف الوزن على النحو التالي:
لإعادة إنتاج إعدادات الورقة البحثية، استخدم هذا الإعداد:
from trl import DPOConfig
training_args = DPOConfig(
loss_type="sigmoid", # DPO loss used in the paper
beta=0.01, # Section 4 of the paper
use_weighting=True,
)تحسين التفضيلات المرساة والمراجعات التباينية: معالجة عدم التحديد في المحاذاة
📜 الورقة البحثية: https://huggingface.co/papers/2408.06266
تُحسّن CLAIR وAPO محاذاة نماذج اللغة الكبيرة من خلال أزواج تفضيل تباينية أكثر وأهداف محاذاة مُتحكَّم بها، مما يُحسّن أداء النموذج ليقترب من أداء GPT4-turbo. لإعادة إنتاج إعدادات الورقة البحثية، استخدم هذا الإعداد:
from trl import DPOConfig
training_args = DPOConfig(
loss_type="apo_zero", # Section 4 of the paper
per_device_train_batch_size=64, # batch size in Section B.1 of the paper
learning_rate=2e-7, # learning rate in Section 5.2 of the paper
beta=0.1, # β in Section 5.2 of the paper,
)from trl import DPOConfig
training_args = DPOConfig(
loss_type="apo_down", # Section 4 of the paper
per_device_train_batch_size=64, # batch size in Section B.1 of the paper
learning_rate=2e-7, # learning rate in Section 5.2 of the paper
beta=0.1, # β in Section 5.2 of the paper,
)تظهر هذه المعلمات فقط في النسخة المنشورة
تقليل الحساسية للطول في تحسين التفضيلات المباشرة
📜 الورقة البحثية: https://huggingface.co/papers/2409.06411
يُظهر أن DPO القياسي حساس بطبيعته للطول، مما يدفع النماذج غالبًا نحو توليدات طويلة أو متكلّفة بشكل مفرط. يقترح الورق LD-DPO، الذي يعدّل تجميع سجلات الاحتمال التسلسلية من خلال تقسيم الاستجابة الأطول إلى بادئة مشتركة (حتى طول الاستجابة الأقصر) وذيل زائد، ثم تخفيف وزن الذيل بمعامل :
الإعداد يستعيد DPO القياسي؛ والقيم الأصغر لـ تقلل من التفصيل مع الحفاظ على جودة التفضيل. القيمة المثلى لـ تعتمد على عائلة النموذج وما إذا كنت تدرب نموذجًا أساسيًا أم نموذج تعليمي، لكن الورقة تقترح كنقطة انطلاق افتراضية قوية.
from trl import DPOConfig
training_args = DPOConfig(
ld_alpha=0.5,
)تعزيز القدرة على الاستدلال في نماذج اللغة الكبيرة متعددة الوسائط عبر تحسين التفضيلات المختلطة
📜 الورقة البحثية: https://huggingface.co/papers/2411.10442
يُقدّم هذا البحث تحسين التفضيلات المختلطة (MPO) لتحسين الاستدلال متعدد الوسائط في نماذج اللغة متعددة الوسائط (MLLMs)، مع معالجة انحراف التوزيع وضعف سلسلة الأفكار (CoT) بعد التدريب المسبق القياسي والتدريب الإشرافي الدقيق (SFT). يساهم الورقة البحثية في (1) MMPR، وهو خط أنابيب آلي لبيانات التفضيل متعددة الوسائط عالية الجودة، و(2) MPO، وهو هدف تفضيل مركّب (ثنائي + على غرار BCO + SFT) يعزز سلسلة الأفكار. يصل InternVL2-8B-MPO إلى 67.0 في MathVista (+8.7 مقارنةً بـ InternVL2-8B)، وهو مماثل لـ InternVL2-76B الأكبر حجمًا بعشر مرات. يُستخدم في TRL عبر DPOConfig مع خسارة مركّبة. لإعادة إنتاج إعداد الورقة البحثية، استخدم هذا الإعداد:
from trl import DPOConfig
training_args = DPOConfig(
loss_type=["sigmoid", "bco_pair", "sft"], # ℒ = w_p·ℒ_p + w_q·ℒ_q + w_g·ℒ_g (Section 3.2 of the paper)
loss_weights=[0.8, 0.2, 1.0], # w_p, w_q, w_g loss weights (Section 7 of the paper)
learning_rate=5e-6, # learning rate (Section 7 of the paper)
)تولو 3: دفع الحدود في التدريب اللاحق لنماذج اللغة المفتوحة
📜 الورقة البحثية: https://huggingface.co/papers/2411.15124
يعالج خسارة سيجمويد المُعدَّلة حسب الطول انحياز الطول في DPO من خلال قسمة درجات نسبة اللوغاريتم للخيارات المقبولة والمرفوضة على أطوال إكمالاتها المقابلة قبل حساب خسارة برادلي-تيري. تم تقديم هذا الترميز لكل رمز في SimPO (المرفق I "DPO w/ LN" ablation) كمكافأة متوسط لوغاريتمي للاحتمال لإعداد بدون مرجع، وتم تبنّيه لاحقًا لـ DPO القياسي القائم على نموذج مرجعي في وصفات ما بعد التدريب مثل Tülu 3 (القسم 4.3). الخسارة هي: والتي يمكن ضبطها باستخدام:
from trl import DPOConfig
training_args = DPOConfig(
loss_type="sigmoid_norm",
)محاذاة غير متحيزة لنماذج اللغة الكبيرة مع تفضيلات ضجيجية
📜 الورقة البحثية: https://huggingface.co/papers/2607.03248
ينمذج هذا الورق ضوضاء التفضيلات على أنها تسميات مقلوبة باحتمال ويعكس هذا الانتقال، بحيث يكون للسياسة المدرَّبة على تفضيلات ضوضائية نفس القيمة المثلى كما لو كانت التفضيلات نظيفة. تنفّذ TRL الشكل المُعايَر لخسارة UDPO غير المتحيزة الناتجة، والتي تُسمى α-UDPO في الورق:
وهو خسارة DPO لـ . الثابت يُبقي أقصى حجم للتدرج عند 1، كما في DPO. على عكس Robust DPO, يُظهر الورقة أن القيمة المثلى تبقى غير منحازة عندما تكون احتمالية الانقلاب الحقيقية أقل من القيمة المفترضة (المشتق 4.7)، لذا لا يتعين تقديره بدقة. في TRL، يُضبط باستخدام label_smoothing. لاستخدام , القيمة التي يوصي بها الورقة للممارسين:
from trl import DPOConfig
training_args = DPOConfig(
loss_type="udpo",
label_smoothing=4 / 9, # flip probability ε, for a = ε / (1 - ε) = 0.8 as recommended in Appendix B.1 of the paper
beta=0.1, # 0.1 for HH and UltraFeedback, 0.5 for TL;DR (Appendix B.1 of the paper)
learning_rate=5e-6, # 5e-6 for Llama-3.2-3B and Qwen3-1.7B, 1e-6 for 8B models (Appendix B.1 of the paper)
num_train_epochs=3, # Appendix B.1 of the paper
per_device_train_batch_size=16, # total batch size of 128 on 8 GPUs (Appendix B.1 of the paper)
max_grad_norm=10.0, # Appendix B.1 of the paper
warmup_ratio=0.1, # Appendix B.1 of the paper
)تحسين كانيمان–تفرسكي
الأوراق البحثية المتعلقة بـ KTOTrainer
KTO: محاذاة النموذج كتحسين نظري الأرباح
📜 الورقة البحثية: https://huggingface.co/papers/2402.01306
يستمد KTO هدف المحاذاة من نظرية المنظور ويتعلم مباشرةً من الملاحظات البشرية الثنائية (إعجاب/عدم إعجاب)، مما يطابق أو يتفوق على الأساليب على غرار DPO مع التعامل الجيد مع الإشارات غير المتوازنة أو الضوضائية. لإعادة إنتاج إعدادات الورقة البحثية، يمكنك استخدام الإعداد الافتراضي لـ KTOTrainer:
from trl import KTOConfig, KTOTrainer
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained(model_id)
tokenizer = AutoTokenizer.from_pretrained(model_id)
trainer = KTOTrainer(
model=model,
processing_class=tokenizer,
args=KTOConfig(),
train_dataset=...,
)
trainer.train()الضبط الدقيق الإشرافي
الأوراق البحثية المتعلقة بـ SFTTrainer
TailSFT: تحسين الأداء بعد التدريب من خلال الضبط الدقيق المصفّى
📜 الورقة البحثية: https://huggingface.co/papers/2608.25756
يحافظ TailSFT على تغطية الاستجابات للتعزيز اللاحق من خلال تصفية التسلسلات التي تحسّن فيها الخسارة المعيارية حسب الطول بشكل أكبر مقارنةً بالسياسة الأولية. ينفّذ المثال tail_sft_gsm8k تصفية دفعات الاختيار الموزعة كما ورد في الورقة البحثية، وذلك عبر إنشاء فئة فرعية من SFTTrainer. يسجّل الخسارة الأولية للسياسة لكل تسلسل قبل بدء التدريب، ثم يصفّي الأمثلة بشكل مستقل في كل دفعة اختيار.
python examples/tail_sft_gsm8k/tail_sft.py
EMA دون التأخير: مخططات متوسط التكرارات المُصحَّحة للانحياز
📜 الورقة البحثية: https://huggingface.co/papers/2508.00180
يحسّن متوسط الحركة الأسي المُصحَّح من الانحياز (BEMA) من استقرار وكفاءة ضبط نماذج اللغة الدقيقة من خلال تقليل العشوائية وإزالة الانحياز. لاستخدام BEMA مع SFT كما هو موصوف في الورقة البحثية، يمكنك استخدام BEMACallback:
from trl import BEMACallback, SFTTrainer
trainer = SFTTrainer(
...
callbacks=[BEMACallback()],
)حول التعميم في التدريب الإشرافي: منظور تعلّم التعزيز مع تصحيح المكافأة
📜 الورقة البحثية: https://huggingface.co/papers/2508.05629
يحسّن الضبط الدقيق الديناميكي (DFT) من قدرة نماذج اللغة الكبيرة (LLMs) على التعميم من خلال إعادة مقياس التدرجات ديناميكيًا، متفوقًا على الضبط الدقيق الإشرافي القياسي (SFT) ومُظهرًا نتائج تنافسية في التعلم المعزز غير المتصل.
حيث هو عامل إيقاف التدرج. لاستخدام DFT مع SFT كما هو موضح في الورقة البحثية، يمكنك استخدام loss_type="dft" الحجة:
from trl import SFTConfig
training_args = SFTConfig(
loss_type="dft",
...
)لمطابقة إعداد الورقة البحثية عن كثب، يمكنك استخدام الإعداد التالي (انظر القسم 4.1). كما يذكر المؤلفون أن المعلمات الفائقة ليست حساسة للغاية (القسم 4.3):
SFTConfig(
loss_type="dft",
learning_rate=5e-5,
max_length=2048,
# Target batch size 256; achieved via per-device batch 8 * grad accumulation 32
per_device_train_batch_size=8,
gradient_accumulation_steps=32,
)تقليل عمليات الاقتطاع يحسّن نمذجة اللغة
📜 الورقة البحثية: https://huggingface.co/papers/2404.10830
يُظهر البحث أن معالجة البيانات الأولية القياسية القائمة على الدمج ثم التقسيم (packing_strategy="wrapped") المستخدمة في تدريب نماذج اللغة الكبيرة تؤدي إلى تقطيع العديد من المستندات بشكل تعسفي، مما يُضعف عملية التعلم. ويقترح البحث تعبئة مقاطع المستندات في نوافذ السياق باستخدام خوارزمية تعبئة الحاويات «أفضل ملاءمة تنازلية»، مما يقلل من التقطيع بشكل كبير مع الحفاظ على استغلال عالٍ للرموز وتحسين أداء النموذج. تنفّذ مكتبة TRL هذا النهج كاستراتيجية تعبئة "bfd_split" في SFTConfig. لمزيد من التفاصيل حول التعبئة، راجع وثائق SFT.
from trl import SFTConfig
training_args = SFTConfig(
packing=True,
packing_strategy="bfd_split",
max_length=4096,
)استكشاف حدود التعلم الانتقالي باستخدام محوّل نص إلى نص موحّد
📜 الورقة البحثية: https://huggingface.co/papers/1910.10683
تقترح ورقة T5 إطارًا موحّدًا لتحويل النص إلى نص لتعلم النقل، وتُقدّم تجميع التسلسلات (القسم 3.5.2): وهو تجميع عدة تسلسلات قصيرة في كتل ذات طول ثابت لتقليل الحشو وتحسين كفاءة التدريب. يدعم TRL التجميع عبر SFTConfig مع SFTTrainer. لتفعيل التجميع باستخدام TRL، استخدم هذا الإعداد:
from trl import SFTConfig
training_args = SFTConfig(
packing=True, # enable sequence packing (Section 3.5.2 of the paper)
max_length=512, # packed sequence length (Section 3.5.2 of the paper)
)إعادة parametrization لنماذج الانتشار المنتظمة: مُزيل الضوضاء باستثناء عنصر واحد
📜 الورقة البحثية: https://huggingface.co/papers/2605.22765
في نماذج الانتشار المتقطعة المنتظمة، لا يتعلم دالة التداخل المتقاطعة المعتادة المُدمجة مُزيل الضوضاء البسيط بل التوزيع اللاحق المتروك-واحدًا (LOO)، الذي يتنبأ بكل رمز دون استخدام قيمته المتضررة. يستنتج الورق تحويلات دقيقة بين مُزيل الضوضاء، والتوزيع اللاحق المتروك-واحدًا، والدرجة، بحيث يمكن تدريب الشبكة كأي من التمثيلين البارامترين باستخدام نفس دالة التداخل المتقاطعة. بالنظر إلى القيم اللوجستية التي يُمثلها دالة softmax كالتوزيع اللاحق المتروك-واحدًا، يكون مُزيل الضوضاء المستخدم في الدالة الخاسرة هو
أي تصحيح إضافي على قيمة logit للرمز المرصود، حيث هو حجم المفردات و احتمال أن يحافظ التوزيع الأمامي المنتظم على الرمز النظيف. تشير الورقة إلى أن معادلة LOO تحسّن التوليد باستمرار بشكل متسق. مثال SFT الخاص بالانتشار الكتلوي examples/sft_diffusion_gemma/sft_diffusion_gemma.py يكشف عن كلا المعادلتين عبر --model_prediction_type (mean لنموذج إزالة الضوضاء العادي، بما يتوافق مع نقطة التفتيش المنشورة، أو mean_loo للاحتمالية اللاحقة LOO):
torchrun --nproc_per_node 8 examples/sft_diffusion_gemma/sft_diffusion_gemma.py \
--deepspeed examples/deepspeed_configs/zero3.json \
--use_peft \
--gradient_checkpointing \
--model_prediction_type mean_loo \
--output_dir diffusiongemma-26B-A4B-it-gsm8k-loraتقليل إعادة حساب التنشيطات في نماذج الترانسفورمر الكبيرة
📜 الورقة البحثية: https://huggingface.co/papers/2205.05198
يعيد تفعيل نقطة التفتيش الكاملة (Full activation checkpointing) حساب كل عملية ضمن منطقة التفتيش أثناء التدرج العكسي، بما في ذلك الانتباه (attention)، على الرغم من أن عددًا قليلًا من العمليات (الانتباه من بينها) يمثل الجزء الأكبر من تكلفة إعادة الحساب مقارنةً بالذاكرة التي كانت ستكلفها لو تم الاحتفاظ بها. يعيد حساب التفعيل الانتقائي (selective activation recomputation) الوارد في الورقة العلمية العمليات المكلفة فقط بدلاً من المنطقة بأكملها. تنفّذ TRL هذا الأمر على شكل تفعيل نقطة تفتيش انتقائية (SAC) لـ SFTTrainer، حيث تحفظ مخرجات الانتباه أثناء التمرير الأمامي حتى لا يعيد التدرج العكسي حسابها:
from trl import SFTConfig
training_args = SFTConfig(
gradient_checkpointing=True,
gradient_checkpointing_kwargs={"selective": True},
)الضبط الدقيق الفعال من حيث المعلمات (PEFT)
للاطلاع على التفاصيل العامة حول استخدام PEFT مع TRL، يُرجى الرجوع إلى دليل تكامل PEFT.
LoRA: تكييف منخفض الرتبة لنماذج اللغة الكبيرة
📜 الورقة البحثية: https://huggingface.co/papers/2106.09685
تقلّل تقنية التكيف منخفض الرتبة (LoRA) عدد المعاملات القابلة للتدريب واستهلاك ذاكرة وحدة معالجة الرسوميات (GPU) في النماذج المُسبقة التدريب واسعة النطاق، مع الحفاظ على الأداء في المهام اللاحقة أو تحسينه. يدمج TRL تقنية LoRA عبر مكتبة PEFT، ويمكن تفعيلها بسهولة في أي مُدرّب من مُدرّبي TRL عن طريق تمرير LoraConfig إلى معامل peft_config. فيما يلي مثال على استخدام LoRA مع SFTTrainer:
from trl import SFTTrainer
from peft import LoraConfig
trainer = SFTTrainer(
...,
peft_config=LoraConfig(),
)DoRA: تكيّف منخفض الرتبة مع تفكيك الأوزان
📜 الورقة البحثية: https://huggingface.co/papers/2402.09353
يمكن لتحسين التكيف منخفض الرتبة المُفكّك على مستوى الأوزان (DoRA) أن يُحسّن أداء LoRA، لا سيما عند استخدام رتب منخفضة. يقوم DoRA بتفكيك الأوزان المُدرَّبة مسبقًا إلى مكوّنين: المقدار والاتجاه. يُعالَج الاتجاه بواسطة LoRA العادي، بينما يُعدّ المقدار من المعاملات القابلة للتعلم. تدمج TRL تقنية DoRA عبر مكتبة PEFT ويمكن تفعيلها بسهولة من خلال تعيين use_dora=True في LoraConfig.
from peft import LoraConfig
config = LoraConfig(use_dora=True, ...)تعزيز ترك واحد
الأوراق البحثية المتعلقة بـ RLOOTrainer
العودة إلى الأساسيات: إعادة النظر في تحسينات على غرار REINFORCE لتعلم التغذية الراجعة من البشر في نماذج اللغة الكبيرة
📜 الورقة البحثية: https://huggingface.co/papers/2402.14740
RLOO هو متغير من REINFORCE يقلل التباين باستخدام خطوط أساس من نوع "استبعاد واحد". يحسب المكافآت عن طريق مقارنة كل عينة بمتوسط جميع العينات الأخرى في الدفعة، مما يوفر تدرجات أكثر استقرارًا من REINFORCE القياسي. لإعادة إنتاج إعداد الورقة البحثية، استخدم هذا التكوين:
from trl import RLOOConfig
training_args = RLOOConfig(
per_device_train_batch_size=512, # section C Training Detail of the paper
steps_per_generation=2, # section C Training Detail of the paper
beta=0.03, # section C Training Detail of the paper
num_generations=2, # experiments of paper different num_generations={2,4}
learning_rate=1e-6, # section C Training Detail of the paper
)REINFORCE++: نهج بسيط وفعّال لمواءمة نماذج اللغة الكبيرة
📜 الورقة البحثية: https://huggingface.co/papers/2501.03262
REINFORCE++ هو متغير محسّن من خوارزمية REINFORCE الكلاسيكية، يدمج تقنيات تحسين رئيسية من PPO مع القضاء على الحاجة إلى شبكة ناقد. يحقق البساطة، واستقرار تدريب محسّن، وتقليل العبء الحسابي من خلال تطبيع الميزة على مستوى الدفعة بأكملها. لتقريب إعداد الورقة باستخدام RLOOTrainer، استخدم هذا الإعداد:
from trl import RLOOConfig
training_args = RLOOConfig(
normalize_advantages=True, # global advantage normalization, core of REINFORCE++
)تحسين تفضيل نسبة الاحتمالات
الأوراق البحثية المتعلقة بـ experimental.orpo.ORPOTrainer
ORPO: تحسين التفضيلات الأحادي دون نموذج مرجعي
📜 الورقة البحثية: https://huggingface.co/papers/2403.07691
يُحسّن خوارزمية تحسين التفضيلات أحادية الكتلة المستقلة عن نموذج مرجعي (ORPO) محاذاة التفضيلات أثناء الضبط الدقيق المُشرف عليه، متجاوزةً النماذج الأكبر في التقييمات الرئيسية. لإعادة إنتاج إعداد الورقة، استخدم هذا التكوين:
from trl.experimental.orpo import ORPOConfig
training_args = ORPOConfig(
beta=0.1, # λ odds ratio loss weight (Table 7 of the paper, Mistral-ORPO-β)
learning_rate=5e-6, # learning rate (Appendix C of the paper)
lr_scheduler_type="inverse_sqrt", # scheduler (Appendix C of the paper)
num_train_epochs=5, # Appendix C of the paper
warmup_steps=200, # warm-up steps (Appendix C of the paper)
per_device_train_batch_size=8, # batch size (Appendix C of the paper)
)تحسين التفضيلات التباينية
الأوراق البحثية المتعلقة بـ experimental.cpo.CPOTrainer
تحسين التفضيلات التباينية: دفع حدود أداء نماذج اللغة الكبيرة في الترجمة الآلية
📜 الورقة البحثية: https://huggingface.co/papers/2401.08417
يُقدّم هذا النص تحسين التفضيل التبايني (CPO)، وهو أسلوب قائم على التفضيلات لترجمة الآلة، يدرّب النماذج على تجنّب الترجمات المقبولة لكنها غير مثالية بدلاً من تقليد النصوص المرجعية كما هو الحال في التدريب الإشرافي (SFT). يحلل الورقة قيود التدريب الإشرافي في ترجمة الآلة (بما في ذلك مشاكل جودة النصوص المرجعية) ويُظهر أن تطبيق CPO على نموذج ALMA باستخدام 22 ألف جملة متوازية فقط ينتج عنه نموذج ALMA-R، الذي يطابق أو يتفوق على الفائزين في مسابقة WMT ونموذج GPT-4 في مسابقات WMT’21–WMT’23. يُستخدم في مكتبة TRL عبر experimental.cpo.CPOTrainer. لإعادة إنتاج إعدادات الورقة، استخدم هذا التكوين:
from trl.experimental.cpo import CPOConfig
training_args = CPOConfig(
loss_type="sigmoid", # preference learning loss (Section 3 of the paper)
cpo_alpha=1.0, # NLL regularizer weight (Section 3 of the paper)
beta=0.1, # β temperature (Section 4.2 of the paper)
learning_rate=1e-4, # learning rate (official code)
lr_scheduler_type="inverse_sqrt", # scheduler (official code)
num_train_epochs=1, # Section 4.2 of the paper
warmup_ratio=0.01, # warm-up ratio (Section 4.2 of the paper)
max_length=512, # max sequence length (Section 4.2 of the paper)
)SimPO: تحسين تفضيلات بسيط بمكافأة بدون مرجع
📜 الورقة البحثية: https://huggingface.co/papers/2405.14734
يعتمد SimPO على نهج أبسط وأكثر فعالية لتحسين التفضيلات، حيث يستخدم متوسط الاحتمال اللوغاريتمي للتسلسل كمكافأة ضمنية، مما يلغي الحاجة إلى نموذج مرجعي. كما يُدخل هامشًا للمكافأة المستهدفة في هدف Bradley-Terry لتشجيع وجود هامش أكبر بين الاستجابات الرابحة والخاسرة. لإعادة إنتاج إعدادات الورقة البحثية، استخدم هذا التكوين:
from trl.experimental.cpo import CPOConfig
training_args = CPOConfig(
loss_type="simpo", # SimPO loss (Section 3 of the paper)
cpo_alpha=0.0, # no BC regularizer for SimPO
beta=2.5, # β in Appendix B of the paper
simpo_gamma=1.375, # γ target reward margin, from γ/β=0.55 in Appendix B of the paper
learning_rate=1e-6, # learning rate in Appendix B of the paper
num_train_epochs=1, # Appendix B of the paper
)AlphaPO — شكل المكافأة مهم لمواءمة نماذج اللغة
📜 الورقة البحثية: https://huggingface.co/papers/2501.03884
AlphaPO هو أسلوب جديد ضمن خوارزميات المحاذاة المباشرة (DAAs) يستفيد من معامل alpha للمساعدة في تغيير شكل دالة المكافأة بما يتجاوز المكافأة اللوغاريتمية القياسية. يساعد AlphaPO في الحفاظ على تحكم دقيق في إزاحة الاحتمالية والتفريط في التحسين. لإعادة إنتاج إعداد الورقة البحثية، استخدم هذا التكوين:
from trl.experimental.cpo import CPOConfig
# Mistral-Instruct from Table 3 of the paper
training_args = CPOConfig(
loss_type="alphapo",
alpha=0.25,
beta=2.5,
simpo_gamma=0.1,
learning_rate=7e-7,
...
)تحسين التفضيلات الثلاثي
تحسين التفضيلات الثلاثي: تحقيق محاذاة أفضل باستخدام تحسين خطوة واحدة
📜 الورقة البحثية: https://huggingface.co/papers/2405.16681
يُقدّم تحسين التفضيل الثلاثي (TPO)، وهو أسلوب لتعلّم التفضيلات يُحاظي نموذج اللغة الكبير (LLM) مع ثلاث إجابات لكل موجه — إكمال ذهبي (reference)، وإكمال مفضّل (chosen)، وإكمال غير مفضّل (rejected) — في خطوة تحسين واحدة. يجمع TPO بين هدف تبايني على الزوج (المفضّل، المرفوض) وحَدّ إشرافي NLL على الإجابة الذهبية، مما يُزيل الحاجة إلى مرحلة SFT منفصلة والنموذج المرجعي المستخدم في DPO. قدّم TRL تطبيقًا باسم TPOTrainer حتى الإصدار v1.16؛ لم يعد جزءًا من المكتبة ولا يزال متاحًا في سجل git.
Nash التعلم من تغذية راجعة البشر
Nash التعلم من تغذية راجعة البشر
📜 الورقة البحثية: https://huggingface.co/papers/2312.00886
يُقدّم Nash-MD كبديل لـ RLHF القياسي، حيث يتعلّم نموذج تفضيلات مشروط على مدخلين ويبحث عن سياسة عند نقطة التوازن ناش. بدلاً من التحسين مقابل نموذج مكافآت، تنتج Nash-MD سياسات تولّد باستمرار استجابات مفضّلة على تلك التي تنتجها أي سياسة منافسة. يعتمد الخوارزمية على مبادئ الانحدار المرآتي. أصدر TRL تنفيذاً باسم NashMDTrainer حتى الإصدار v1.13؛ لم يعد جزءاً من المكتبة ولا يزال متاحاً في سجل git.
نمذجة المكافآت
الأوراق البحثية المتعلقة بـ RewardTrainer
المساعدة أم التوجيه؟ تجمعات نماذج المكافآت تخفف من اختراق المكافآت لكنها لا تقضي عليه
📜 الورقة البحثية: https://huggingface.co/papers/2312.09244
اقترح هذا البحث دالة خسارة مساعدة مصممة لتعلم نموذج مكافأة مركزي بشكل مباشر. تُقلّل هذه الخسارة المساعدة من مجموع مربعات المكافآت، مما يشجّع النموذج على إنتاج مخرجات ذات متوسط صفري بشكل طبيعي، وبالتالي يحل مشكلة عدم التحديد.
للاستخدام هذا الخسارة المساعدة مع RewardTrainer، يمكنك استخدام الحجة center_rewards_coefficient في RewardConfig على النحو التالي:
from trl import RewardConfig
training_args = RewardConfig(
center_rewards_coefficient=0.01, # η in the paper
...
)Llama 2: نماذج أساسية مفتوحة ونماذج محادثة مُعدّلة
📜 الورقة البحثية: https://huggingface.co/papers/2307.09288
في هذه الورقة، يقترح المؤلفون الاستفادة من تقييمات التفضيل الخاصة بهم التي يتم تفكيكها على شكل مقياس من أربع نقاط (على سبيل المثال، أفضل بشكل كبير) لتوفير ملاحظات أكثر إفادة لنموذج المكافأة. يتم ذلك عن طريق إضافة هامش إلى دالة الخسارة، مما يشجع نموذج المكافأة على تخصيص فجوات أكبر في الدرجات للأزواج ذات تقييمات تفضيل أعلى.
يمكنك إضافة هامش إلى الدالة الخاسرة عن طريق إضافة عمود margin إلى مجموعة البيانات. يُظهر المثال التالي كيفية إعداد إعداد “Margin Small” من الورقة البحثية.
def add_margin(example):
preference_to_margin = {
"significantly better": 1.0,
"better": 2.0/3.0,
"slightly better": 1.0/3.0,
"negligibly better / unsure": 0.0,
}
return {"margin": preference_to_margin[example["preference_label"]]}
dataset = dataset.map(add_margin)تحسين التفضيلات المباشرة عبر الإنترنت
الأوراق البحثية المتعلقة بـ experimental.online_dpo.OnlineDPOTrainer
محاذاة نموذج اللغة مباشرةً من ملاحظات الذكاء الاصطناعي عبر الإنترنت
📜 الورقة البحثية: https://huggingface.co/papers/2402.04792
يحسّن Online DPO من طرق المحاذاة المباشرة من التفضيلات من خلال توفير تغذية راجعة فورية من النموذج، متفوقًا على كل من طريقتي DPO وPPO.
للاستفادة من Online DPO، يمكنك استخدام experimental.online_dpo.OnlineDPOTrainer.
التحسين التفضيلي الاستكشافي: استغلال تقريب Q* الضمني لتعلم معزز فعّال من حيث العينة
📜 الورقة البحثية: https://huggingface.co/papers/2405.21046
تضيف XPO مكافأة استكشاف جديدة ومبنية على مبادئ إلى هدف DPO، مما يمكّن الخوارزمية من الاستكشاف خارج نطاق دعم النموذج الأولي وبيانات التغذية الراجعة البشرية. إنها تغيير من سطر واحد في DPO عبر الإنترنت، وهي فعّالة من حيث العينة بشكل يمكن إثباته، وتصل إلى سياسة نموذج لغة شبه مثلى. أصدر TRL تطبيقًا باسم XPOTrainer حتى الإصدار v1.13؛ لم يعد جزءًا من المكتبة، لكنه لا يزال متاحًا في سجل git.
التقطير
أوراق بحثية تتعلق بتدريب نموذج طالب بمساعدة نموذج معلم.
التقطير على السياسة لنماذج اللغة: التعلم من الأخطاء ذاتية التوليد
📜 الورقة البحثية: https://huggingface.co/papers/2306.13649
يُقدّم تقطير المعرفة المعمّم (GKD)، الذي يعالج عدم تطابق التوزيع في تقطير المعرفة (KD) للنماذج التوليدية الذاتية من خلال تدريب الطالب على المخرجات التي يولّدها بنفسه مع تغذية راجعة من المعلم، بدلاً من مجموعة ثابتة من التسلسلات. يدعم GKD دوال خسارة مرنة (مثل ما يتجاوز KL عندما لا يستطيع الطالب مطابقة المعلم) ويتكامل مع الضبط الدقيق المعزز بالتعلم (RLHF). يورد الورقة نتائج في مهام تلخيص النصوص، والترجمة، والاستدلال الحسابي، والضبط التعليمي. يُستخدم في TRL عبر experimental.gkd.GKDTrainer، الذي يكشف عن خلط على/خارج السياسة (on/off-policy) من الورقة (lmbda). ينفّذ DistillationTrainer نفس هدف JSD المعمّم للحالة التي تكون فيها السياسة دائمة التفعيل. لإعادة إنتاج إعداد الورقة، استخدم هذا التكوين:
from trl.experimental.gkd import GKDConfig
# XSum summarization task (Table A.1 of the paper)
training_args = GKDConfig(
lmbda=0.5, # λ student data fraction (Section 3 of the paper)
beta=0.5, # β Generalized JSD interpolation, 0=KL, 1=reverse KL (Section 3 of the paper)
temperature=1.0, # student training temperature (Appendix A of the paper)
max_steps=40000, # training steps (Table A.1 of the paper)
learning_rate=3e-4, # learning rate (Table A.1 of the paper)
per_device_train_batch_size=32, # batch size (Table A.1 of the paper)
warmup_steps=2000, # warm-up steps (Table A.1 of the paper)
max_new_tokens=64, # max output tokens (Table A.1 of the paper)
)MOPD: التقطير أثناء السياسة من عدة معلمين لدمج القدرات في التدريب اللاحق لنماذج اللغة الكبيرة
📜 الورقة البحثية: https://huggingface.co/papers/2606.30406
يُهيكل التدريب ما بعد التدريب في ثلاث مراحل: تدريب SFT عام، وتدريب RL مستقل لكل مجال عبر خبير واحد لكل مجال (مثل RL للإجابات القابلة للتحقق في الرياضيات، وRL للوكلاء في بيئة معزولة لهندسة البرمجيات)، ومرحلة MOPD نهائية تدمج خبراء المجالات المجمّدين في طالب موحّد واحد. في تلك المرحلة النهائية، يولّد الطالب مسارًا لكل موجه، ويُرسَل كل مسار إلى معلم المجال المقابل له (دون أي متوسط أو تجميع عبر المعلمين)، ويُحدَّث الطالب عن طريق تقليل KL العكسي لكل رمز مقابل توزيع ذلك المعلم الواحد على طول المسار. يُستخدم في TRL عبر experimental.async_distillation.AsyncDistillationTrainer، الذي ينفّذ هذه المرحلة الثالثة، مرحلة الدمج: تمرير أكثر من عنصر في teacher_server_urls يُفعّل MOPD، حيث تختار عمود teacher_id في كل صف المعلم (المدرب مسبقًا) الذي يُقيّمه. استخدم beta=1.0 لمطابقة هدف KL العكسي الوارد في الورقة.
حول التحيز الموضعي في التقطير على السياسة
📜 الورقة البحثية: https://huggingface.co/papers/2606.22600
يُقدّم تقطير على السياسة الموزونة بالأهمية (IW-OPD)، والذي يعالج انحياز الموقع في تقطير على السياسة (OPD) عن طريق إعادة وزن تحديثات تقطير الرموز المُستخرجة عشوائياً وفقاً لانحراف البادئة التراكمي بين المعلم والطالب. تحتفظ الرموز المبكرة بأوزان أكبر، بينما تُخفَّض أوزان الرموز اللاحقة بعد انحراف عالٍ. يُستخدم في TRL عبر experimental.iw_opd.IWOPDTrainer مع distillation_objective="iw_opd".
تحسّن الورقة IW-OPD باستخدام إعداد تدرّج سياسة مقصوص (verl) وعمليات rollout من vLLM. يعرّف IWOPDTrainer إعدادات التقطير وعمليات rollout المطابقة أدناه؛ أما إعدادات تحسين السياسة الواردة في الورقة مثل نطاق القص 0.2 وثابت dual-clip 3.0 وعصور PPO الداخلية ومعامل الإنتروبيا وعقوبة مكافأة KL وKL المساعدة وتصحيح الأهمية لعمليات rollout فهي ليست من معاملات IWOPDConfig.
from trl.experimental.iw_opd import IWOPDConfig
# Table 6 and Algorithm 1 of the paper, mapped to IWOPDConfig where available.
training_args = IWOPDConfig(
distillation_objective="iw_opd",
iw_opd_gamma=0.5, # γ amplification, Algorithm 1 and Appendix C.3
lmbda=1.0, # fully on-policy rollouts
learning_rate=1e-5, # Table 6
per_device_train_batch_size=1, # Table 6 uses PPO micro-batch size 1 per GPU
gradient_accumulation_steps=32, # with 32 GPUs, this gives the paper's 1024-prompt batch
num_generations=1, # Table 6 rollout samples per prompt
temperature=1.0, # Table 6 training decoding temperature
top_p=1.0, # Table 6 training decoding top-p
max_prompt_length=2048, # Table 6
max_completion_length=16384, # Table 6
warmup_ratio=0.0, # Table 6
use_vllm=True, # Table 6 uses vLLM rollouts
vllm_sync_frequency=1, # refresh rollout policy after each update
save_steps=10, # Table 6 checkpoint frequency
eval_steps=10, # Table 6 validation frequency
)التقطير وفق السياسة
📰 المدونة: https://thinkingmachines.ai/blog/on-policy-distillation/
يتضمن التقطير وفق السياسة توليد نموذج الطالب مسارات لكل دفعة من بيانات التدريب. ثم نحصل على توزيعات الاحتمالات لكل رمز من الرموز في المسارات من كلا النموذجين: الطالب والمعلم. بعد ذلك، يتم تحسين نموذج الطالب لتقليل تباعد كولباك-ليبلر (KL) السالب بين توزيعات رموزه وتوزيعات نموذج المعلم.
| الطريقة | العينة | إشارة المكافأة |
|---|---|---|
| الضبط الدقيق الإشرافي | خارج السياسة | كثيف |
| التعلم المعزز | على السياسة | متناثر |
| التقطير على السياسة | على السياسة | كثيف |
تبيّن أن التقطير وفق السياسة (On-Policy Distillation) يتفوق على SFT وGRPO، ويمكن استخدامه لاستعادة قدرات التعميم التي تُفقد أثناء SFT.
بالإضافة إلى ذلك، تكون التقطير على السياسة (on-policy) أكثر كفاءة في استخدام الحوسبة، وأقل عرضة للإفراط في التخصيص (overfitting) عند التدريب ببيانات محدودة.
لتدريب نموذج باستخدام التقطير على السياسة باستخدام TRL، يمكنك استخدام الإعداد التالي، مع DistillationTrainer و DistillationConfig:
from trl import DistillationConfig
training_args = DistillationConfig(
beta=1.0, # to ensure reverse-kl as the loss function
teacher_model_name_or_path="teacher-model", # specify the teacher model
)بديلًا عن ذلك، يمكنك استخدام experimental.gkd.GKDTrainer و experimental.gkd.GKDConfig:
from trl.experimental.gkd import GKDConfig
training_args = GKDConfig(
lmbda=1.0, # student produces rollouts for all batches
beta=1.0, # to ensure reverse-kl as the loss function
teacher_model_name_or_path="teacher-model", # specify the teacher model
)يمكنك أيضًا استخدام experimental.gold.GOLDTrainer للتقطير وفق السياسة؛ راجع Unlocking On-Policy Distillation for Any Model Family.
فتح إمكانيات التقطير وفق السياسة لأي عائلة نماذج
🌐 المشروع: https://huggingface.co/spaces/HuggingFaceH4/general-on-policy-logit-distillation
يُقدّم تقطير اللوغيتات العامة عبر الإنترنت (GOLD)، الذي يوسّع تقطير السياسة على المسار إلى أزواج الطالب/المعلم الذين يستخدمون مُرمّزيات (tokenizers) وعائلات نماذج مختلفة. يُحاذا GOLD المقاطع النصية عبر المُرمّزيات ويمكنه تطبيق تقطير اللوغيتات الشامل (ULD) حتى لا تُهمل رموز الإكمال. يُستخدم في TRL عبر experimental.gold.GOLDTrainer.
from trl.experimental.gold import GOLDConfig
training_args = GOLDConfig(
lmbda=1.0, # student produces rollouts for all batches
beta=1.0, # to ensure reverse-kl as the loss function
use_uld_loss=True, # Universal Logit Distillation for cross-tokenizer pairs
)X-Token: تقطير معرفة بين مُرمّزين مختلفين موجّه بالمشروع
📜 الورقة البحثية: https://huggingface.co/papers/2605.21699
يمدّد X-Token إطار GOLD للتقطير إلى أزواج طالب-معلّم لا يتشاركان مُجزِّئًا (tokenizer). إنه طريقة خارج السياسة (off-policy) (lmbda=0): حيث يوفّر مجموعة البيانات نصّ الإكمال، ويُنفّذ كلٌّ من الطالب والمعلّم تمريرات أمامية على ذلك النص، ثم تُحسب خسارة التقطير عبر المُجزِّئات (cross-tokenizer KD loss) بين قيم logits الخاصة بهما. لا حاجة إلى أي تمريرات طالب ضمن السياسة (on-policy rollouts). تُستخدم مصفوفة إسقاط متناثرة (sparse projection matrix) W ∈ ℝ^{V_s × V_t} محسوبة مسبقًا لإسقاط كل رمز طالب إلى رموز المعلّم التي يتوافق معها على الأرجح، مما يُسقط توزيع الطالب في فضاء مفردات المعلّم بحيث يمكن مقارنتهما مباشرةً. يُستخدم في TRL عبر experimental.gold.GOLDTrainer مع xtoken_loss_type="p_kl" أو "h_kl".
يُوفَّر صياغان لخسارة:
| النوع | xtoken_loss_type | الوصف |
|---|---|---|
| P-KL | "p_kl" | يقوم إسقاط التوزيع الكامل للطالب إلى مفردات المعلم عبر W وحساب forward KL على مجموعة top-k عالمية. يطبّق المعادلة (4) من الورقة البحثية. |
| H-KL | "h_kl" | هجين: KL الأمامي على التوزيعات المعاد تطبيعها على مجموعة مشتركة مريحة (وزن الإسقاط top-1 ≥ 0.6) وsorted-L1 على الرموز غير الشائعة. يطبّق المعادلة (3) مع الإسقاط من المعادلة (5). |
كما في التنفيذ المرجعي، تقطع H-KL احتمالات اللوغاريتمية لكامل المفردات إلى المجموعة المشتركة، وتُوسّط P-KL احتمالات اللوغاريتمية للمعلم على كل مقطع دون إعادة تطبيع، لذا يمكن أن يكون حد KD سالبًا. يستخدم CE و KD عدّادات منفصلة للرموز والمقاطع المحاذاة على كل نافذة تراكم. تُحسب موازنة CE/KD الديناميكية واختيار أعلى k لـ P-KL لكل دفعة مصغرة.
تستخدم هذه النسخة من التنفيذ مصفوفة إسقاط مجمّدة. كما يتعلم الورق المصفوفة بشكل مشترك لخوارزمية P-KL؛ ولم يتم تنفيذ تلك النسخة هنا.
أولاً، أنشئ مصفوفة الإسقاط باستخدام سكربتات الإعداد في examples/xtoken/. يعيد الخطوة 1 ترميز مفردات الطالب باستخدام مُرمِّز المعلم؛ ثم يقوم العلم الاختياري --runtime-top-k بفرز المصفوفة وقصّها دفعة واحدة (ما يعادل تشغيل sort_and_cut_projection_matrix.py لاحقاً):
python examples/xtoken/build_projection_matrix.py \
--student-model meta-llama/Llama-3.2-1B-Instruct \
--teacher-model Qwen/Qwen3-4B \
--runtime-top-k 4 \
--output-dir cross_tokenizer_dataثم درّب باستخدام السكربت المرفق (خارج السياسة، ولا حاجة إلى vLLM):
python examples/xtoken/xtoken.py \
--model_name_or_path meta-llama/Llama-3.2-1B-Instruct \
--teacher_model_name_or_path Qwen/Qwen3-4B \
--dataset_name trl-lib/chatbot_arena_completions \
--xtoken_loss_type p_kl \
--xtoken_projection_matrix_path cross_tokenizer_data/projection_map_Llama-3.2_to_Qwen3_multitoken_top_32_double_special_top4.pt \
--lmbda 0.0أو مرّر المسار إلى experimental.gold.GOLDConfig مباشرةً:
from trl.experimental.gold import GOLDConfig
config = GOLDConfig(
lmbda=0.0, # "off-policy knowledge distillation"
xtoken_temperature=1.0, # "temperature τ=1.0"
xtoken_dynamic_scaling=True, # Eq. (7): stop-gradient CE/KD balance
xtoken_loss_type="p_kl",
xtoken_projection_matrix_path="cross_tokenizer_data/projection_map_Llama-3.2_to_Qwen3_multitoken_top_32_double_special_top4.pt",
teacher_tokenizer_name_or_path="Qwen/Qwen3-4B",
)التقطير المعرفي لنماذج اللغة الكبيرة
📜 الورقة البحثية: https://huggingface.co/papers/2306.08543
MiniLLM هي أول طريقة لتقطير المعرفة ضمن السياسة، حيث تُقلّص KLD العكسي على مستوى التسلسل بين نموذج المعلم ونموذج الطالب، وتُحسَّن باستخدام تعلّم التعزيز.
إنه نسخة عامة من التقطير على السياسة من مختبر Think Machine Lab، مع إمكانية إضافة إشارات التقطير أحادية الخطوة على مستوى التوزيع (مثل GKD عندما beta=1) وإشارات KLD العكسية للسياق الطويل.
أصدر TRL تطبيقًا باسم MiniLLMTrainer حتى الإصدار v1.14؛ لم يعد جزءًا من المكتبة ولا يزال متاحًا في سجل git.
التعلم المعزز عبر التوزيع الذاتي
📜 الورقة البحثية: https://huggingface.co/papers/2601.20802
يعزز تحسين سياسة التوزيع الذاتي (SDPO) التعلم المعزز بمكافآت قابلة للتحقق من خلال تحويل الملاحظات النصية الغنية (مثل أخطاء وقت التشغيل وتقييمات الحكام) إلى إشارة تعلم كثيفة دون الحاجة إلى معلم خارجي أو نموذج مكافأة صريح. يعامل SDPO النموذج الحالي المشروط بالملاحظات كمعلم ذاتي، ويستخلص توقعاته التالية للرموز المستمدة من الملاحظات ويعيدها إلى السياسة. ومن اللافت للنظر أن SDPO يتفوق أيضاً على الخطوط الأساسية في بيئات RLVR القياسية التي تعيد ملاحظات قياسية فقط، وذلك من خلال استخدام المسارات الناجحة كملاحظات ضمنية للمحاولات الفاشلة.
from trl.experimental.sdpo import SDPOConfig, SDPOTrainer
training_args = SDPOConfig(
distillation_alpha=0.5, # Jensen-Shannon divergence (recommended)
distillation_mode="topk_logits", # Explicitly select top-K logit distillation
distillation_topk=100, # Required for top-K logit distillation
distillation_is_clip=2.0, # Importance sampling clipping
distillation_weight=1.0, # Convex weight: (1-w)*policy + w*distillation; 1.0 = pure distillation
use_successful_as_teacher=True, # Use successful rollouts as teacher
teacher_model_kind="ema", # Supported: "base", "live", "ema"
teacher_update_rate=0.05, # EMA update rate
include_environment_feedback=True, # required to use the dataset's privileged_context (defaults to False)
)
trainer = SDPOTrainer(
model="Qwen/Qwen2.5-1.5B-Instruct",
reward_funcs=...,
args=training_args,
train_dataset=...,
)
trainer.train()أعمدة مجموعة البيانات المتوقعة:
promptprivileged_contextلملاحظات اختيارية حول البيئة
لمزيد من التفاصيل، راجع توثيق مدرب SDPO.
التعليم الذاتي المستمر ممكن من خلال التقطير الذاتي
📜 الورقة البحثية: https://huggingface.co/papers/2601.19897
يُنفّذ الضبط الدقيق المُستَخلَص ذاتيًا (SDFT) الاستخلاص الذاتي على السياسة عن طريق توليد إكمالات أثناء التدريب، ثم استخلاص عرض معلّم صريح مشروط بتلك الإكمالات نفسها وإعادته إلى الطالب. يتم اختيار المعلّم بواسطة teacher_model_kind: "base" (الطالب الأولي)، أو "live" (الطالب الحالي)، أو "ema" (معلّم مُتوسط أُسّيًا). يُركَّب موجه المعلّم داخليًا من موجه الطالب prompt بالإضافة إلى السياق الخاص privileged_context في مجموعة البيانات.
from datasets import Dataset
from trl.experimental.sdft import SDFTConfig, SDFTTrainer
dataset = Dataset.from_dict(
{
"prompt": [[{"role": "user", "content": "Solve 2+2."}]],
"privileged_context": ["Example answer: 4."],
}
)
training_args = SDFTConfig(
distillation_alpha=0.5,
distillation_mode="topk_logits",
distillation_topk=5,
max_completion_length=64,
)
trainer = SDFTTrainer(
model="Qwen/Qwen2.5-1.5B-Instruct",
args=training_args,
train_dataset=dataset,
)
trainer.train()أعمدة مجموعة البيانات المتوقعة:
promptprivileged_contextالذي يحتوي فقط على المعلومات الإضافية الخاصة بالمعلم
لمزيد من التفاصيل، راجع توثيق مدرب SDFT.
التبسيط المذموم للتبسيط الذاتي يحسّن توليد الأكواد
📜 الورقة البحثية: https://huggingface.co/papers/2604.01193
تحسّن تقنية التقطير الذاتي البسيط (SSD) توليد الأكواد عن طريق أخذ عينات من الاكتمالات من النموذج عند درجة حرارة وتكوين تقطيع محددين أثناء التدريب، ثم ضبط النموذج الدقيق على تلك العينات الخام غير الموثقة باستخدام خسارة الانتروبيا المتقاطعة القياسية. لا حاجة إلى نموذج مكافآت، أو مُتحقق، أو نموذج مُعلِّم، أو تعلُّم تعزيزي. تعيد SSD تشكيل توزيعات الرموز بطريقة تعتمد على السياق: فهي تكبح ذيول المشتتات في مواضع «القفل» (حيث تترك الصياغة القواعدية مجالًا ضئيلًا للغموض) مع الحفاظ على التنوع في مواضع «التشعب» (حيث توجد استمرارات صالحة متعددة).
أصدر TRL تطبيقًا باسم SSDTrainer حتى الإصدار v1.15؛ لم يعد جزءًا من المكتبة ولا يزال متاحًا في سجل git.
حل لمشكلة Softmax و Cross-Entropy
📜 الورقة البحثية: https://huggingface.co/papers/2610.31642
يحدد انهيار دالة softmax في التنبؤات عالية الثقة والإلغاء عندما تتطابق تقريبًا قيم logits للطالب والمعلم. تستخدم رؤوس الاحتمال اللوغاريتمي المقطعي والتقطير في TRL تطبيعًا يستهدف الاستبعاد وفروق الاحتمال في فضاء اللوغاريتم للحفاظ على التدرجات الصغيرة. تُطبَّق الإصلاحات العددية تلقائيًا، بما في ذلك KL الأمامي وKL العكسي وJSD المعمم في DistillationTrainer.
حدد الملحق B.4 من Entropy-preserving reinforcement learning سابقاً فشل تدرّج السياسة عالي الثقة، واقترح إعادة حساب التدرّجات بشكل انتقائي باستخدام FP64. تحافظ نواة TRL على هذه التدرّجات باستخدام صيغ FP32 مستقرة.
تمت معالجة مشكلة تحويل المخرجات الخاصة بـ FSDP2 التي تمت مناقشتها في الملحق B.1 من خلال Accelerate #4403. تتطلب إصدارات Accelerate الأقدم سياسة دقة مختلطة مع output_dtype=None للحفاظ على مخرجات النواة بصيغة FP32.
يُظهر المثال التالي كيفية تعيين معاملات الضبط المُبلَّغ عنها في القسم 7 إلى هدف TRL الخاص بـ forward-KL، والذي يتشارك تدرّج الطالب في دالة الخسارة المتقاطعة ذات الأهداف الناعمة. يوضح المثال تقطير نماذج اللغة بدلاً من إعادة إنتاج تجربة الحساب المعياري من الورقة البحثية. تُهيّئ الورقة البحثية الطالب بأوزان المعلم؛ ويجب التعامل مع ذلك عند بناء النماذج، بشكل مستقل عن الإعداد. تبقى قيم الإعداد الافتراضي الأخرى للمدرّب دون تغيير.
from trl import DistillationConfig
training_args = DistillationConfig(
beta=0.0, # Forward KL has the same student gradient as soft-target cross-entropy.
temperature=4.0, # "distillation temperature T=4"
learning_rate=2e-3, # "eta=2 x 10^-3"
lr_scheduler_type="constant",
optim="adamw_torch", # AdamW with zero weight decay has the same updates as Adam.
weight_decay=0.0, # "lambda=0"
adam_epsilon=1e-8, # "epsilon=10^-8"
max_steps=2000, # "2,000 steps of Adam"
)التدريب الموزّع
ZeRO: تحسينات الذاكرة نحو تدريب نماذج ذات تريليون من المعاملات
📜 الورقة البحثية: https://huggingface.co/papers/1910.02054
تُزيل تقنية ZeRO (المُحسِّن غير المُتكرِّر) التكرارات في الذاكرة أثناء التدريب المتوازي على مستوى البيانات والنموذج، وذلك من خلال تقسيم حالات المُحسِّن والتدرجات والمعاملات عبر الأجهزة، مع الحفاظ على حجم اتصال منخفض وحُبيبية حسابية عالية. وهذا يتيح تدريب نماذج كبيرة بكفاءة، والتي لا يمكن استيعابها في ذاكرة وحدة معالجة الرسوميات (GPU) وإلا.
يدعم TRL تقنية ZeRO عبر تكامل DeepSpeed. لاستخدامها، قم بتوفير ملف إعدادات DeepSpeed يحتوي على الإعدادات المطلوبة،
{
"zero_optimization": {"stage": 3},
"bf16": {"enabled": "auto"},
"train_batch_size": "auto",
"train_micro_batch_size_per_gpu": "auto"
}اضبط deepspeed="zero3.json" في إعدادات التدريب، ثم شغّل سكربت التدريب باستخدام torchrun.
torchrun --nproc_per_node 2 train.py