LeRobot documentation
FastWAM
FastWAM
FastWAM هو نموذج سياسة لنموذج العالم والإجراء (World Action Model) للتحكم في الروبوتات. يتيح تكامل LeRobot الوصول إلى FastWAM عبر واجهة برمجة التطبيقات القياسية للسياسات، مما يسمح بإعداده باستخدام policy.type=fastwam، وتدريبه باستخدام lerobot-train، وتحميله عبر واجهة سياسات LeRobot المُدرَّبة مسبقًا.
نظرة عامة على النموذج
يحافظ FastWAM على نمذجة الفيديو أثناء التدريب، لكنه يستخدم التنبؤ المباشر بالإجراء في وقت الاستدلال بدلاً من توليد الملاحظات المستقبلية بشكل تكراري. يلتف هذا الإجراء من LeRobot حول نموذج الإجراء الخاص بـ FastWAM، ويكيّف دفعات LeRobot إلى عينات تدريب FastWAM، ويوفر خط المعالجة القياسي للتطبيع ومعالجة الإجراءات ما بعد المعالجة.
تقوم عملية التنفيذ بمكوّنات نموذج العالم البصري من Wan-AI/Wan2.2-TI2V-5B افتراضياً، وتُتنبأ بأجزاء الإجراء ذات الشكل [batch, action_horizon, action_dim].
ما تغطيه تكامل LeRobot
- إعداد
policy.type=fastwamالقياسي من خلال LeRobot - التكيف مع دفعات مهام الصور والحالة والإجراء واللغة
- استدلال على مقاطع الإجراءات من خلال
select_actionوpredict_action_chunk - حفظ/تحميل نقاط التفتيش عبر واجهات برمجة تطبيقات سياسة LeRobot
- معالجة ما بعد الإجراء قابلة للتهيئة لمقبض LIBERO
متطلبات التثبيت
قم بتثبيت LeRobot من المصدر، ثم ثبّت تبعيات FastWAM:
pip install -e ".[fastwam]"يقوم هذا الأمر بتثبيت الإضافات الخاصة بسياسة FastWAM من pyproject.toml: وهي transformers، وdiffusers، وftfy، وregex، بالإضافة إلى التبعيات الأساسية لـ LeRobot.
لتقييم LIBERO، ثبّت تبعات المعيار المرجعي أيضًا:
pip install -e ".[fastwam,libero]"يقوم هذا الأمر بتثبيت الإضافتين معًا. بالإضافة إلى تبعيات FastWAM المذكورة أعلاه، يقوم الإصدار الإضافي libero بتثبيت تبعيات مجموعة بيانات LeRobot، وhf-libero على نظام Linux، وscipy.
يستخدم FastWAM العمود الفقري Wan2.2 TI2V. المعرّف الافتراضي للنموذج هو:
policy.model_id=Wan-AI/Wan2.2-TI2V-5Bمتطلبات البيانات
يتوقع FastWAM مجموعة بيانات LeRobot تحتوي على:
- ملاحظة بصرية واحدة أو أكثر تكون عرضاتها مجتمعةً تساوي
policy.image_size[1] observation.stateعندما لا يكونpolicy.proprio_dimهوNoneaction- تعليمات مهمة لغوية عبر حقل المهمة في مجموعة البيانات، أو متجهات
contextوcontext_maskالمحسوبة مسبقًا
الإعداد البصري الافتراضي هو ميزة صورة واحدة باسم observation.images.image بأبعاد (3, 224, 448). إذا كان مجموعة البيانات تستخدم كاميرتين، فقم بإعداد policy.input_features بحيث تتطابق ارتفاعاتهما مع 224 وتكون مجموع عرضيهما 448.
الاستخدام
أنشئ سياسة FastWAM جديدة باستخدام:
lerobot-train \
--dataset.repo_id=your-org/your-dataset \
--policy.type=fastwam \
--policy.action_dim=7 \
--policy.proprio_dim=8 \
--policy.action_horizon=32 \
--policy.n_action_steps=10 \
--policy.image_size='[224,448]' \
--output_dir=./outputs/fastwam_training \
--job_name=fastwam_training \
--steps=300000 \
--batch_size=8 \
--policy.device=cudaقيّم نقطة تفتيش موجودة بصيغة LeRobot على LIBERO-10 باستخدام:
lerobot-eval \ --policy.path=lerobot/fastwam_libero_uncond_2cam224 \ --policy.device=cuda \ --policy.dtype=float32 \ --policy.n_action_steps=10 \ --env.type=libero \ --env.task=libero_10 \ --env.observation_height=224 \ --env.observation_width=224 \ --eval.batch_size=1 \ --eval.n_episodes=50 \ --seed=0 \ --env.episode_length=600
بالنسبة إلى libero_goal وlibero_spatial وlibero_object، استخدم --env.episode_length=300.
يستخدم هذا نقطة التفتيش VISUAL: IDENTITY للمعالجة المسبقة. يعيد FastWAM مقياس الصور إلى [-1, 1] داخل النموذج، لذا فإن تطبيق تطبيع الصور في المعالج المسبق سيؤدي إلى تطبيعها مرتين.
لتشغيل النموذج على روبوت حقيقي، استخدم مسار نقطة التفتيش نفسه:
lerobot-rollout \ --robot.type=so101_follower \ --robot.port=/dev/ttyACM0 \ --policy.path=your-org/fastwam-real-robot
ملاحظات الإعداد
خصائص الصور
policy.image_size هو حجم متجه الصورة FastWAM المدمج على شكل (height, width). يجب أن يكون لكل ميزة صورة مُهيأة شكل (3, height, camera_width)، ويجب أن يكون مجموع جميع عرض الكاميرات مساوياً للعرض المُهيأ.
تجزئة الإجراءات
يتحكم policy.action_horizon في عدد الإجراءات المستقبلية التي تُشرف عليها عملية التدريب وتُتنبأ بها أثناء الاستدلال. يتحكم policy.n_action_steps في عدد الإجراءات التي تُستهلك قبل أن يتنبأ policy.n_action_steps بقطعة جديدة. يجب أن يكون policy.n_action_steps أقل من أو يساوي policy.action_horizon.
الإجراءات النسبية
يتنبأ FastWAM بالإجراءات المطلقة افتراضيًا. عند تعيين policy.use_relative_actions=true، يتنبأ بإزاحات عن observation.state الحالي بدلاً من ذلك، لذا يجب تعيين policy.proprio_dim. تبقى المفاصل المذكورة في policy.relative_exclude_joints (الافتراضي ["gripper"]) مطلقة. أعد حساب إحصاءات مجموعة البيانات في الفضاء النسبي أولاً، مع تعيين --operation.chunk_size إلى policy.action_horizon (انظر π₀.₅ relative actions):
lerobot-train \
--dataset.repo_id=your-org/your-dataset \
--policy.type=fastwam \
--policy.use_relative_actions=true \
--policy.relative_exclude_joints='["gripper"]' \
...تُضاف خطوات معالج الإجراءات النسبية إلى نقاط الحفظ التي تم حفظها قبل وجود الإجراءات النسبية، مثل lerobot/fastwam_base، عند الضبط الدقيق منها باستخدام هذا الخيار. ينطبق هذا فقط أثناء الضبط الدقيق: فالتقييم والتشغيل يستخدمان المعالجات المحفوظة مع نقطة الحفظ كما هي.
جهاز مُشفِّر النص
يتطلب مُشفّر النص المجمّد UMT5-XXL حوالي 11 غيغابايت. يحافظ policy.text_encoder_device=cpu على إبعاده عن وحدة معالجة الرسوميات: يتم ترميز الأوامر على وحدة المعالجة المركزية ثم نقل التضمينات إلى policy.device. أثناء الاستدلال، يُخزَّن مؤقتًا المهمة المُرمَّزة حتى policy.reset()، لذا فإن الترميز الأبطأ على وحدة المعالجة المركزية يتم مرة واحدة لكل حلقة بدلاً من مرة واحدة لكل شريحة. أما التدريب فيرمز كل دفعة، لذلك فإن وضع وحدة المعالجة المركزية يُبطئ كل خطوة هناك.
مكوّنات Wan
تحمّل FastWAM مكوّنات Wan VAE وvideo DiT ومشفّر النص والمقسّم (tokenizer) من مجلد نموذج Wan المُهيّأ أو من معرّف النموذج على Hugging Face Hub. كما تنسخ نقاط التفتيش (checkpoints) بصيغة LeRobot الخاصة بـ FastWAM، المحفوظة بواسطة save_pretrained، ملفات مكوّنات Wan المحلية اللازمة لـ from_pretrained.
واجهة الخلفية الانتباه
يستخدم DiT في FastWAM دالة scaled_dot_product_attention (SDPA) من PyTorch لجميع عمليات الانتباه. إنه لا يستخدم FlashAttention: فمسار Mixture-of-Transformers (MoT) يتطلب أقنعة انتباه منطقية (boolean) اختيارية على شكل [query, key]، وهو ما لا تستطيع واجهة FlashAttention varlen التعبير عنه. لذلك، فإن تثبيت حزمة flash-attn لا يؤثر على مسار FastWAM. (يُذكر أن SDPA قد يختار داخليًا نواة flash أو memory-efficient أو math الخاصة بـ PyTorch نفسها — وهذا الأمر لا علاقة له بحزمة flash-attn.)
استدلال الإجراءات المُجمّعة
يمكن لـ FastWAM تجميع رسوميات ما قبل التعبئة للفيديو ورسوميات إزالة الضوضاء من الإجراءات المخزنة مؤقتًا لتقليل الحمل الإضافي المرتبط بتشغيل نواة Python وCUDA عبر خطوات الاستدلال المتكررة:
--policy.compile_action_infer=trueالخيار معطّل افتراضيًا. تنبؤ الإجراء الأول يُجمّع رسمًا بيانيًا لأشكال الإدخال الحالية، وبالتالي يكون أبطأ؛ أما التنبؤات اللاحقة ذات الأشكال نفسها فتعيد استخدامه. قد تُطلق تغييرات الأشكال إعادة تجميع. يبقى المسار الفوري متاحًا على تكوينات PyTorch أو المعالِجات غير المدعومة.
LIBERO تبديل الإجراء
تستخدم نقاط التفتيش الخاصة بـ LIBERO في FastWAM الإعداد policy.toggle_action_dimensions=[-1] افتراضياً لمطابقة اتفاقية إجراء القبضة المستخدمة في خط تقييم FastWAM الأصلي:
--policy.toggle_action_dimensions='[-1]'النتائج
تم التقييم على LIBERO باستخدام lerobot/fastwam_libero_uncond_2cam224:
| Suite | معدل النجاح | n_episodes |
|---|---|---|
| libero_spatial | 97.6% | 500 |
| libero_object | 99.0% | 500 |
| libero_goal | 95.0% | 500 |
| libero_10 | 94.0% | 500 |
| متوسط | 96.4% | 2000 |
إعادة الإنتاج: lerobot-eval --policy.path=lerobot/fastwam_libero_uncond_2cam224 --policy.device=cuda --policy.dtype=float32 --policy.n_action_steps=10 --env.type=libero --env.task=libero_spatial --env.observation_height=256 --env.observation_width=256 --eval.batch_size=1 --eval.n_episodes=50 --seed=0 --env.episode_length=300 (1x H20 140 GB).
المراجع
الاستشهاد
@article{yuan2026fastwam,
title = {Fast-WAM: Do World Action Models Need Test-time Future Imagination?},
author = {Tianyuan Yuan and Zibin Dong and Yicheng Liu and Hang Zhao},
journal = {arXiv preprint arXiv:2603.16666},
year = {2026},
url = {https://arxiv.org/abs/2603.16666}
}