# @package _global_ # FlashWAM (M1_FusedKV_RopeFixed) FROM SCRATCH on fruit_pick (100 demos, the # entire dataset -- no val split, see fruit_pick_2cam.yaml). resume: null # (Wan2.2 base video expert + random 1-layer action expert). User decision # 2026-08-09: 2 GPUs (not George's pcbnew100 4-GPU scratch pattern) x # batch_size 8 x grad_accum 2 = global batch 32 -- matches the ORIGINAL # place_cube_flashwam_scratch.yaml recipe shape, not pcbnew100's 4x8x1. # 30 epochs, no validation. # # save_every below is a PLACEHOLDER (2445, pcbnew100's value) -- the # launching sbatch (slurm/train_fruit_pick_flashwam_scratch.sbatch) computes # the real value from data/fruit_pick/meta/info.json's total_frames at # submit time and passes it as a CLI override, since fruit_pick's actual # frame count isn't known until the data lands. Don't trust this value if # running run_one.sh directly without that override. defaults: - override /data: fruit_pick_2cam - override /model: lift_flashwam_m1_fusedkv_ropefixed - _self_ # dataloading batch_size: 8 # 2 GPUs x 8 x accum 2 = global 32 num_workers: 12 # scheduler lr_scheduler_type: "cosine" learning_rate: 1e-4 num_epochs: 30 max_steps: null log_every: 10 save_every: 2445 # PLACEHOLDER -- overridden at launch, see header eval_every: 0 # training gradient_accumulation_steps: 2 weight_decay: 1e-2 resume: null # No model.proprio_dim override needed: fruit_pick's state was rewritten to # the standard 8-dim eef_pos+axisangle+gripper convention (see # fruit_pick_2cam.yaml header + fix_fruit_pick_state_schema.py), matching # lift_flashwam_m1_fusedkv_ropefixed.yaml's hardcoded proprio_dim: 8 as-is.