# WALL-OSS

WALL-OSSは、2025年に[XSquare Robot](https://x2robot.com/en/research/68bc2cde8497d7f238dde690)チームによって提案された、エンボディドインテリジェンス向けのオープンソース基盤モデルです。LeRobotの実装は、彼らのオープンソースリポジトリである[WallX](https://github.com/X-Square-Robot/wall-x)に基づいて適応されています。

X Square RobotのWALL-OSSが、Hugging FaceのLeRobotエコシステムに統合されました。これはLeRobotチームとX Square Robotチームによるエキサイティングな共同プロジェクトです。これにより、LeRobotを通じてWALL-OSSのポストトレーニング、評価、デプロイを直接実行できるようになりました。これにより、オープンソースのロボティクスコミュニティがWALL-OSSのファウンデーションモデルをカスタマイズし、デプロイしやすくなることを目指しています。WALL-OSSの[論文](https://arxiv.org/pdf/2509.11766)と[コード](https://github.com/X-Square-Robot/wall-x)を読んで、探求してください。

## モデル概要

WALL-OSSチームは、世界で最も価値のあるデータである、連続的で高忠実度の物理的相互作用のストリームを捉え、圧縮するためのエンボディド・ファウンデーションモデルを構築しています。モデルの意思決定と、身体が実際に経験するフィードバックの間に直接的なループを構築することで、真に汎用化可能な知性の出現を可能にします。それは、世界がどのように機能するかを理解するだけでなく、その中で効果的に行動する方法も理解する知性です。

<img
  src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/lerobot/walloss-lerobot-paper.png"
  alt="An overview of WALL-OSS"
  width="85%"
/>

技術的には、WALL-OSSは、離散型と連続型の両方のアクションモデリング戦略を統合した、密結合のマルチモーダルアーキテクチャ（tightly-coupled MoE構造）を導入しています。2段階のトレーニングパイプライン（Inspiration → Integration）を通じて、モデルは段階的にセマンティック推論と高周波アクション生成を統合します。その核心的な革新点は以下の通りです：

- **エンボディドパーセプション強化型マルチモーダル事前学習**: 統合されたビジョン・言語・アクションデータを用いた大規模なトレーニングにより、空間的・因果的・操作に関する理解を強化します。
- **Unified Cross-Level Chain-of-Thought (Uni-CoT)**: 高レベルの指示推論、サブタスクの分解、そして細粒度のアクション合成を統合する単一の微分可能フレームワークであり、「理解」から「実行」までの連続的なチェーンを形成します。
- **Mixture-of-Experts (MoE) アクションヘッド**: タスクのフェーズに応じてエキスパートを動的にアクティブ化し、アクションを離散空間または連続空間でモデル化することで、VLM の事前分布を安定して維持します。
- **2段階の学習パラダイム**：
  - **インスピレーション段階**: 離散的なアクションの事前分布を注入し、空間理解と意味・アクションの整合性を強化します。
  - **統合ステージ**: フローマッチングを用いて、高周波数の連続制御を実現します。

## インストール要件

1. LeRobotのインストールは、[インストールガイド](./installation)に従って行ってください。
2. 以下のコマンドを実行して、WallXの依存関係をインストールします:

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

## 使用方法

LeRobotでWallXを使用するには、ポリシータイプを以下のように指定します:

```python
policy.type=wall_x
```

### テキスト生成とインタラクティブな制御

WALL-OSSは、[Bring your own policy](./bring_your_own_policies#text-capable-policies)のポリシー契約を通じてネイティブなテキスト生成を公開します。ランタイムは、WALL-OSSの通常の入力パイプラインを実行する前に、`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` は、`${subtask}` の前にチェックポイントレシピを適用します。WALL-X は、Qwen のビジョン言語エキスパートに対してパブリックの `generate_text(processed_batch)` API を直接オーバーライドし、その機能を `supports_text_generation()` 経由で報告します。

インタラクティブな言語ランタイムはサブタスクを生成し、その後にWALL-OSSのアクション予測をそれに条件付けできます。

```bash
lerobot-rollout \
  --strategy.type=base \
  --policy.path=your-org/your-wall-oss-checkpoint \
  --robot.type=your_robot_type \
  --robot.port=/dev/your_robot_port \
  --task="clear the table" \
  --interactive=true
```

`/start` の後、画像を根拠とした VQA には `/vqa <question>` を、レシピに基づく次のサブタスクの生成には `/autosteer <goal>` を使用します。`/subtask <text>` は生成をバイパスし、指示を直接アクション推論に送信します。

## トレーニング

WallXの学習には、適切な設定を指定して標準的なLeRobot学習スクリプトを使用できます。

```bash
lerobot-train \
    --dataset.repo_id=your_dataset \
    --policy.type=wall_x \
    --output_dir=./outputs/wallx_training \
    --job_name=wallx_training \
    --policy.repo_id=your_repo_id \
    --policy.pretrained_name_or_path=x-square-robot/wall-oss-flow \
    --policy.prediction_mode=diffusion \
    --policy.attn_implementation=eager \
    --steps=3000 \
    --policy.device=cuda \
    --batch_size=32
```

### 言語アノテーションで学習

WALL-Xは、組み込みのレシピを使用して、LeRobotの任意の言語カラムから学習します。`recipe_path`を指定するのは、このレシピを置き換える場合のみです。

```bash
lerobot-train \
  --dataset.repo_id=your_org/your_language_annotated_dataset \
  --policy.type=wall_x \
  --policy.pretrained_name_or_path=x-square-robot/wall-oss-flow \
  --policy.text_loss_weight=0.01 \
  --policy.flow_loss_weight=1.0 \
  --policy.device=cuda \
  --batch_size=1 \
  --steps=20000
```

ターゲットされたアシスタントのターンには次トークン交差エントロピーが適用され、`low_level` レシピのストリームには連続的なフローアクションの教師信号が適用されます。各行には、どちらかの目的関数、または両方が適用される場合があります。ユーザーのプロンプト、画像、固有受容、アクションクエリトークン、およびパディングは、テキストの損失から除外されます。`policy.recipe=null` を設定すると、WALL-OSS の元のアクションのみの学習パスが使用されます。

アノテーションスキーマと利用可能なレシピについては、[言語カラムとレシピ](./language_and_recipes)を参照してください。

### トレーニング引数

| 引数                           | 説明                                                                                                                                                   |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--dataset.repo_id`                | 学習データセットの Hugging Face Hub リポジトリ ID（例: `lerobot/aloha_sim_insertion_human`）                                                      |
| `--policy.type`                    | WallXポリシーアーキテクチャの使用を指定します                                                                                                                 |
| `--output_dir`                     | 学習チェックポイントとログが保存されるローカルディレクトリ                                                                                             |
| `--job_name`                       | このトレーニング実行の名前識別子（ログ記録/トラッキングに使用されます）                                                                                            |
| `--policy.repo_id`                 | 学習済みモデルをプッシュする Hugging Face Hub リポジトリ ID                                                                                          |
| `--policy.pretrained_name_or_path` | 初期化に使用する事前学習済みWallX重みのパス（公式WALL-OSSチェックポイント）                                                                        |
| `--policy.prediction_mode`         | アクション予測戦略: `diffusion`または`fast` - `diffusion`はアクション生成に反復的なノイズ除去を使用し、`fast`は代わりに次のトークン予測を使用します |
| `--policy.attn_implementation`     | Attention実装バックエンド - `eager`は標準的なPyTorchのattentionを使用します（代替案として`flash_attention_2`または`sdpa`があります）                               |
| `--steps`                          | 実行するトレーニングステップの総数                                                                                                                         |
| `--policy.device`                  | 学習に使用するデバイス（GPUの場合は`cuda`、CPUの場合は`cpu`）                                                                                                            |
| `--batch_size`                     | トレーニングバッチあたりのサンプル数                                                                                                                          |

Language trainingでは、`policy.text_loss_weight`(デフォルトは`0.01`)、`policy.flow_loss_weight`(デフォルトは`1.0`)、および`policy.tokenizer_max_length`(デフォルトは`768`)を使用します。`policy.recipe_path`は、組み込みのレシピを任意で置き換えます。

## ライセンス

このモデルは、元の[WallXリポジトリ](https://github.com/X-Square-Robot/wall-x)と一貫して、**Apache 2.0 License**に従っています。

