LeRobot documentation

WALL-OSS

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

WALL-OSS

WALL-OSS est un modèle de fondation open source pour l'intelligence incarnée, proposé par l'équipe XSquare Robot en 2025. L'implémentation LeRobot est adaptée de leur dépôt open source WallX.

Le WALL-OSS de X Square Robot est désormais intégré à l’écosystème LeRobot de Hugging Face. Il s’agit d’un projet collaboratif passionnant entre les équipes LeRobot et X Square Robot. Vous pouvez désormais effectuer l’entraînement postérieur, évaluer et déployer WALL-OSS directement via LeRobot. Avec cela, nous visons à faciliter la personnalisation et le déploiement des modèles de fondation WALL-OSS pour la communauté robotique open source. Lisez et explorez le paper et le code de WALL-OSS.

Aperçu du modèle

L'équipe WALL-OSS développe le modèle de fondation incarné destiné à capturer et à compresser les données les plus précieuses du monde : le flux continu et haute fidélité de l'interaction physique. En créant une boucle de rétroaction directe entre les décisions du modèle et l'expérience vécue du corps, l'émergence d'une intelligence véritablement généralisable est rendue possible — une intelligence qui ne comprend pas seulement le fonctionnement du monde, mais aussi comment agir efficacement au sein de celui-ci.

An overview of WALL-OSS

Sur le plan technique, WALL-OSS introduit une architecture multimodale fortement couplée (structure MoE fortement couplée) qui intègre à la fois des stratégies de modélisation d'actions discrètes et continues. Grâce à un pipeline d'entraînement en deux étapes (Inspiration → Integration), le modèle unifie progressivement le raisonnement sémantique et la génération d'actions haute fréquence. Ses innovations principales incluent :

  • Pré-entraînement multimodal renforcé par la perception incarnée : entraînement à grande échelle sur des données unifiées vision-langage-action pour renforcer la compréhension spatiale, causale et de la manipulation.
  • Chaîne de pensée unifiée multi-niveaux (Uni-CoT) : un cadre différentiable unique qui unifie le raisonnement sur les instructions de haut niveau, la décomposition des sous-tâches et la synthèse d'actions de fine granularité, formant une chaîne continue allant de la « compréhension » à l'« exécution ».
  • Têtes d'action Mixture-of-Experts (MoE) : activation dynamique des experts en fonction de la phase de la tâche et modélisation des actions dans un espace discret ou continu afin de maintenir des a priori VLM stables.
  • Two-stage training paradigm:
    • Étape d'inspiration : Injection de priors d'action discrets pour renforcer la compréhension spatiale et l'alignement sémantique-action.
    • Étape d'intégration : Utilisation du flow matching pour réaliser un contrôle continu haute fréquence.

Prérequis d'installation

  1. Installez LeRobot en suivant notre Guide d'installation.

  2. Installez les dépendances de WallX en exécutant :

    pip install -e ".[wallx]"

Utilisation

Pour utiliser WallX dans LeRobot, spécifiez le type de politique comme suit :

policy.type=wall_x

Génération de texte et contrôle interactif

WALL-OSS expose la génération de texte native via le contrat de politique de Bring your own policy. Le runtime fournit query_kind et le query_text appartenant à l’appelant avant d’exécuter le pipeline d’entrée normal de WALL-OSS :

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 conserve la question en tant que charge utile de l'utilisateur. next_subtask applique la recette de point de contrôle avant ${subtask}. WALL-X remplace directement l'API publique generate_text(processed_batch) pour son expert vision-langage Qwen et signale cette capacité via supports_text_generation().

Le runtime de langage interactif peut générer une sous-tâche puis conditionner la prédiction d’action de WALL-OSS sur celle-ci :

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

Après /start, utilisez /vqa <question> pour du VQA ancré sur l’image ou /autosteer <goal> pour la génération du sous-tâche suivante basée sur une recette. /subtask <text> contourne la génération et envoie directement une instruction à l’inférence d’action.

Entraînement

Pour entraîner WallX, vous pouvez utiliser le script d'entraînement standard de LeRobot avec la configuration appropriée :

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

Entraîner avec des annotations linguistiques

WALL-X utilise sa recette intégrée pour s’entraîner à partir des colonnes de langage facultatives de LeRobot. Définissez recipe_path uniquement pour remplacer cette recette :

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

Les tours d’assistant ciblées reçoivent une entropie croisée de jeton suivant, tandis que les flux de la recette low_level reçoivent une supervision continue de l’action de flux. Une ligne peut recevoir l’un ou l’autre de ces objectifs, ou les deux. Les invites utilisateur, les images, la proprioception, les jetons de requête d’action et le bourrage sont exclus de la perte de texte. Définissez policy.recipe=null pour utiliser le chemin d’entraînement original de WALL-OSS, limité aux actions.

Consultez Colonnes de langue et recettes pour le schéma d'annotation et les recettes disponibles.

Arguments d'entraînement

ArgumentDescription
--dataset.repo_idL'identifiant du dépôt du Hugging Face Hub pour votre jeu de données d'entraînement (par exemple, lerobot/aloha_sim_insertion_human)
--policy.typeSpécifie l'utilisation de l'architecture de politique WallX
--output_dirRépertoire local où les points de contrôle d'entraînement et les journaux seront enregistrés
--job_nameUn identifiant de nom pour cette session d'entraînement (utilisé pour la journalisation/le suivi)
--policy.repo_idID du dépôt Hugging Face Hub où le modèle entraîné sera poussé
--policy.pretrained_name_or_pathChemin vers les poids pré-entraînés de WallX à utiliser pour l'initialisation (le point de contrôle officiel WALL-OSS)
--policy.prediction_modeStratégie de prédiction des actions : diffusion ou fast - diffusion utilise un débruitage itératif pour la génération d'actions, fast utilise la prédiction du jeton suivant à la place
--policy.attn_implementationBackend d'implémentation de l'attention - eager utilise l'attention standard de PyTorch (les alternatives incluent flash_attention_2 ou sdpa)
--stepsNombre total d'étapes d'entraînement à exécuter
--policy.deviceAppareil sur lequel entraîner (cuda pour GPU, cpu pour CPU)
--batch_sizeNombre d'échantillons par lot d'entraînement

L’entraînement du langage utilise policy.text_loss_weight (valeur par défaut 0.01), policy.flow_loss_weight (valeur par défaut 1.0) et policy.tokenizer_max_length (valeur par défaut 768). policy.recipe_path remplace facultativement la recette intégrée.

Licence

Ce modèle est soumis à la licence Apache 2.0, conformément au dépôt WallX d'origine.

Update on GitHub