# Wall-OSS-0.5

Wall-OSS-0.5, [XSquare Robot](https://x2robot.com/en/research/68bc2cde8497d7f238dde690) tarafından geliştirilen 4B görme-dil-aksiyon modelidir. Qwen2.5-VL görme-dil omurgasını, sürekli akış eşleştirme (flow-matching) aksiyon uzmanıyla birleştirir.

LeRobot, Wall-OSS-0.5'i `wall_oss_05` politika türü ve [`lerobot/wall-oss-0.5`](https://huggingface.co/lerobot/wall-oss-0.5) kontrol noktası aracılığıyla sağlar.

`wall_oss_05` ve mevcut `wall_x` politikası farklı WALL sürümlerini hedefler. Wall-OSS-0.5 kontrol noktasıyla `wall_oss_05` kullanın.

## Model Genel Bakış

Wall-OSS-0.5, eylem üretimini kamera gözlemlerine, robot durumuna ve doğal dilde ifade edilen bir göreve koşullandırır. Politika, akış eşleştirmesi (flow matching) ile sürekli eylemlerin bir dilimini tahmin eder. Görsel-dil uzmanı (vision-language expert), ayrıca başlıklandırma (captioning), görsel soru-cevap, yerelleştirme (grounding) ve dil alt görevleri için metin üretebilir.

Yayınlanan model şunları kullanır:

- 26 boyutlu kanonik durum ve eylem temsili;
- 32 adımlık eylem parçaları;
- q01/q99 aralığı normalizasyonu;
- 10 adımlı bir akış örnekleyici;
- Görsel ve dil girdileri için Qwen2.5-VL.

Temel kontrol noktası, dağıtım öncesinde hedef robot ve görev veri seti üzerinde ince ayar yapmak için tasarlanmıştır.

### LeRobot Entegrasyonunun Kapsamı

- Standart `policy.type=wall_oss_05` yapılandırması ve Hub kontrol noktası yükleme.
- Yerel Qwen2.5-VL görme-dil işleme ve Wall eylem uzmanları.
- Sürekli x-tahmin akış eğitimi ve 10 adımlı Euler örneklemesi.
- Tarife dayalı metin çapraz entropisi ve ortak metin/aksiyon ince ayarı.
- VQA, yerelleştirme, altyazı ve dil alt görevleri için yerel metin üretimi.
- LeRobot'un etkileşimli dağıtımı (rollout) aracılığıyla doğrudan metin üretimi.
- LeRobot q01/q99 işlemcilerini kullanarak 26D durum ve eylem girdilerini standart hale getirin.
- `lerobot-train` ile ince ayar ve standart politika API'leri üzerinden çıkarım.

## Kurulum Gereksinimleri

Wall-OSS-0.5, CUDA destekli bir NVIDIA GPU gerektirir. LeRobot'u politika bağımlılıklarıyla yükleyin:

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

LeRobot kaynak kodu denetimi için:

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

Politika, LeRobot içinde yerel olarak uygulanmıştır. Tek politika özel bağımlılığı Transformers'tır; ayrı bir Wall-X kopyası gerekmez. Tarif destekli işleme ayrıca dataset ekini gerektirir. Dil sorguları veya eğitim için `uv sync --extra wall_oss_05 --extra training` komutunu çalıştırın (eğitim, dataset desteğini içerir). Dataset ekini kullanmadan yalnızca eylem işleme için `--policy.recipe=null` değerini ayarlayın.

## Kontrol Noktaları

| Varyant | LeRobot kontrol noktası                                                    | Kullanım amacı                             |
| ------- | --------------------------------------------------------------------- | ---------------------------------------- |
| Base 4B | [`lerobot/wall-oss-0.5`](https://huggingface.co/lerobot/wall-oss-0.5) | Kanonik 26D ince ayarı ve dağıtımı |

Kontrol noktası, politika yapılandırmasını, Qwen işlemcisini ve belirteçleyicisini, model ağırlıklarını, kaydedilmiş LeRobot ön/son işlemcilerini, normalizasyon istatistiklerini ve dönüştürme meta verilerini içerir. Bu bir temel kontrol noktasıdır: görev düzeyinde sonuçları raporlamadan önce, hedef robot ve görev üzerinde ince ayar yapın.

## Kullanım

Şu politikayı seçin:

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

LeRobot kontrol noktasından şu komutla başlatın:

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

Kaydedilmiş bir LeRobot kontrol noktasını değerlendirirken veya dağıtırken `--policy.path=your-org/your-finetuned-checkpoint` kullanın.

### Metin ve VQA

Wall-OSS-0.5, paylaşılan politika metni sözleşmesini kullanır. Çalışma zamanı `query_kind` ve `query_text` değerlerini sağlar, ardından normal politika girdi işleyicisini çalıştırır:

```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` çağıranın sorusunu korur. `next_subtask`, `WallOSS05Config`'e ait olan tarifi uygular. Politika, `generate_text(processed_batch)` metodunu devralır ve `supports_text_generation` ile `generate_text` metodlarını yeniden tanımlar. Üretim, kontrol noktasının bağlı Qwen sözlük başlığını ve görsel-dil uzmanını kullanır; ayrı bir VLM çağrısı yapılmaz.

Dil çalışma zamanı bir alt görev oluşturabilir ve ardından Wall'ın eylem tahminini buna koşullandırabilir:

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

`/start` komutundan sonra `/vqa <question>`, `/autosteer <goal>` veya `/subtask <text>` kullanın.

Wall, faydalı gömülü VQA ve yerelleştirme yeteneklerini korur; ancak robot gözlemleri için özelleştirilmiştir ve genel amaçlı bir VLM'nin yerini alması amaçlanmamaktadır.

## Veri Gereksinimleri

Wall-OSS-0.5, içsel olarak standart bir 26D durum ve eylem düzeninde çalışır. Daha dar durum ve eylem özellikleri, yerel veri seti istatistikleriyle normalize edilir ve ardından model için 26D'ye sıfır dolgusuyla genişletilir. Dolgulu eylem boyutları eğitim kaybından hariç tutulur. Çıktılar, normalizasyonun kaldırılmasından önce veri setinin eylem genişliğine kırpılır: 8D durum ve 7D eylemler, 7D eylemler döndürür. `postprocess_action_dim` ek bir çıktı kırpma uygulayabilir. Dolgu, eklem koordinatlarını veya denetleyici sözleşmelerini yeniden eşlemez; uyumlu değerler sağlayın.

Görsel girdileri `camera_key_mapping` ile yapılandırın. Eşleme, her LeRobot görsel özelliğini bir Wall kamera yuvasıyla ilişkilendirir. Varsayılan checkpoint `face_view` ve `right_wrist_view` kullanır.

Veri seti görev dizisi, dil talimatı olarak politika iletilir. Kayıt, eğitim ve değerlendirme sırasında tutarlı görev açıklamaları kullanın.

Durum ve eylem q01/q99 normalizasyonu, kaydedilen LeRobot ön işleyici ve son işleyici tarafından yönetilir. Çıkarım, checkpoint ile kaydedilen istatistikleri geri yükler. `lerobot-train` ile ince ayar yapıldığında, eğitim veri seti istatistikleri ön eğitilmiş işleyici istatistiklerinin yerini alır ve yeni checkpoint ile birlikte kaydedilir.

Yayınlanan checkpoint, yerel LeRobot policy state sözlüğünü ve güncel ön/son işlemci biçimini kullanır. Ağırlıklar, dağıtık toplama işlemlerini ve ana süreç yazma kapısını içeren paylaşılan policy kalıcılık kodu üzerinden yüklenir ve kaydedilir. Yapılandırma, kararlı bir tokenizer varlık referansını korur ve herhangi bir çalışma dizininden yüklenebilir.

## Eğitim

Standart LeRobot eğitim komutuyla temel kontrol noktasını ince ayarlayın:

### Eğitim Komutu Örneği

```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, 4B parametreli bir model olduğu için küçük bir batch size ile başlayın. Kullanılabilir GPU belleğine göre artırın veya dağıtık eğitim yapılandırmanız aracılığıyla gradient accumulation kullanın.

Farklı kamera adlarına sahip veri setleri için, özellik anahtarlarını Wall kamera yuvalarına eşleyin. Örneğin, `top` ve `wrist` için aşağıdaki seçeneği ekleyin:

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

İnce ayar, temel kontrol noktasını `--policy.path` ile yüklerken dahil olmak üzere, kamera şekillerini ve durum/aksiyon genişliklerini veri setinden çözer.

### Dil açıklamalarıyla eğitin

`WallOSS05Config` tarafından sahip olunan tarif, varsayılan olarak LeRobot'un isteğe bağlı dil sütunlarını kullanır. Ek alt görev tarifi, asistan yanıtını ve sürekli eylem parçasını tek bir nedensel dizide denetler:

```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
```

Tarif akışları, her örnek için hangi hedeflerin çalıştırılacağını belirler:

- hedefli bir asistan turu, sonraki token metin çapraz entropisini alır;
- a `low_level` dönüşü sürekli akış-aksiyon denetimi alır; ve
- a `low_level` tarifi, hedeflenmiş bir asistan turu içerdiğinde, her iki kaybı da alır; eylem jetonları denetimli metne dikkat eder.

Yalnızca hedeflenen asistan yükü ve `<|im_end|>` token'ı dil etiketleri olarak kullanılır. Kullanıcı istemleri, dolgu, görüntüler, propriosepsiyon ve sürekli eylem-sorgu token'ları metin çapraz entropisinden maskelenir. Anotasyonu olmayan satırlar, orijinal yalnızca eylem içeren istem ve kaybı korur. Anotasyon işleme devre dışı bırakmak için `use_language_recipe=false` değerini ayarlayın veya her iki işleme oluşturucuyu da devre dışı bırakmak için `recipe=null` değerini ayarlayın. Açıkça belirtilen bir `recipe_path`, yerleşik işleme oluşturucuyu geçersiz kılar. Yeni ince ayar, işlemcileri bu işleme oluşturucudan ve eğitim istatistiklerinden yeniden oluşturur; devam eden eğitim ve dağıtım ise kontrol noktasında kaydedilen işlemcileri ve istatistikleri geri yükler.

Annotasyon şeması ve reçete yapısı için [Dil sütunları ve reçeteler](./language_and_recipes) bölümüne bakın. `recipe_path`, açık bir harici YAML geçersiz kılma dosyasına işaret edebilir; LeRobot ortak varsayılan reçete dosyaları sağlamaz.

## Temel Yapılandırma Parametreleri

| Parametre                 | Varsayılan                    | Açıklama                                                    |
| ------------------------- | -------------------------- | -------------------------------------------------------------- |
| `pretrained_name_or_path` | `lerobot/wall-oss-0.5`     | Tokenizer ve image-processor varlık kaynağı                     |
| `tokenizer_revision`      | `None`                     | Ağırlık revizyonundan ayrı, isteğe bağlı temel belirleyici sabitleme |
| `chunk_size`              | `32`                       | Her parça için tahmin edilen eylem sayısı                          |
| `n_action_steps`          | `32`                       | Yeniden planlamadan önce yürütülen tahmini eylem sayısı         |
| `camera_key_mapping`      | yüz ve sağ bilek görünümleri | Görüntü özellik anahtarlarını model kamera yuvalarıyla ilişkilendirir          |
| `use_language_recipe`     | `true`                     | Yapılandırma politikasında saklanan tarifi etkinleştirir                 |
| `recipe_path`             | `None`                     | İsteğe bağlı açık dış tarif geçersiz kılma                     |
| `text_loss_weight`        | `0.1`                      | Gözetimli asistan-jetonu çapraz entropisi için ağırlık            |
| `flow_loss_weight`        | `1.0`                      | Sürekli akış-aksiyon kaybı için ağırlık                         |
| `tokenizer_max_length`    | `1000`                     | Maksimum ortak görü-dil-aksiyon belirteç dizisi uzunluğu     |
| `device`                  | auto                       | Wall-OSS-0.5 için `cuda` kullanın                                    |

## Değerlendirme ve Çıkarım

Standart LeRobot değerlendirme veya robot rollout iş akışlarında, ince ayarlanmış bir kontrol noktasını kullanmak için Hub deposunu veya yerel dizinini politika yolu olarak iletin.

Wall-OSS-0.5, akış örnekleyicisiyle sürekli eylem parçacıkları üretir. Güncel politika sürekli akış dalını destekler; otoregresif eylem dalı dışa açılmamıştır.

Her parça, kamera görüntülerini kodlar ve gözlem/metin önekini bir kez önceden doldurur. On Euler adımı, önek anahtarlarını ve değerlerini yeniden kullanır ve yalnızca eylem jetonlarını çözer. Önbellek, her yeni gözlem için yeniden oluşturulur.

Desteklenen bir simülatör için, ince ayarlanmış kontrol noktasını ve ortamla ilgili seçenekleri `lerobot-eval` üzerinden sağlayın:

```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
```

Taban kontrol noktasını, görev-özel bir politika gibi değerlendirme. Kanonik temsil, normalizasyon istatistikleri ve görev dağılımı, ince ayarlanmış kontrol noktasıyla eşleşmelidir.

## Referanslar

- [Wall-OSS-0.5 proje sayfası](https://x2robot.com/en/research/68bc2cde8497d7f238dde690)
- [Wall-OSS-0.5 LeRobot kontrol noktası](https://huggingface.co/lerobot/wall-oss-0.5)

## Lisans

Wall-OSS-0.5 ve Wall-X, Apache 2.0 Lisansı altında yayınlanmıştır.

