Views
No views yet
Qwen/Qwen2.5-VL-3B-Instruct (LoRA rank 32, vision encoder frozen)AttentiveLatentHead (A + B) -> concat -> ResNetActionHead, action L1 loss (no V-JEPA, no augmentation)observation.images.camera1):
checkpoints/0XXXXXX/checkpoint.pt — saved every 10k steps. Each is a torch dict:
policy, latent_head, free_latent_head, action_head, optimizer, agg_stats, args.ur5_qwen25vl_inference.py — self-contained inference (UR5QwenPolicy).ur5_policy_server.py — HTTP policy server (/health, /predict, /reset).train_ur5_b_qwen25vl.py — training script.These checkpoints are not standard LeRobot checkpoints; load them with the includedUR5QwenPolicy, which rebuilds the VLM + external heads. Requires thelerobotfork withpolicies/qwen25vl_acton the path (PYTHONPATH=lerobot/src).
1import numpy as np
2from ur5_qwen25vl_inference import UR5QwenPolicy
3
4pol = UR5QwenPolicy("checkpoints/060000/checkpoint.pt", device="cuda")
5rgb = np.zeros((480, 640, 3), np.uint8) # HxWx3 uint8, RGB (task-appropriate camera)
6action = pol.select_action(rgb, task="Point at the red cup") # (7,) joint targets + gripper
7# select_action serves one action per call from an internal 60-step queue;
8# call pol.reset() at the start of each episode.1CUDA_VISIBLE_DEVICES=0 PYTHONPATH=lerobot/src python ur5_policy_server.py \
2 --checkpoint checkpoints/060000/checkpoint.pt --host 0.0.0.0 --port 8000 \
3 --task "Point at the red cup"GET /health -> policy metadata (cameras, action_dim, per-task camera map).POST /predict {"images": {"camera_1": "<base64 JPEG>"}, "task": "..."} -> {"action": [7], "latency_ms": ...}.POST /reset -> clears the action queue (call at episode start).POLICY_SERVER_API.md. State-free: state is accepted but ignored.
The model is language-conditioned and per-task single-camera — feed the camera the task was
trained on (see /health.task_camera).