stage3-ur5-currentview / config.yaml
Ngseo's picture
Stage 3 UR5 current-view β€” final checkpoint epoch_6 (60k steps)
0802db9 verified
Raw
History Blame Contribute Delete
2.99 kB
# 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