# LaWAM

`lawam` هو مُكيّف LeRobot الخاص بـ [LaWAM](https://github.com/RLinf/LaWAM)، وهو نموذج عالمي كامن للأفعال (latent world action model) مصمم لسياسات روبوتية واعية بالديناميكيات. يجمع بين هيكل أساسي من Qwen3-VL، ونموذج عالمي/أفعال كامن، ورأس أفعال يعتمد على مطابقة التدفق (flow-matching)، مع توفير واجهات LeRobot القياسية للسياسات والتدريب والتقييم.

الموارد:

| الموارد           | رابط                                                                                                         | يُستخدم ل                              |
| ------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------- |
| صفحة المشروع       | [rlinf.github.io/LaWAM](https://rlinf.github.io/LaWAM/)                                                      | نظرة عامة على الطريقة                       |
| ورقة              | [arXiv:2606.15768](https://arxiv.org/abs/2606.15768)                                                         | تفاصيل الاستشهاد والمنهجية           |
| Code               | [RLinf/LaWAM](https://github.com/RLinf/LaWAM)                                                                | كود التدريب والتقييم الأصلي |
| التدريب المسبق الأصلي | [lawam-pretrain-lerobot](https://huggingface.co/jialei02/lawam-pretrain-lerobot)                             | تهيئة الضبط الدقيق لـ LeRobot    |
| SFT الأصلي لـ LIBERO  | [lawam-libero-sft-lerobot](https://huggingface.co/jialei02/lawam-libero-sft-lerobot)                         | تقييم LIBERO                     |
| نقاط التفتيش المصدر | [lawam-checkpoints](https://huggingface.co/collections/jialei02/lawam-checkpoints)                           | ملفات إصدار LaWAM الأصلية      |
| مجموعة بيانات LIBERO     | [jialei02/libero_merged_no_noops_20hz](https://huggingface.co/datasets/jialei02/libero_merged_no_noops_20hz) | LIBERO SFT                            |

## التثبيت

قم بتثبيت LeRobot مع الإضافة LaWAM:

```bash
pip install -e ".[lawam]"
```

قم بتثبيت تبعيات معيار LIBERO وتثبيت MuJoCo عند الإصدار 3.3.2 عند إعادة إنتاج تقييم LaWAM LIBERO المنشور:

```bash
pip install -e ".[lawam,libero]" "mujoco==3.3.2"
```

تُعدّ معدلات النجاح في معيار LIBERO حسّاسةً لإصدار محاكي MuJoCo. يمكن لإصدارات MuJoCo الأحدث أن تُقلّل بشكل ملموس من معدلات نجاح LIBERO المقاسة، بما في ذلك ذلك بالنسبة لسياسات تتجاوز LaWAM. هذه مشكلة توافق في بيئة التقييم وليست مشكلة في مُكيّف LaWAM. استخدم `mujoco==3.3.2` لإعادة إنتاج نتائج LaWAM في LIBERO والنتائج المنشورة في الورقة البحثية بدقة.

تستخدم نقاط التفتيش الخاصة بـ LaWAM الصيغة الأصلية `model.safetensors` الخاصة بـ LeRobot. يتم استعادة حالة LAM الكاملة، ومحوّل VLM، ورأس التدفق (flow-head) من خلال `policy.path`؛ ولا يتم تحميل ملفات LaWAM الأصلية بصيغة `.pt` بواسطة المحوّل. يتم تمثيل معماريتي LAM وDINOv3 مباشرةً بواسطة `LaWAMConfig` ولا تتطلب تنزيل نقاط تفتيش منفصلة.

حافظ على ضبط `policy.base_vlm` على معرّف النموذج القابل للنقل في Hub. تتحكم إعدادات التخزين المؤقت القياسية الخاصة بـ Hugging Face، مثل `HF_HOME`، في مكان تخزين ملفات Qwen محليًا دون إضافة مسارات خاصة بالجهاز إلى إعدادات السياسة أو المعالج.

## الضبط الدقيق

قم بضبط النموذج الدقيق انطلاقًا من سياسة LaWAM المُدرَّبة مسبقًا الأصلية:

```bash
lerobot-train \
  --policy.path=jialei02/lawam-pretrain-lerobot \
  --dataset.repo_id=jialei02/libero_merged_no_noops_20hz \
  --dataset.image_transforms.enable=false \
  --rename_map='{"observation.images.wrist_image":"observation.images.image2"}' \
  --policy.action_horizon=8 \
  --policy.n_action_steps=8 \
  --policy.clip_normalized_actions=true \
  --policy.pre_snap_gripper_action=true \
  --policy.binarize_gripper_action=true \
  --policy.repo_id=your_org/lawam_sft
```

يستخدم المُكيّف إحصاءات مجموعة بيانات LeRobot لتطبيع الإجراءات والحالة قبل بناء دفعات تدريب LaWAM. تستخدم إجراءات الوضعية تطبيع الحد الأدنى والحد الأقصى، بينما وصفة LIBERO تُطبّق صراحةً قناة الماسك على قيم ثنائية `0/1` لتتوافق مع عقد تدريب LaWAM الأصلية. وهذا يُخضع كل من اتفاقيات مجموعات البيانات `-1/+1` و`0/1` لأهداف النموذج نفسها. يحتفظ نقطة الفحص المُسبقة التدريب بقيم ما قبل التدريب `action_horizon=24` و`n_action_steps=24`؛ بينما تُعيد وصفة SFT الخاصة بـ LIBERO تعيين كلاهما إلى `8` مع الحفاظ على `chunk_size=50` كطول تسلسل Flow المُملوء. يستخدم التدريب معدل الإطارات في الثانية (FPS) الحالي لمجموعة بيانات LaWAM لتشفير الوقت الطبيعي، ويحافظ المُعالج على تلك التكرارية كبديل للتقييم. يتحكم `policy.num_video_frames` في نافذة إطارات الملاحظة.

لا تستخدم وصفات ما قبل التدريب LaWAM وSFT الخاصة بـ LIBERO المُطلَقة أي زيادة عشوائية للصور. يطبّق معالج السياسة فقط إعادة الحجم الحتمية والتطبيع الخاص بـ ImageNet التي تتطلبها العمودان الفقريان Qwen وLAM. وتبقى تحويلات الصور على مستوى مجموعة البيانات في LeRobot متاحة لوصفات تدريب مصممة بشكل منفصل.

تستخدم نقاط التفتيش LaWAM المُطلقة مساحة فعل/حالة مبطنة بأبعاد 32 داخليًا. حافظ على `policy.flow_action_dim=32` و`policy.flow_state_dim=32` ما لم تكن قد دربت نقطة تفتيش بأبعاد تدفق مختلفة.

## التقييم

قيّم نقطة الفحص SFT الأصلية لـ LIBERO من خلال المُقيِّم القياسي:

```bash
lerobot-eval \
  --policy.path=jialei02/lawam-libero-sft-lerobot \
  --env.type=libero \
  --env.task=libero_object \
  --eval.n_episodes=10
```

تتضمن مستودع Hub إعدادات السياسة وخطوط أنابيب المعالجة المسبقة والمعالجة اللاحقة الكاملة، بما في ذلك متجهات التطبيع ومعالجة ملقط LIBERO.

لتنفيذ اختبار LIBERO قابل للتكرار باستخدام نقطة الفحص SFT الخاصة بـ LIBERO التي تم إصدارها، قيّم جميع الحزم ومعرفات المهام في استدعاء واحد:

```bash
lerobot-eval \
  --policy.path=jialei02/lawam-libero-sft-lerobot \
  --policy.device=cuda \
  --env.type=libero \
  --env.task=libero_spatial,libero_object,libero_goal,libero_10 \
  --env.task_ids='[0,1,2,3,4,5,6,7,8,9]' \
  --eval.n_episodes=50 \
  --output_dir=outputs/lawam_libero
```

أبلغ عن معدلات النجاح عبر جميع المهام العشر في كل مجموعة. استخدم ما لا يقل عن 50 حلقة لكل مهمة عند الإبلاغ عن أرقام المعايير.

نتائج مرجعية لنقطة التفتيش SFT المُطلقة من LIBERO مع 50 حلقة لكل مهمة. تم إنتاج هذه الأرقام باستخدام MuJoCo 3.3.2. كتدقيق للبيئة، تحسنت المهمة 5 في `libero_spatial` من 18/50 نجاحات باستخدام MuJoCo 3.8.1 إلى 47/50 نجاحات باستخدام MuJoCo 3.3.2.

| Suite            | النجاحات | الحلقات | معدل النجاح |
| ---------------- | --------: | -------: | -----------: |
| `libero_spatial` |       492 |      500 |        98.4% |
| `libero_object`  |       498 |      500 |        99.6% |
| `libero_goal`    |       490 |      500 |        98.0% |
| `libero_10`      |       490 |      500 |        98.0% |
| `overall`        |      1970 |     2000 |        98.5% |

## اختيار الكاميرا

تخزّن نقاط التفتيش (checkpoints) الخاصة بـ LaWAM أدوار كاميرا الجسم الرئيسي وكاميرا المعصم بشكل صريح بدلاً من استنتاج الدلالات من أسماء مثل `image2`. عند بناء سياسة LaWAM متعددة الكاميرات جديدة، قم بإعداد كلا الدورين:

```bash
--policy.primary_image_features='["observation.images.front"]' \
--policy.wrist_image_features='["observation.images.wrist"]'
```

`policy.lam_image_feature` يختار الكاميرا الأساسية التي تُستهلك إطاراتها الزمنية بواسطة نموذج الإجراء الكامن. افتراضيًا، تكون الكاميرا الأساسية الأولى المُهيأة، وتُكتب صراحةً عند حفظ إعدادات السياسة.

## حقول وقت التشغيل

حقول السياسة الخاصة بـ LaWAM الشائعة:

| الحقل             | الوصف                                                                |
| ----------------- | -------------------------------------------------------------------------- |
| `base_vlm`        | معرّف نموذج Qwen/Qwen3-VL المحمول من Hub المخزّن في إعدادات السياسة المنشورة. |
| `action_horizon`  | عدد الإجراءات المتوقعة لكل شريحة، حتى `chunk_size`.                 |
| `flow_action_dim` | بعد الفعل الداخلي المُحشُو المستخدم في رأس تدفق LaWAM.              |
| `flow_state_dim`  | بعدد الأبعاد الداخلي المُحشُوّ الذي يستخدمه رأس تدفق LaWAM.               |
| `embodiment_id`   | معرّف تجسيد LaWAM المستخدم عندما لا يوفر مجموعة بيانات LeRobot معرّفًا.    |

## الاستشهاد

```bibtex
@misc{chen2026lawam,
  title = {LaWAM: Latent World Action Models for Efficient Dynamics-Aware Robot Policies},
  author = {Chen, Jialei and Wang, Kai and Chen, Kang and Chen, Shuaihang and Gao, Feng and Tang, Wenhao and Li, Zhiyuan and Liu, Weilin and Yao, Zhuyu and Li, Boxun and Xu, Yuanbo and Yu, Chao},
  journal = {arXiv preprint arXiv:2606.15768},
  year = {2026},
  archiveprefix = {arXiv},
  primaryclass = {cs.RO},
}
```

