Instructions to use Ngseo/stage3-ur5-currentview with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LeRobot
How to use Ngseo/stage3-ur5-currentview with LeRobot:
- Notebooks
- Google Colab
- Kaggle
| # Stage 3 β UR5 teleop, CURRENT-VIEW variant (GPU 0). | |
| # Identical to stage3-ur5-qwen25vl-actheavy.yaml except BOTH V-JEPA branches | |
| # read the CURRENT view (context frame repeated to fill the 8-frame clip) | |
| # instead of the future frames. The objective keeps its full shape β align z_a | |
| # to the stage-1 task space, decorrelate z_b from the stage-1 domain space β | |
| # but no future frame enters it anywhere. | |
| # | |
| # loss = 1.0*L1(action) | |
| # + 0.02*InfoNCE(z_a, z_task_CURRENT) | |
| # + 0.002*SIGReg([z_domain_CURRENT ; z_b]) | |
| # | |
| # Pairs with act-heavy, which is the same objective computed on future frames. | |
| # The two isolate one question: does the V-JEPA target have to look AHEAD, or | |
| # is shaping the representation against the current frame enough? | |
| data_root: /data3/ngseo/lerobot/ur5_teleop_multitask | |
| inmem_frame_dir: /data3/ngseo/cache/frames_ur5_teleop | |
| vjepa_cache_dir: null # null -> run V-JEPA online every step | |
| cams: cam0,cam1,cam2 | |
| # Stage 1 frozen target encoder (online mode) | |
| vjepa_checkpoint: /data3/ngseo/experiments/disentangle-stage1/hf-Ngseo-stage1/e4.pt | |
| vjepa_arch: vit_large | |
| vjepa_img_size: 256 | |
| vjepa_pooler_depth: 2 | |
| vjepa_num_queries: 8 | |
| vjepa_mlp_proj: true | |
| vjepa_lora_rank: 32 | |
| vjepa_lora_alpha: 32 | |
| vjepa_lora_dropout: 0.05 | |
| aug_future: true # independent aug on future frames (online only) | |
| vjepa_task_input: current # task branch sees the current view, not the future | |
| vjepa_domain_input: current # domain branch too β nothing in the loss looks ahead | |
| # Must match the caches | |
| chunk_size: 30 # 1.0 s at 30 fps | |
| num_future_frames: 8 | |
| future_stride: 4 # 8x4 = 32 frames = 1.07 s lookahead | |
| # Backbone | |
| vlm_model: Qwen/Qwen2.5-VL-3B-Instruct | |
| image_size: 224 | |
| pooling_type: last | |
| lora_rank: 32 | |
| # Qwen2.5-VL splits attention differently per tower: the LLM has q_proj/v_proj, | |
| # the vision tower has a single fused qkv. Listing all three puts LoRA on BOTH | |
| # (LLM 7.37M + vision 5.24M). Drop `qkv` and the vision encoder trains nothing. | |
| lora_target_modules: q_proj,v_proj,qkv | |
| # Heads (match stage1 e4.pt: proj_dim 4096, 8 queries, depth 2) | |
| stage2_proj_dim: 4096 | |
| stage2_pooler_num_queries: 8 | |
| stage2_pooler_depth: 2 | |
| stage2_pooler_num_heads: 16 | |
| stage2_action_head_hidden_dim: 2048 | |
| stage2_action_head_num_blocks: 2 | |
| # Loss | |
| lambda_action: 1.0 | |
| latent_loss_type: none # InfoNCE carries the alignment; no L1/cosine term | |
| latent_infonce_weight: 0.02 | |
| latent_infonce_temperature: 0.1 | |
| latent_infonce_negatives: teacher | |
| dual_head: true | |
| sigreg_weight: 0.002 | |
| # Inputs | |
| use_state: true # state[t] 1 frame in; the 30-step chunk still has to be predicted | |
| no_aug: false | |
| # Training | |
| batch_size: 32 # throughput is flat vs bs; 31 InfoNCE negatives per anchor | |
| lr: 1.0e-4 | |
| steps_per_epoch: 10000 | |
| num_epochs: 6 # 60k steps = 1.92M samples = 15 passes over the data | |
| num_workers: 10 | |
| seed: 42 | |
| log_freq: 50 | |
| lr_scaling_mode: none | |
| output_dir: /data3/ngseo/experiments/stage3_ur5_qwen25vl_taskcurrent | |
| resume_checkpoint: null | |