تُحدَّث يومياً

مصدرُك العربي
لمستقبل الذكاء الاصطناعي

أخبار، تقارير، أدوات وتحليلات يومية — كل ما تحتاجه لمتابعة ثورة الذكاء الاصطناعي باللغة العربية

✅ تم الاشتراك!
تعلم و استخدام الذكاء الاصطناعي

Molt من NVIDIA: إطار تدريب وكلاء الذكاء الاصطناعي بـ9200 سطر فقط

بقلم: ليلى | محررة أدوات المطورين · صوت تحريري بإشراف بشري

Molt هو إطار التعلم المعزز الجديد من NVIDIA-NeMo، ويطرح سؤالاً مقلقاً لكل من يشتغل على تدريب نماذج ضخمة: لماذا نتحمّل تعقيد عشرات الآلاف من الأسطر البرمجية حين يمكن الوصول إلى نفس الأداء بـ9,200 سطر فقط؟ الإطار مصمّم من الأساس ليجعل الوكيل هو البرنامج بأكمله، لا مجرد إضافة فوقية على نظام تدريب عام.

الفكرة المحورية التي يبنى عليها Molt هي البساطة القابلة للتوسع. ثلاثة مكوّنات فقط تحمل العبء كله: Ray لإدارة التوزيع وقوائم الانتظار غير المتزامنة، وvLLM لتوليد بيانات التدريب (rollout)، وNVIDIA AutoModel + FSDP2 للتدريب بـPyTorch الخالص. لا backend مخصوص، لا طبقات مخفية، لا سحر — كل سطر يلمس التدرجات يمكنك قراءته في وقت واحد بعد الظهر. والأهم أن المكدس ذاته الذي يدرّب نموذجاً بـ8 مليار معامل يتوسع دون إعادة كتابة حتى نماذج MoE بحجم تريليون معامل كـDeepSeek-V3 مع خيار --fsdp.ep_size 256.

للمقارنة مع البدائل الموجودة: OpenRLHF يحمل 7,200 سطر لكنه مبني حول RLHF التقليدي بمكوّن ناقد منفصل؛ verl يصل إلى 62,000 سطر مدعوماً بـMegatron وSGLang وFSDP مع تغطية أوسع للإنتاج؛ وslime يقع عند 25,000 سطر مع Megatron وSGLang فقط. Molt يختار مساراً مختلفاً: actor وحيد مع مرجع KL اختياري، مقارنةً بـactor + critic + RM في كل المنافسين الثلاثة. هذا ليس قيداً — هو قرار تصميمي واعٍ يجعل كل خسارة في ملف واحد وكل تدرج ظاهراً أمامك.

عقد الوكيل (Agent Contract) في Molt يعتمد على واجهة API واحدة متوافقة مع Gymnasium: إما Env.step() أو ChatAgent.run(). أي شيء يمكنك حسابه بـPython يصلح مكافأةً (reward)، بما يشمل استدعاءات LLM-as-judge عبر نفس محركات vLLM التي تشغّل rollout. البيانات تتدفق بعقد “token-first”: معرّفات التوكنز وlog-probabilities ونطاقات الإجراءات والمكافآت والبيانات متعددة الوسائط تبقى مترابطة من التوليد حتى التدريب، مما يجعل بيئات VLM والأدوات متعددة الأدوار تشترك في تنسيق واحد من البداية للنهاية.

الدعم الخوارزمي يشمل: reinforce، reinforce_baseline، rloo، grpo، dr_grpo، gae (PPO)، on_policy_distill. لمن يريد PPO كاملاً، يضاف نموذج قيمة (value model) عبر --algo.advantage.estimator gae بمجموعة Ray خاصة به مبنية على NeMoAutoModelForCausalLM مع رأس scalar value. والتقطير on-policy متاح عبر KL عكسي لمعلّم مجمّد. يدعم Molt قوالب المحادثة لـQwen3.x وNemotron omni3 وKimi-K2.6 وGLM وGemma وDeepSeek دون علامات مرمّزة صلبة.

