# Wall-OSS-0.5

Wall-OSS-0.5 هو نموذج رؤية ولغة وإجراء بحجم 4B من [XSquare Robot](https://x2robot.com/en/research/68bc2cde8497d7f238dde690). يجمع بين هيكل رؤية ولغة Qwen2.5-VL وخبير إجراء مستمر يعتمد على مطابقة التدفق.

توفر LeRobot نموذج Wall-OSS-0.5 عبر نوع السياسة `wall_oss_05` ونقطة التفتيش [`lerobot/wall-oss-0.5`](https://huggingface.co/lerobot/wall-oss-0.5).

`wall_oss_05` وسياسة `wall_x` الموجودة تستهدف إصدارات مختلفة من WALL. استخدم `wall_oss_05` مع نقطة التفتيش Wall-OSS-0.5.

## نظرة عامة على النموذج

تُشترط عملية توليد الإجراءات في Wall-OSS-0.5 على ملاحظات الكاميرا، وحالة الروبوت، ومهمة بلغة طبيعية. يتنبأ هذا النموذج (Policy) بكتلة من الإجراءات المستمرة باستخدام مطابقة التدفق (Flow Matching). كما يمكن لخبير اللغة والرؤية فيه توليد نصوص لتعليق الصور، والإجابة على الأسئلة البصرية، والتأريض (Grounding)، والمهام الفرعية اللغوية.

يستخدم النموذج المُطلَق:

- تمثيل قياسي للحالة والإجراء بأبعاد 26؛
- قطع إجراءات من 32 خطوة؛
- التطبيع حسب نطاق q01/q99؛
- مُعيّن تدفق من 10 خطوات؛
- Qwen2.5-VL للمدخلات البصرية واللغوية.

يُعدّ نقطة الفحص الأساسية مخصصةً للضبط الدقيق على روبوت الهدف ومجموعة بيانات المهمة قبل النشر.

### ما تغطيه تكامل LeRobot

- إعداد `policy.type=wall_oss_05` القياسي وتحميل نقطة الفحص من Hub.
- معالجة الرؤية واللغة الأصلية لنموذج Qwen2.5-VL وخبراء إجراءات Wall.
- تدريب تدفق التنبؤ المستمر بـ x والعينة باستخدام طريقة أويلر في 10 خطوات.
- حساب التداخل المتقاطع للنص والتدريب الدقيق المشترك للنص والإجراء بناءً على الوصفات.
- توليد نص أصلي لمهام فهم الأسئلة البصرية، والتأريض، والتعليقات التوضيحية، والمهام الفرعية للغة.
- توليد النص مباشرةً من خلال التمرير التفاعلي في LeRobot.
- مدخلات الحالة والإجراء القياسية 26D باستخدام معالجات LeRobot q01/q99.
- الضبط الدقيق باستخدام `lerobot-train` والاستدلال عبر واجهات برمجة التطبيقات القياسية للسياسات.

## متطلبات التثبيت

يتطلب Wall-OSS-0.5 بطاقة رسومات من NVIDIA تدعم CUDA. قم بتثبيت LeRobot مع تبعيات السياسة:

```bash
pip install "lerobot[wall_oss_05]"
```

لنسخة LeRobot المصدر:

```bash
uv sync --extra wall_oss_05
```

يُنفَّذ هذا النموذج (Policy) بشكل أصلي في LeRobot. الاعتماد الوحيد الخاص بالنموذج هو Transformers؛ ولا يلزم وجود نسخة منفصلة من Wall-X. كما تتطلب المعالجة المدعومة بالوصفات (Recipe) إضافة مجموعة البيانات (dataset extra). للاستعلامات اللغوية أو التدريب، ثبّت `uv sync --extra wall_oss_05 --extra training` (يشمل التدريب دعم مجموعة البيانات). اضبط `--policy.recipe=null` للمعالجة الخاصة بالإجراءات فقط دون إضافة مجموعة البيانات.

## نقاط التفتيش

| النوع | نقطة التفتيش LeRobot                                                    | الاستخدام المقصود                             |
| ------- | --------------------------------------------------------------------- | ---------------------------------------- |
| Base 4B | [`lerobot/wall-oss-0.5`](https://huggingface.co/lerobot/wall-oss-0.5) | التدريب الدقيق والنشر القياسي 26D |

يتضمن نقطة التفتيش (checkpoint) تكوين السياسة، ومعالج ومقسّم Qwen، وأوزان النموذج، ومعالجات LeRobot قبل وبعد الحفظ، وإحصاءات التطبيع، وبيانات الوصف الخاصة بالتحويل. إنها نقطة تفتيش أساسية: قم بتدريبها الدقيق على الروبوت والمهمة المستهدفة قبل الإبلاغ عن النتائج على مستوى المهمة.

## الاستخدام

اختر السياسة باستخدام:

```bash
--policy.type=wall_oss_05
```

قم بالمُبادَرة من نقطة التفتيش LeRobot باستخدام:

```bash
--policy.path=lerobot/wall-oss-0.5
```

استخدم `--policy.path=your-org/your-finetuned-checkpoint` عند تقييم أو نشر نقطة تحقق LeRobot محفوظة.

### النص وVQA

يستخدم Wall-OSS-0.5 عقد نص السياسة المشترك. يوفّر وقت التشغيل `query_kind` و`query_text`، ثم يشغّل معالج مدخلات السياسة العادي:

```python
request = {
    **observation,
    "query_kind": "vqa",
    "query_text": "Which object is closest to the right gripper?",
}
processed_batch = preprocessor(request)
answer = policy.generate_text(processed_batch)
```

يحافظ `vqa` على سؤال المُستدعي. يطبّق `next_subtask` الوصفة التي يملكها `WallOSS05Config`. يرث السياسة `generate_text(processed_batch)` ويُلغي `supports_text_generation` و`generate_text`. يستخدم التوليد رأس مفردات Qwen المرتبط في نقطة التفتيش وخبير اللغة والرؤية؛ ولا يستدعي نموذج VLM منفصلاً.

يمكن لبيئة تشغيل اللغة توليد مهمة فرعية ثم اشتراط تنبؤ وول (Wall) بالإجراء عليها:

```bash
lerobot-rollout \
  --policy.path=your-org/your-finetuned-wall-oss-0.5 \
  --policy.device=cuda \
  --task="clear the table" \
  --interactive=true
```

بعد `/start`، استخدم `/vqa <question>` أو `/autosteer <goal>` أو `/subtask <text>`.

يحافظ Wall على قدرات مفيدة في VQA المدمج والتأريض، لكنه مُخصص لملاحظات الروبوتات وليس مقصودًا لاستبدال نموذج VLM عام.

## متطلبات البيانات

يعمل Wall-OSS-0.5 داخليًا على تخطيط قياسي للحالة والإجراء بأبعاد 26D. تُطبَّع ميزات الحالة والإجراء ذات الأبعاد الأضيق باستخدام إحصاءات مجموعة البيانات الأصلية الخاصة بها، ثم تُملأ بالأصفار حتى 26D من أجل النموذج. تُستبعد أبعاد الإجراء المملوءة من خسارة التدريب. تُقتطع المخرجات إلى عرض إجراء مجموعة البيانات قبل إلغاء التطبيع: فحالة بأبعاد 8D مع إجراءات بأبعاد 7D تُرجع إجراءات بأبعاد 7D. يمكن لـ`postprocess_action_dim` تطبيق اقتطاع إضافي للمخرجات. لا يعيد التوسيط تعيين إحداثيات المفاصل أو اتفاقيات المتحكم؛ بل يجب تقديم قيم متوافقة.

قم بتكوين مدخلات الصور باستخدام `camera_key_mapping`. يربط هذا التخصيص كل ميزة صورة في LeRobot بفتحة كاميرا في Wall. يستخدم نقطة التفتيش الافتراضية `face_view` و`right_wrist_view`.

يُمرَّر نص مهمة مجموعة البيانات إلى السياسة بوصفه تعليماتها اللغوية. استخدم أوصافًا متسقة للمهمة عند التسجيل والتدريب والتقييم.

يتم التعامل مع تطبيع الحالة والإجراء q01/q99 بواسطة المعالج المسبق والمعالج اللاحق المحفوظين من LeRobot. أثناء الاستدلال، يتم استعادة الإحصاءات المحفوظة مع نقطة التفتيش. عند الضبط الدقيق باستخدام `lerobot-train`، تحل إحصاءات مجموعة بيانات التدريب محل إحصاءات المعالج المُدرَّب مسبقًا وتُحفظ مع نقطة التفتيش الجديدة.

يستخدم نقطة التفتيش المنشورة قاموس حالة سياسة LeRobot الأصلية وتنسيق المعالج المسبق/اللاحق الحالي. يتم تحميل الأوزان وحفظها عبر كود استمرارية السياسة المشترك، بما في ذلك عمليات الجمع الموزعة وبوابة الكتابة للعملية الرئيسية. يحتفظ ملف الإعداد بمراجع مستقرة لأصل المرمّز (tokenizer) ويمكن تحميله من أي مجلد عمل.

## التدريب

قم بضبط نقطة التفتيش الأساسية باستخدام أمر تدريب LeRobot القياسي:

### مثال على أمر التدريب

```bash
lerobot-train \
  --dataset.repo_id=your-org/your-dataset \
  --policy.path=lerobot/wall-oss-0.5 \
  --policy.repo_id=your-org/wall-oss-0.5-your-task \
  --output_dir=outputs/train/wall_oss_05 \
  --job_name=wall_oss_05_finetune \
  --policy.device=cuda \
  --batch_size=1 \
  --steps=20000
```

ابدأ بحجم دفعة صغير لأن Wall-OSS-0.5 هو نموذج يحتوي على 4 مليارات من المعاملات. قم بزيادة الحجم وفقًا لذاكرة وحدة معالجة الرسوميات المتاحة، أو استخدم تراكم التدرجات من خلال إعدادات التدريب الموزع لديك.

بالنسبة إلى مجموعات البيانات التي تحتوي على أسماء كاميرات مختلفة، قم بربط مفاتيح ميزات هذه المجموعات بمواقع كاميرات Wall. على سبيل المثال، أضف الخيار التالي لـ `top` و `wrist`:

```bash
--policy.camera_key_mapping='{"observation.images.top":"face_view","observation.images.wrist":"right_wrist_view"}'
```

يحلّل الضبط الدقيق أشكال الكاميرا وعرض الحالة/الإجراء من مجموعة البيانات، بما في ذلك عند تحميل نقطة التفتيش الأساسية باستخدام `--policy.path`.

### التدريب مع التعليقات اللغوية

تستخدم الوصفة التي يملكها `WallOSS05Config` أعمدة اللغة الاختيارية في LeRobot افتراضيًا. وتُشرف وصفة المهام الفرعية المشتركة على استجابة المساعد وقطعة الإجراء المستمرة في تسلسل سببي واحد:

```bash
lerobot-train \
  --dataset.repo_id=your-org/your-language-annotated-dataset \
  --policy.path=lerobot/wall-oss-0.5 \
  --policy.use_language_recipe=true \
  --policy.text_loss_weight=0.1 \
  --policy.flow_loss_weight=1.0 \
  --policy.device=cuda \
  --batch_size=1 \
  --steps=20000
```

تحدد تدفقات الوصفة الأهداف التي تُنفَّذ لكل عينة:

- يستقبل دور المساعد المستهدف خسارة الانتروبيا المتقاطعة لنص الرمز التالي؛
- يستقبل الدور `low_level` إشرافًا مستمرًا على تدفق الإجراءات؛ و
- يتلقى وصف `low_level` الذي يتضمن دورًا موجّهًا للمساعد كلا الخسارتين، حيث تُوجَّه رموز الإجراء نحو النص المُشرَف عليه.

يُستخدم حمولة المساعد المستهدفة فقط مع رمز `<|im_end|>` كوسوم للغة. أما تلميحات المستخدم، والتعبئة، والصور، والإحساس الذاتي بالموضع، ورموز استعلام الإجراء المستمر، فتُخفى من تداخل الانتروبيا المتقاطع للنص. وتحتفظ الصفوف التي لا تحمل تعليقات بالتلميح الأصلي الخاص بالإجراء فقط وبالدالة الخاسرة. اضبط `use_language_recipe=false` لتعطيل عرض التعليقات، أو اضبط `recipe=null` لتعطيل كلا معالجي الوصفة. ويتجاوز المسار الصريح `recipe_path` الوصفة المدمجة. يعيد التدريب الدقيق الجديد بناء المعالجات من تلك الوصفة وإحصاءات التدريب؛ بينما تستعيد التدريبات المستأنفة والتدوير المعالجات والإحصاءات المحفوظة في نقطة الحفظ.

راجع [أعمدة اللغة والوصفات](./language_and_recipes) لمعرفة مخطط التسمية وهيكل الوصفة. قد يشير `recipe_path` إلى ملف YAML خارجي صريح للتجاوز؛ ولا يوفر LeRobot ملفات وصفة افتراضية مشتركة.

## معلمات التكوين الرئيسية

| معامل                 | افتراضي                    | الوصف                                                    |
| ------------------------- | -------------------------- | -------------------------------------------------------------- |
| `pretrained_name_or_path` | `lerobot/wall-oss-0.5`     | مصدر أصول مُجزّئ النص ومعالج الصور                     |
| `tokenizer_revision`      | `None`                     | إصدار ثابت اختياري لمُقسِّم الرموز الأساسي، منفصل عن إصدار الأوزان |
| `chunk_size`              | `32`                       | عدد الإجراءات المتوقعة لكل شريحة                          |
| `n_action_steps`          | `32`                       | عدد الإجراءات المتوقعة التي تم تنفيذها قبل إعادة التخطيط         |
| `camera_key_mapping`      | وجهة الوجه وجهة المعصم الأيمن | يربط مفاتيح ميزات الصورة بمواقع الكاميرا في النموذج          |
| `use_language_recipe`     | `true`                     | يتيح الوصفة المخزنة في إعدادات السياسة                 |
| `recipe_path`             | `None`                     | تجاوز صريح اختياري لوصفة خارجية                     |
| `text_loss_weight`        | `0.1`                      | الوزن الخاص بـ cross-entropy لرموز المساعد المُشرَف            |
| `flow_loss_weight`        | `1.0`                      | الوزن لخسارة التدفق المستمر-الإجراء                         |
| `tokenizer_max_length`    | `1000`                     | الحد الأقصى لطول تسلسل الرموز المشترك للرؤية واللغة والإجراء     |
| `device`                  | auto                       | استخدم `cuda` لـ Wall-OSS-0.5                                    |

## التقييم والاستدلال

استخدم نقطة تحقق مُعدّلة مسبقًا مع سير عمل التقييم القياسي لـ LeRobot أو سير عمل نشر الروبوت عن طريق تمرير مستودع Hub أو المجلد المحلي الخاص بها كمسار السياسة.

يولّد Wall-OSS-0.5 مقاطع أفعال متصلة باستخدام عيّّانه التدفّق الخاص به. يدعم نهج العمل الحالي فرع التدفّق المتصل؛ أما فرع الأفعال التوليدية الذاتية (autoregressive) فلم يُعرَض.

يقوم كل مقطع بتشفير صور الكاميرا الخاصة به وتعبئة بادئة الملاحظة/النص مرة واحدة. تعيد الخطوات العشر لأويلر استخدام مفاتيح وقيم البادئة وتفك ترميز رموز الإجراء فقط. يُعاد بناء ذاكرة التخزين المؤقت لكل ملاحظة جديدة.

للمحاكي المدعوم، قدّم نقطة الفحص المُحسَّنة والخيارات الخاصة بالبيئة عبر `lerobot-eval`:

```bash
lerobot-eval \
  --policy.path=your-org/your-finetuned-wall-oss-0.5 \
  --policy.device=cuda \
  --env.type=<environment> \
  --env.task=<task> \
  --eval.batch_size=1 \
  --eval.n_episodes=10
```

لا تقم بتقييم نقطة التفتيش الأساسية وكأنها سياسة مخصصة لمهمة معينة. يجب أن تتطابق التمثيلة القياسية، وإحصاءات التطبيع، وتوزيع المهام مع نقطة التفتيش المُحسَّنة.

## المراجع

- [صفحة مشروع Wall-OSS-0.5](https://x2robot.com/en/research/68bc2cde8497d7f238dde690)
- [نقطة تحقق Wall-OSS-0.5 LeRobot](https://huggingface.co/lerobot/wall-oss-0.5)

## رخصة

Wall-OSS-0.5 و Wall-X متاحة بموجب ترخيص Apache 2.0.

