File size: 7,101 Bytes
017926b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 | # The released CogWAM RoboDojo recipe: multi-layer DINO + event-driven semantic
# memory. The clean current prefix and the future denoising target both
# mean-fuse normalized patch tokens from four DINO depths instead of the last
# layer alone. Both sides move together because they share one world_input
# projection. The 12x10 grids are unchanged, so weight shapes match a
# single-layer run exactly.
#
# Absolute storage locations are supplied by the environment; see
# docs/environment.md. Set COGWAM_RUN_ROOT, COGWAM_BASE_VLM,
# COGWAM_DINO_MODEL and COGWAM_DATA_ROOT before launching.
run_id: cogwam_robodojo_h25_eventmem_dino_multilayer_50k
run_root_dir: ${oc.env:COGWAM_RUN_ROOT}
seed: 42
wandb_project: CogWAM_RoboDojo
is_debug: false
version_id: "0.21"
framework:
name: CogWAM
enable_world_action_mot: true
reproduction_profile: cogwam_robodojo_causal_dino_mot_h25_eventmem_dino_multilayer_50k_v1
qwenvl:
base_vlm: ${oc.env:COGWAM_BASE_VLM}
attn_implementation: sdpa
require_attn_implementation: true
enable_gradient_checkpointing: true
enable_thinking: false
vl_hidden_dim: 2048
truncate_vlm_layers: 0
planner:
num_world_queries: 16
num_action_queries: 25
world_placeholder_token: "<WORLD_PLAN>"
action_placeholder_token: "<ACTION_PLAN>"
text_supervision:
enabled: true
mode: event_driven_memory_ntp
keep_token: "<KEEP>"
update_token: "<UPDATE>"
subtask_field: subtask_text
prompt_template: |-
Task instruction: {instruction}
Semantic Memory: {semantic_memory}
Cached Current Subtask: {cached_current_subtask}
Decide whether the cached subtask is still valid. Reply with <KEEP> only when it remains valid. Otherwise begin with <UPDATE>, then provide only `Memory Add:` and `Current Subtask:`.
update_response_template: |-
{update_token}
Memory Add: {memory_add}
Current Subtask: {subtask_text}
max_new_tokens: 96
do_sample: false
scheduled_sampling:
enabled: true
# p(model semantic state used as physical conditioning), linearly
# interpolated by optimizer step. Sampled text never supervises itself.
points:
- [0, 0.0]
- [30000, 0.0]
- [40000, 0.2]
- [50000, 0.5]
history:
enabled: false
world_action_mot:
architecture: causal_dino_mot
interaction_mode: base
world_attention_mask_mode: first_frame_causal
action_precision_mode: inherit
world_hidden_size: 512
action_hidden_size: 1024
world_ffn_dim: 2048
action_ffn_dim: 4096
num_layers: 30
num_attention_heads: 24
attention_head_dim: 128
layerwise_planner_coupling: false
norm_eps: 1.0e-06
time_frequency_dim: 256
world_grid_height: 12
world_grid_width: 10
max_world_tokens: 120
enable_gradient_checkpointing: true
world_train_shift: 5.0
world_infer_shift: 5.0
world_num_train_timesteps: 1000
action_train_shift: 5.0
action_infer_shift: 5.0
action_num_train_timesteps: 1000
num_inference_timesteps: 20
action_prediction_type: velocity
action_velocity_target: noise_minus_clean
jit_t_eps: 0.05
repeated_diffusion_steps: 1
action_loss_weight: 1.0
world_loss_weight: 1.0
# Semantic objective = 0.005 * (decision CE + UPDATE-body CE).
text_loss_weight: 0.005
dino:
name: dinov3_vitb16
model_size: base
hf_model_id: ${oc.env:COGWAM_DINO_MODEL}
repo_or_dir: facebookresearch/dinov3
weights: ${oc.env:COGWAM_DINO_MODEL}
loader: hf
image_size: [384, 320]
patch_size: 16
embed_dim: 768
stats_path: null
load_live_backbone: true
force_online: true
dino_pool: 2
current_dino_pool: null
dino_layers: [2, 5, 8, 11]
action_model:
action_dim: 14
state_dim: 14
action_horizon: 25
datasets:
vla_data:
dataset_py: jointflow
data_root_dir: ${oc.env:COGWAM_DATA_ROOT}
# Audited v2.1 text dataset: 3500 episodes / 1,859,602 frames.
data_mix: robodojo_v21_language
lerobot_version: v2.1
image_layout: tri_view_composite
composite_source_view_keys: ["video.cam_high", "video.cam_left_wrist", "video.cam_right_wrist"]
composite_view_key: "video.tri_view_composite"
include_state: true
action_type: abs_qpos
action_mode: abs
action_horizon: 25
world_model:
future_stride: 16
future_valid_requires_full_stride: true
decode_future_video: true
online_dino: true
dino_target_latents: false
optional_text_annotations:
enabled: false
require_columns: false
text_annotations:
enabled: true
fields:
subtask_text: subtask_text
completed_subtask_text: complete_text
history:
enabled: false
event_memory:
enabled: true
semantic_offset: -10
replan_interval: 10
replan_phase: 0
normalization: n1
empty_memory: "None."
empty_cached_subtask: "None."
semantic_memory_field: semantic_memory
cached_subtask_field: cached_current_subtask
decision_field: semantic_decision
memory_add_field: memory_add
cache_valid_field: semantic_cache_valid
index_cache_name: semantic_index_v1.npz
expected_phase_update_ratio: 0.064
expected_phase_update_tolerance: 0.005
sampler:
per_device_batch_size: 6
update_per_batch: 2
hard_keep_per_batch: 2
random_keep_per_batch: 2
seed: 42
num_workers: 4
prefetch_factor: 2
pin_memory: true
persistent_workers: false
sequential_step_sampling: false
balance_dataset_weights: false
balance_trajectory_weights: false
per_device_batch_size: 12
load_all_data_for_training: true
obs_image_size: [320, 384]
video_backend: pyav
num_workers: 8
prefetch_factor: 2
pin_memory: true
persistent_workers: false
trainer:
seed_before_model_init: true
expected_global_batch_size: 768
max_train_steps: 50000
num_warmup_steps: 2000
save_interval: 10000
eval_interval: 1000
# External RoboDojo evaluation maintains persistent semantic state. The
# trainer's stateless action-MSE probe is intentionally disabled.
action_eval_enabled: false
world_validation:
enabled: false
pretrained_checkpoint: null
is_resume: false
save_full_training_state: true
learning_rate:
base: 1.0e-05
qwen_vl_interface: 1.0e-05
action_plan_queries: 1.0e-04
world_plan_queries: 1.0e-04
action_model: 1.0e-04
lr_scheduler_type: cosine_with_min_lr
scheduler_specific_kwargs:
min_lr: 5.0e-07
freeze_modules: ""
loss_scale:
vla: 1.0
max_grad_norm: 1.0
weight_decay: 0.0
logging_frequency: 200
log_grad_norms: false
log_global_grad_norm: true
deepspeed_skip_unused_param_anchors: true
gradient_clipping: 1.0
gradient_accumulation_steps: 1
optimizer:
name: AdamW
betas: [0.9, 0.95]
eps: 1.0e-08
weight_decay: 1.0e-08
|