من أبرز ما يميّز Molt تقنياً هو معالجته لمشكلة عدم التطابق بين log-probabilities وقت التوليد ووقت التدريب، وهي مشكلة شائعة في الـrollout غير المتزامن. الحل يأتي عبر نظام IS correction بثلاثة مستويات وثلاثة أوضاع: المستويات هي off, token, seq, geo (بدرجات دقة مختلفة للنسبة المرجّحة)، والأوضاع هي mask, clip, trunc (للتعامل مع النسب خارج النطاق). النطاق الموصى به في الوصفات هو ضيّق جداً: 0.99 إلى 1.01. تغطي هذه المجموعات ثلاث تقنيات من الأدبيات: TIS (truncated importance sampling)، وIcePop (token-level masking)، وMIS (masked importance sampling على مستوى التسلسل). ولاستقرار توجيه MoE تحديداً، يتوفر خياران: Router Replay (R3) الذي يُعيد تشغيل اختيار top-k من vLLM أثناء التمرير الأمامي للتدريب، وRouter Freeze الذي يجمّد أوزان البوابات.

من ناحية المتطلبات، يعمل Molt على A100 / H100 / H200 / B200 · GB200 ويحتاج إلى Python 3.10+ وPyTorch الأحدث. الطريقة الموصى بها للتشغيل هي الحاوية الجاهزة التي تضم CUDA 13 وtorch 2.11 وvLLM وTransformerEngine وflash-attn ومكتبات أخرى مبنية مسبقاً، وهي متاحة على Docker Hub بـdocker pull hijkzzz/molt:latest أو بإصدار مثبّت مثل hijkzzz/molt:0.1.3. للتطوير المحلي خارج الحاوية، تكفي هذه الخطوات:

  1. استنساخ المستودع: git clone https://github.com/NVIDIA-NeMo/labs-molt.git && cd labs-molt
  2. تثبيت الحزمة مع vLLM محلياً: pip install -e ".[vllm]" — يسحب تلقائياً إصدار NVIDIA AutoModel المحدد بـgit pin.
  3. لتشغيل SFT على 8 GPUs: torchrun --standalone --nproc_per_node=8 -m molt.cli.train_sft --model.model_name_or_path /path/to/automodel --data.dataset /path/to/sft.jsonl --data.input_key input --data.output_key output --ckpt.output_dir ./ckpt/sft --fsdp.attn_implementation te
  4. لتشغيل RL: python3 -m molt.cli.train_rl_ray --actor.model_name_or_path /path/to/automodel --data.prompt_dataset /path/to/prompts.jsonl --train.agent_path examples/python/agents/math.py --vllm.num_engines 2 --vllm.tensor_parallel_size 2 --rollout.batch_size 128 --train.batch_size 128 --algo.advantage.estimator reinforce --algo.kl.init_coef 0 --fsdp.attn_implementation te --ckpt.output_dir ./ckpt/rl
  5. لتفعيل KL regularization: رفع --algo.kl.init_coef فوق الصفر مع تخصيص عمال مرجعيين منفصلين.
  6. للنشر عبر PyPI بدون استنساخ: pip install "molt-rl[vllm]" — مع ملاحظة أن PyPI قد يتأخر عن الـpin في requirements.txt، وأن Router Replay (R3) يحتاج الإصدار الأحدث من AutoModel.

الإطار لا يدّعي أنه الأسرع أو الأكثر تغطيةً — verl وOpenRLHF يتفوقان في سيناريوهات الإنتاج ذات الحاجة لـPipeline Parallelism أو SGLang. لكن إن كنت باحثاً تريد تجريب بيئات وكلاء جديدة دون أن تتاه في عشرات الآلاف من الأسطر، أو مهندساً يريد أن يفهم بالضبط أين تذهب تدرجاته، فإن 9,200 سطر قابلة للقراءة في يوم واحد تستحق النظر بجدية قبل أي حل أثقل منها.

GitHub

مقالات ذات صلة

زر الذهاب إلى الأعلى