Downloads · 30 days
13
39% of all-time downloads
RoboDyna/X-VLA-RoboDyna
X-VLA-RoboDyna is a robotics model from RoboDyna. Use it for the robotics task on the model card, and read the license before you ship it in a product. It is set up for transformers. The card lists the license as apache-2.0.
X-VLA-0.9B fine-tuned on RoboDyna Benchmark v2 — a dual-arm (ur5-wsg) benchmark of dynamic manipulation: moving targets, rolling and falling objects, closing time windows, conveyor belts and distractors.
Downloads · 30 days
13
39% of all-time downloads
All-time downloads
33
Public
Parameters
880M
3.5 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors3.5 GB · 100%
From the Hugging Face model README
X-VLA-0.9B fine-tuned on
RoboDyna Benchmark v2 —
a dual-arm (ur5-wsg) benchmark of dynamic manipulation: moving targets, rolling and
falling objects, closing time windows, conveyor belts and distractors.
Trained on all 4,050 episodes / 35 tasks (1.37M frames, 16.67 Hz, three RGB views).
No rollout evaluation has been run yet — this card reports no success rate. What is verified is training convergence and that the checkpoint loads and is self-contained. Treat it as a trained baseline, not a benchmarked result.
from transformers import AutoModel, AutoProcessor
model = AutoModel.from_pretrained("RoboDyna/X-VLA-RoboDyna", trust_remote_code=True)
processor = AutoProcessor.from_pretrained("RoboDyna/X-VLA-RoboDyna", trust_remote_code=True)
# X-VLA serves over HTTP; see the upstream X-VLA repo for the client side.
model.run(processor, host="0.0.0.0", port=8000)
Pass domain_id = 19 — the soft-prompt slot this model was trained under (see below).
The model emits X-VLA's 20-D ee6d vector, absolute end-effector pose (no deltas),
laid out as:
[0:3] arm0 xyz [3:9] arm0 rot6d [9] arm0 gripper
[10:13] arm1 xyz [13:19] arm1 rot6d [19] arm1 gripper
arm0 = left, arm1 = right. Conventions that must match on the decode side:
c1 = v[0::2], c2 = v[1::2]. Slicing it as v[0:3]/v[3:6] is wrong.observation.endpose
gripper is 1 = open, so it was inverted during training; invert back when replaying
against the dataset. Gripper channels are logits — apply sigmoid (the model's
postprocess does this).observation.endpose are scalar-first (wxyz), per the
SAPIEN/RoboTwin generator (transforms3d.mat2quat). This was confirmed against the
dataset's own recorded wrist-camera extrinsics: for the correct order,
R_cam(t)^T @ R_endpose(t) is constant to 0.013 deg, versus 4.64 deg for scalar-last.The action chunk is 30 steps sampled at the native 16.67 Hz control rate (~1.8 s).
Note the RoboDyna dataset's action column is 14-D joint space; this model does not
use it. X-VLA's EE6DActionSpace hard-codes its channel indices, so joint vectors cannot
be padded into the 20-D slot — the model is trained from observation.endpose instead.
| Base | 2toINF/X-VLA-Pt (0.9B) |
| Hardware | 8 × H200 |
| Global batch | 256 (32/GPU), bf16, DDP |
| Steps | 30,000 (~5 h 45 m) |
| LR | 1e-4, learning_coef 0.1 (VLM + soft prompts at 1e-5) |
| Schedule | 1k freeze + 2k warmup, cosine to 0.1×, grad-clip 1.0 |
| Domain id | 19 — a soft-prompt slot unused by pretraining |
Loss (median per 5k block): 1.466 → 0.258 → 0.182 → 0.134 → 0.110 → 0.114. Final 2k steps: median 0.105. Flat over the last two blocks, i.e. converged within the 30k budget.
The soft-prompt bank moved only at index 19 (drift 1.4e-3); domains 0–18 are bit-identical to the base checkpoint, so pretrained cross-embodiment prompts are uncontaminated.
Includes the trust_remote_code modeling files (modeling_xvla.py, configuration_xvla.py,
transformer.py, action_hub.py, processing_xvla.py, and the Florence-2 pair), so the repo
loads standalone.
@article{zheng2025x,
title = {X-VLA: Soft-Prompted Transformer as Scalable Cross-Embodiment Vision-Language-Action Model},
author = {Zheng, Jinliang and Li, Jianxiong and Wang, Zhihao and Liu, Dongxiu and Kang, Xirui
and Feng, Yuchun and Zheng, Yinan and Zou, Jiayin and Chen, Yilun and Zeng, Jia and others},
journal = {arXiv preprint arXiv:2510.10274},
year = {2025}
}