Instructions to use Hoshipu/xvla-v20-task0-mp-radio-lr1e4-rw with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Hoshipu/xvla-v20-task0-mp-radio-lr1e4-rw with Transformers:
# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("Hoshipu/xvla-v20-task0-mp-radio-lr1e4-rw", device_map="auto") - Notebooks
- Google Colab
- Kaggle
X-VLA v20 โ BEHAVIOR-1K Task 0 (Turn on Radio), Retrain with Correct Skill Weights
Fine-tune of 2toINF/X-VLA-Pt on a single BEHAVIOR-1K task (turning on the radio receiver), using the v20 architecture from markli1hoshipu/behavior1k-xvla @ v20.
What's different vs Hoshipu/xvla-v20-task0-mp-radio
The earlier model used the global 50-task SKILL_CLASS_WEIGHTS (sqrt-inverse-frequency across all 34 BEHAVIOR-1K skills). For this single-task dataset the distribution is very different, and the global weights silently suppressed the pick up from skill prediction at inference: gradients pulled the classifier toward press (global weight 2.26) far harder than toward pick up from (global weight 0.10), even though "pick up from" is 35.9% of frames in radio data.
Fix: recomputed the weights from this dataset's actual 4-skill distribution.
| Skill | global weight (old) | task-0 weight (new) | ฮ |
|---|---|---|---|
| move to | 0.086 | 0.538 | 6ร |
| pick up from | 0.102 | 0.601 | 6ร |
| place on | 0.214 | 1.957 | 9ร |
| press | 2.256 | 0.904 | 0.4ร |
Recipe: behavior1k_training/compute_skill_weights.py (added in v20) โ generates a JSON consumable via continue_train.py --skill_weights_json โฆ.
Training
| Setting | Value |
|---|---|
| Base model | 2toINF/X-VLA-Pt |
| Dataset | Hoshipu/behavior-1k-mp-collected-turning-on-radio (success, task 0) |
| Trainable episodes | 1354 |
| Total frames | 2,845,413 |
| GPUs | 4 ร NVIDIA H200 |
| Per-GPU batch | 32 |
| Effective batch | 128 |
| Precision | bf16 |
| LR (core) | 1e-4, cosine decay to 1e-5 |
| LR (VLM, soft prompts) | 0.1 ร LR |
| Warmup | 2000 steps |
| Freeze schedule | VLM + transformer core frozen for first 1000 steps (only soft prompts + action heads train) |
| Iterations | 60,000 |
| Optimizer | AdamW, betas=(0.9, 0.95), wd=0.0, grad-clip 1.0 |
| Skill weights | recomputed from MP-radio's 4-skill distribution (see above) |
Loss trajectory (selected steps)
| Step | total | joints | skill_cls | progress |
|---|---|---|---|---|
| 0 | 15.67 | 15.11 | 0.545 | 0.006 |
| 1000 | 0.521 | 0.509 | 0.005 | 0.007 |
| 5000 | 0.126 | 0.120 | 0.001 | 0.006 |
| 10000 | 0.028 | 0.024 | 0.000 | 0.004 |
| 20000 | 0.029 | 0.026 | 0.000 | 0.003 |
| 30000 | 0.032 | 0.029 | 0.000 | 0.003 |
| 40000 | 0.024 | 0.023 | 0.000 | 0.001 |
| 50000 | 0.013 | 0.012 | 0.000 | 0.002 |
| 59980 | 0.014 | 0.011 | 0.000 | 0.003 |
Architecture (v20)
- Additive per-task + per-skill soft prompts (
task_prompt_hub[task_id] + skill_prompt_hub[skill_id]), 32 tokens ร 1024 dim each, zero-initialized - Skill-conditioned progress head
- Skill classifier head on pooled VLM features with dataset-specific sqrt-inv-freq weighted CE (ฮป=0.1)
- Skill-enriched language instructions at training, e.g.
"Turn on the radio receiver. Current: move to radio." - 23-D action space for R1Pro (3 base + 4 trunk + 7 arm-L + 1 grip-L + 7 arm-R + 1 grip-R), 30-step horizon, 3 RGB cameras (head + L/R wrist)
Usage
from transformers import AutoModel, AutoConfig
REPO = "Hoshipu/xvla-v20-task0-mp-radio-lr1e4-rw"
CKPT = "ckpt-60000"
config = AutoConfig.from_pretrained(REPO, subfolder=CKPT, trust_remote_code=True)
model = AutoModel.from_pretrained(REPO, subfolder=CKPT, trust_remote_code=True)
Or deploy via the WebSocket server in the repo:
git clone -b v20 https://github.com/markli1hoshipu/behavior1k-xvla.git
cd behavior1k-xvla && bash setup.sh
huggingface-cli download Hoshipu/xvla-v20-task0-mp-radio-lr1e4-rw \
--include "ckpt-60000/*" --local-dir ./xvla
cd behavior1k_training
python deploy_b1k.py --model_path ../xvla/ckpt-60000 --port 8000
Files (under ckpt-60000/)
model.safetensorsโ final 60k-step weights (3.5 GB, bf16)config.json,preprocessor_config.json,tokenizer*,vocab.json,merges.txtmodeling_xvla.py,configuration_xvla.py,transformer.pyโ patched v20 modulesmodeling_florence2.py,configuration_florence2.py,action_hub.py,processing_xvla.pyโ unchanged from base