verl - Cheatsheet RL بمحرك Volcano لنماذج اللغات الكبيرة
verl (Volcano Engine Reinforcement Learning) هو إطار عمل مفتوح المصدر وعالي الأداء للتعلم التعزيزي لما بعد التدريب على نماذج اللغات الكبيرة. وهو التنفيذ العام لورقة HybridFlow، مبني حول نموذج برمجة هجين يتيح لك التعبير عن تدفقات بيانات RL معقدة — PPO و GRPO وغيرها — في بضعة أسطر مع فصل الحساب عن تبعيات البيانات. يتكامل مع FSDP و Megatron-LM و vLLM و SGLang، وهو أحد أكثر أطر عمل RL استخدامًا للنماذج الكبيرة.
التدريب بعد التعلم التعزيزي يتطلب موارد حسابية كثيفة وحساس للتكوين. تحقق من نموذج المكافأة وقم بتشغيل صغير قبل التوسع إلى عقد متعددة.
التثبيت
| الطريقة | الأمر |
|---|
| pip | pip install verl |
| من المصدر | git clone https://github.com/volcengine/verl && cd verl && pip install -e . |
| Docker | استخدم الصور الرسمية المذكورة في الوثائق (CUDA و vLLM مثبتان مسبقًا) |
| المتطلبات | وحدات معالجة رسومات NVIDIA والعتاد ذي الصلة، CUDA، PyTorch؛ vLLM أو SGLang للتجميع |
المفاهيم الأساسية
| المصطلح | المعنى |
|---|
| HybridFlow | نموذج التحكم: متحكم واحد ينسق العمال الموزعين |
| Rollout | مرحلة التوليد التي تنتج عينات (تخدمها vLLM/SGLang) |
| Actor / Critic | السياسة التي يتم تدريبها وعارض القيمة (بالنسبة إلى PPO) |
| Reward | إشارة عددية؛ من نموذج مكافأة أو وظيفة مخصصة |
| Placement | كيفية تعيين النماذج على مجموعات وحدات معالجة الرسومات (المترابطة أو المنقسمة) |
| Recipe | إعدادات جاهزة مسبقًا لخوارزمية |
الخوارزميات المدعومة
| الخوارزمية | الملاحظات |
|---|
| PPO | اللاعب/الناقد الكلاسيكي RLHF |
| GRPO | النسبة بين المجموعات، لا يتطلب نموذج ناقد |
| ReMax / RLOO | أساليب خفيفة الوزن |
| DAPO / Dr.GRPO | متغيرات GRPO |
| DPO-style | وصفات تحسين الفضل |
تشغيل وظيفة تدريب
يتم قيادة verl من خلال تجاوزات إعدادات نمط Hydra على سطر الأوامر.
# مثال GRPO (مفهوم): أشر إلى البيانات والنموذج وعنق الزجاجة
python3 -m verl.trainer.main_ppo \
algorithm.adv_estimator=grpo \
data.train_files=$DATA/train.parquet \
data.val_files=$DATA/val.parquet \
actor_rollout_ref.model.path=Qwen/Qwen2.5-7B-Instruct \
actor_rollout_ref.rollout.name=vllm \
trainer.n_gpus_per_node=8 \
trainer.nnodes=1
| مجموعة الإعدادات | التحكم |
|---|
algorithm.* | الخوارزمية والمقدر المميز (مثل adv_estimator=grpo) |
data.* | ملفات التدريب والتحقق وأحجام الدفعات والأطوال القصوى |
actor_rollout_ref.model.* | مسار النموذج الأساسي ونوع البيانات |
actor_rollout_ref.rollout.* | عنق الزجاجة (vllm / sglang) والعينات |
critic.* | إعدادات نموذج الناقد (PPO) |
trainer.* | وحدات معالجة الرسومات في كل عقدة وعدد العقد والتسجيل والنقاط |
الخوادم الخلفية والتوسع
| المكون | الخيارات |
|---|
| محرك التدريب | FSDP و FSDP2 و Megatron-LM |
| محرك التجميع | vLLM و SGLang |
| التوزيع | وضع Ray عبر وحدات معالجة الرسومات/العقد |
| عارض الأجهزة | وحدات معالجة الرسومات المترابطة أو المنقسمة عبر مجموعات |
المكافأة والبيانات
| المهمة | كيفية |
|---|
| المكافأة المخصصة | قدم وحدة دالة مكافأة من خلال الإعداد |
| نموذج المكافأة | أشر reward_model.* إلى نموذج التصنيف |
| تنسيق المجموعة البيانية | Parquet مع الطريقة (والإجابة للمكافآت القابلة للتحقق) |
| المكافآت القابلة للتحقق | الدعم المدمج للمكافآت ذات المطابقة الدقيقة من نمط الرياضيات/الأكواد |
المراقبة
| الأداة | التكامل |
|---|
| Weights & Biases | trainer.logger=['console','wandb'] |
| TensorBoard | خادم وسيط مدعوم |
| Checkpoints | trainer.save_freq، استئنف من trainer.resume_mode |
verl مقابل أطر عمل RL الأخرى
| الجانب | verl | OpenRLHF | ART |
|---|
| النموذج الأساسي | متحكم HybridFlow | انقسام عامل Ray | عميل/خادم |
| محركات التدريب | FSDP + Megatron | DeepSpeed/FSDP | Unsloth |
| التجميع | vLLM / SGLang | vLLM | vLLM |
| الأفضل لـ | الإنتاجية والمرونة | RLHF الإنتاجي على نطاق | الوكلاء في رمزك الخاص |
الموارد