OpenRLHF Cheatsheet
OpenRLHF هو إطار عمل RLHF عالي الأداء ومفتوح المصدر مصمم للتوسع. مبني على Ray للجدولة الموزعة و vLLM للتوليد السريع و DeepSpeed/ZeRO للتدريب، ينقسم إلى العامل والناقد والمكافأة والنماذج المرجعية عبر وحدات معالجة الرسومات بحيث يمكنك تدريب النماذج الكبيرة (70 مليار+) بكفاءة. ينفذ قائمة واسعة من الخوارزميات — PPO و GRPO و REINFORCE++ و RLOO — بالإضافة إلى العينات الديناميكية و RL الوكيل غير المتزامن.
التعلم التعزيزي على نطاق كبير يتطلب جهدًا تشغيليًا كبيرًا. ابدأ على عقدة واحدة بنموذج صغير، وتأكد من أن اتجاهات المكافأة صحيحة، ثم توسع باستخدام Ray.
التثبيت
| الطريقة | الأمر |
|---|
| pip | pip install openrlhf |
| مع إضافات vLLM | pip install openrlhf[vllm] |
| من المصدر | git clone https://github.com/OpenRLHF/OpenRLHF && cd OpenRLHF && pip install -e . |
| Docker | استخدم صورة المشروع المرجعية (CUDA والعتاد مثبتان مسبقًا) |
| المتطلبات | وحدات معالجة رسومات NVIDIA والعتاد ذي الصلة، CUDA، Ray، DeepSpeed، vLLM |
الهندسة المعمارية
| المكون | الدور |
|---|
| العامل | نموذج السياسة الذي يتم تدريبه |
| الناقد | نموذج القيمة (PPO) |
| نموذج المكافأة | يسجل الردود المُنتجة |
| النموذج المرجعي | خط الأساس المجمد لعقوبة KL |
| Ray | ينسق ويضع هذه النماذج عبر وحدات معالجة الرسومات |
| محرك vLLM | يسرع مرحلة التجميع/التوليد |
نقاط الدخول المشتركة للتدريب
تتضمن OpenRLHF وحدات CLI لكل خوارزمية؛ استدعي باستخدام deepspeed أو ray.
| الأمر | الغرض |
|---|
openrlhf.cli.train_sft | الضبط الدقيق للإشراف |
openrlhf.cli.train_rm | تدريب نموذج المكافأة |
openrlhf.cli.train_ppo | PPO (متحكم واحد) |
openrlhf.cli.train_ppo_ray | PPO/GRPO موزع مع Ray + vLLM |
openrlhf.cli.train_dpo | Direct Preference Optimization |
PPO/GRPO مع Ray (رسم)
ray start --head --node-ip-address 0.0.0.0
python3 -m openrlhf.cli.train_ppo_ray \
--pretrain Qwen/Qwen2.5-7B-Instruct \
--reward_pretrain OpenRLHF/Llama-3-8b-rm-mixture \
--advantage_estimator group_norm \
--vllm_num_engines 2 --vllm_tensor_parallel_size 1 \
--actor_num_gpus_per_node 4 \
--colocate_actor_ref \
--prompt_data your/prompts --input_key prompt \
--save_path ./ckpt --use_wandb $WANDB_API_KEY
| العلم | التحكم |
|---|
--pretrain | نموذج أساسي/عامل |
--reward_pretrain | مسار نموذج المكافأة |
--advantage_estimator group_norm | ينتقي تطبيع مجموعة من نمط GRPO |
--vllm_num_engines | عدد محركات تجميع vLLM |
--actor_num_gpus_per_node | توزيع وحدات معالجة الرسومات للعامل |
--colocate_actor_ref | ضع العامل والمرجع معًا لحفظ وحدات معالجة الرسومات |
الخوارزميات
| الخوارزمية | العلم/الوحدة |
|---|
| PPO | الافتراضي في train_ppo* |
| GRPO | --advantage_estimator group_norm |
| REINFORCE++ | عائلة --advantage_estimator reinforce |
| RLOO | --advantage_estimator rloo |
| DPO / KTO | وحدات مكرسة train_dpo / train_kto |
التوسع والأداء
| التقنية | العلم/الملاحظة |
|---|
| مرحلة ZeRO | --zero_stage 3 للنماذج الكبيرة |
| Offload | --adam_offload لتسكين حالة المحسنات إلى المعالج |
| Flash attention | --flash_attn |
| Colocation | --colocate_actor_ref، --colocate_critic_reward |
| العينات الديناميكية | مدمجة لتحسين كفاءة العينات |
OpenRLHF مقابل verl مقابل ART
| الجانب | OpenRLHF | verl | ART |
|---|
| الأساس | Ray + DeepSpeed + vLLM | HybridFlow + FSDP/Megatron | عميل/خادم + Unsloth |
| نقاط القوة | RLHF الإنتاجي والخوارزميات الواسعة | الإنتاجية والمرونة | الوكلاء في رمزك الخاص |
| متعدد الوسائط | VLM RLHF (OpenRLHF-M) | مدعوم | يركز على النصوص |
| الأفضل لـ | أنابيب RLHF القابلة للتوسع | بحث الإنتاجية | RL أحادي الوكيل أثناء العمل |
الموارد