Views
No views yet
| Property | Value |
|---|---|
| Data | RoboTwin 2.0: 50 tasks × 550 episodes (50 clean + 500 randomized) |
| Initialization | tencent/Hy-Embodied-0.5-VLA-UMI |
| Objective | Conditional flow matching |
| Global batch size | 128 |
| Learning rate | 5e-5 (warmup 1K → cosine decay to 5e-6 over 150K) |
| Optimizer | AdamW, bfloat16 mixed precision |
| Hardware | 32 GPUs (4 nodes × 8) |
| Setting | Success Rate |
|---|---|
| Clean | 90.9% |
| Randomized | 90.1% |
tencent/Hy-Embodied-0.5-VLA-RoboTwin/
├── model.safetensors # Model weights
├── config.json # HyVLA configuration
├── tokenizer.json # Tokenizer for the VLM backbone
├── tokenizer_config.json
├── special_tokens_map.json
├── chat_template.jinja # Chat template for instruction formatting
├── preprocessor_config.json # Image preprocessing config
├── norm_stats.pkl # Pre-computed normalization statistics
└── LICENSE1import torch
2from huggingface_hub import snapshot_download
3from hy_vla import HyVLA, HyVLAConfig
4
5ckpt = snapshot_download("tencent/Hy-Embodied-0.5-VLA-RoboTwin")
6
7config = HyVLAConfig.from_pretrained(ckpt)
8policy = HyVLA.from_pretrained(ckpt, config=config)
9policy.enable_video_encoder_if_needed()
10policy = policy.to(device="cuda", dtype=torch.bfloat16).eval()
11
12# (B, K, C, H, W); K=6 history slots
13img = torch.zeros(1, 6, 3, 224, 224, device="cuda", dtype=torch.bfloat16)
14# Normalized dual-arm EEF: [xyz(3) + rot6d(6) + gripper(1)] * 2
15state = torch.zeros((1, config.max_state_dim), device="cuda", dtype=torch.bfloat16)
16batch = {
17 "observation.images.top_head": img,
18 "observation.images.hand_left": img,
19 "observation.images.hand_right": img,
20 "observation.state": state,
21 "task": ["pick up the bottle"],
22}
23
24with torch.no_grad():
25 actions = policy.forward_evaluate(batch)["pred"]
26 actions = actions[..., : config.action_feature.shape[0]]
27print(actions.shape)1export ROBOTWIN_DIR=/path/to/RoboTwin
2export CKPT_PATH=tencent/Hy-Embodied-0.5-VLA-RoboTwin
3
4# Quick regression (6 tasks × 10 rollouts)
5bash scripts/eval_robotwin_test.sh
6
7# Full sweep (50 tasks × 100 rollouts, 8 GPUs)
8bash scripts/eval_robotwin_full.shNote: The eval scripts automatically symlinkHy-VLA/robotwin_eval/→RoboTwin/policy/hy_vla, so that RoboTwin'seval_policy.pycan discover the Hy-VLA policy adapter without any manual configuration.
norm_stats.pkl from the RoboTwin 2.0 training data. For fine-tuning on new robot platforms, regenerate using:1python scripts/compute_norm_hdf5.py \
2 --csv /path/to/episodes.csv \
3 --hdf5-dir /path/to/hdf5 \
4 --output norm_stats.pkl1@article{zhang2026hy,
2 title={Hy-Embodied-0.5-VLA: From Vision-Language-Action Models to a Real-World Robot Learning Stack},
3 author={Zhang, He and Xiang, Lingzhu and Lin, Haitao and Huang, Zeyu and Wang, Minghui and Zhong, Dingyan and Dong, Yubo and Wu, Yihao and Rao, Yongming and Zhang, Dongsheng and others},
4 journal={arXiv preprint arXiv:2606.14409},
5 year={2026}
6}