serialexperimentsleon commited on
Commit
fcbd48c
·
verified ·
1 Parent(s): f01853d

Add files using upload-large-folder tool

Browse files
Files changed (33) hide show
  1. .gitattributes +16 -0
  2. 0e7f0awm/episode_rosbags/episode_1_2025-01-21-21-26-32.rrd +3 -0
  3. 0e7f0awm/episode_rosbags/episode_2_2025-01-21-21-27-19.rrd +3 -0
  4. 0e7f0awm/episode_rosbags/episode_3_2025-01-21-21-28-12.rrd +3 -0
  5. bdmq8qsu/.hydra/config.yaml +352 -0
  6. bdmq8qsu/.hydra/hydra.yaml +169 -0
  7. bdmq8qsu/.hydra/overrides.yaml +3 -0
  8. bdmq8qsu/eval_policy.log +15 -0
  9. nf7i3zuf/.hydra/config.yaml +352 -0
  10. nf7i3zuf/.hydra/hydra.yaml +169 -0
  11. nf7i3zuf/.hydra/overrides.yaml +3 -0
  12. nf7i3zuf/episode_rosbags/color_K.npy +3 -0
  13. nf7i3zuf/episode_rosbags/episode_0_2025-01-21-21-45-28.bag +3 -0
  14. nf7i3zuf/episode_rosbags/episode_2_2025-01-21-21-47-06.bag +3 -0
  15. nf7i3zuf/episode_rosbags/episode_4_2025-01-21-21-48-53.bag +3 -0
  16. nf7i3zuf/eval_video/0_eval.mp4 +3 -0
  17. nf7i3zuf/eval_video/1_eval.mp4 +3 -0
  18. nf7i3zuf/eval_video/2_eval.mp4 +3 -0
  19. nf7i3zuf/eval_video/3_eval.mp4 +3 -0
  20. nf7i3zuf/eval_video/4_eval.mp4 +3 -0
  21. nf7i3zuf/tb/events.out.tfevents.1737513909.leonmkim-ROG-Strix-G15CS-G15CS.2655690.0 +3 -0
  22. nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/files/code/FISH/eval_robot.py +606 -0
  23. nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/files/media/videos/eval/0_eval_0_9b28e537c714f414ede9.mp4 +3 -0
  24. nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/files/media/videos/eval/1_eval_1_ea5929cab6224759260c.mp4 +3 -0
  25. nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/files/media/videos/eval/2_eval_2_5dc2224e3d6c0a1bac85.mp4 +3 -0
  26. nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/files/media/videos/eval/3_eval_3_d7365acda7abf65fdffc.mp4 +3 -0
  27. nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/files/media/videos/eval/4_eval_4_86fd9cb181be35cfea37.mp4 +3 -0
  28. nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/logs/debug-internal.log +0 -0
  29. nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/logs/debug.log +31 -0
  30. tvfn1k3b/.hydra/config.yaml +352 -0
  31. tvfn1k3b/.hydra/hydra.yaml +169 -0
  32. tvfn1k3b/.hydra/overrides.yaml +3 -0
  33. tvfn1k3b/eval_policy.log +15 -0
.gitattributes CHANGED
@@ -66,3 +66,19 @@ zxwyz3xz/eval_video/2_eval.mp4 filter=lfs diff=lfs merge=lfs -text
66
  0e7f0awm/eval_video/0_eval.mp4 filter=lfs diff=lfs merge=lfs -text
67
  nf7i3zuf/episode_rosbags/episode_1_2025-01-21-21-46-18.bag filter=lfs diff=lfs merge=lfs -text
68
  nf7i3zuf/episode_rosbags/episode_3_2025-01-21-21-47-59.bag filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  0e7f0awm/eval_video/0_eval.mp4 filter=lfs diff=lfs merge=lfs -text
67
  nf7i3zuf/episode_rosbags/episode_1_2025-01-21-21-46-18.bag filter=lfs diff=lfs merge=lfs -text
68
  nf7i3zuf/episode_rosbags/episode_3_2025-01-21-21-47-59.bag filter=lfs diff=lfs merge=lfs -text
69
+ 0e7f0awm/episode_rosbags/episode_2_2025-01-21-21-27-19.rrd filter=lfs diff=lfs merge=lfs -text
70
+ 0e7f0awm/episode_rosbags/episode_1_2025-01-21-21-26-32.rrd filter=lfs diff=lfs merge=lfs -text
71
+ nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/files/media/videos/eval/1_eval_1_ea5929cab6224759260c.mp4 filter=lfs diff=lfs merge=lfs -text
72
+ nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/files/media/videos/eval/2_eval_2_5dc2224e3d6c0a1bac85.mp4 filter=lfs diff=lfs merge=lfs -text
73
+ nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/files/media/videos/eval/0_eval_0_9b28e537c714f414ede9.mp4 filter=lfs diff=lfs merge=lfs -text
74
+ nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/files/media/videos/eval/4_eval_4_86fd9cb181be35cfea37.mp4 filter=lfs diff=lfs merge=lfs -text
75
+ nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/files/media/videos/eval/3_eval_3_d7365acda7abf65fdffc.mp4 filter=lfs diff=lfs merge=lfs -text
76
+ nf7i3zuf/eval_video/3_eval.mp4 filter=lfs diff=lfs merge=lfs -text
77
+ nf7i3zuf/eval_video/4_eval.mp4 filter=lfs diff=lfs merge=lfs -text
78
+ nf7i3zuf/eval_video/1_eval.mp4 filter=lfs diff=lfs merge=lfs -text
79
+ nf7i3zuf/eval_video/2_eval.mp4 filter=lfs diff=lfs merge=lfs -text
80
+ nf7i3zuf/eval_video/0_eval.mp4 filter=lfs diff=lfs merge=lfs -text
81
+ 0e7f0awm/episode_rosbags/episode_3_2025-01-21-21-28-12.rrd filter=lfs diff=lfs merge=lfs -text
82
+ nf7i3zuf/episode_rosbags/episode_4_2025-01-21-21-48-53.bag filter=lfs diff=lfs merge=lfs -text
83
+ nf7i3zuf/episode_rosbags/episode_2_2025-01-21-21-47-06.bag filter=lfs diff=lfs merge=lfs -text
84
+ nf7i3zuf/episode_rosbags/episode_0_2025-01-21-21-45-28.bag filter=lfs diff=lfs merge=lfs -text
0e7f0awm/episode_rosbags/episode_1_2025-01-21-21-26-32.rrd ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6327d9eb5905710f1381609417ad3e29164a73e72e2a607416b77098bb81d70e
3
+ size 528037760
0e7f0awm/episode_rosbags/episode_2_2025-01-21-21-27-19.rrd ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6fe9abeb893cf9fbe8ffa3dbd22d062e0cd7c6e806c1cbe4dae065c8b96c63c8
3
+ size 540523756
0e7f0awm/episode_rosbags/episode_3_2025-01-21-21-28-12.rrd ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:306af2eaddce38d1afa43dc0667881d1277bec1ddf6f4c476c6086bb107b5244
3
+ size 534764274
bdmq8qsu/.hydra/config.yaml ADDED
@@ -0,0 +1,352 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ root_dir: /home/${oc.env:USER}/fish_leon
2
+ nstep: 3
3
+ seed: 41
4
+ dataset_shuffle_seed: ${seed}
5
+ device: cuda
6
+ save_video: true
7
+ save_buffer: true
8
+ use_tb: true
9
+ baseline: false
10
+ use_wandb: true
11
+ eval: true
12
+ process_contact_features: ${eval}
13
+ obs_type: pixels
14
+ use_color: true
15
+ use_depth: true
16
+ use_masks: false
17
+ mask_list:
18
+ - EE_obj_mask
19
+ mask_representation: channels
20
+ crop_hw:
21
+ - 144
22
+ - 144
23
+ crop_down_offset: 48
24
+ color_crop_type: null
25
+ depth_crop_type: null
26
+ segmask_crop_type: null
27
+ add_crop_binary_mask: false
28
+ add_coord_conv_map: false
29
+ use_context_color: false
30
+ use_context_depth: false
31
+ use_context_segmask: false
32
+ context_color_crop_type: null
33
+ context_depth_crop_type: null
34
+ context_segmask_crop_type: null
35
+ context_add_crop_binary_mask: false
36
+ context_add_coord_conv_map: false
37
+ use_contact_map: false
38
+ use_sdf_maps: false
39
+ use_normals_maps: false
40
+ which_objects: both
41
+ max_contact_prob: 0.1
42
+ max_depth: 2.0
43
+ grasped_dtc_max_value: 0.105
44
+ env_dtc_max_value: 0.425
45
+ grasped_normals_mask_max_dtc_value: 0.105
46
+ env_normals_mask_max_dtc_value: 0.425
47
+ clamp_dtc: true
48
+ dtc_adaptive_normalization: false
49
+ mask_normals_within_sdf: true
50
+ adaptive_normals_mask: true
51
+ learnable_contact_preprocess_params: false
52
+ contact_model_name: local_multitask_outhd64all_home_crop_h144w144d48_ctxt_seed_183386_epoch_9
53
+ contact_estimation_model_ckpt_path: ~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt
54
+ num_eval: 5
55
+ debug_timestamps: false
56
+ open_loop: false
57
+ action_trajectories: true
58
+ stop_after_action: false
59
+ interpolation_frequency: 25
60
+ policy_frequency: 5
61
+ wait_for_new_camera_frames: true
62
+ random_start: false
63
+ eval_starts: ${root_dir}/FISH/eval_starts/${suite.name}_${obs_type}/${task_name}
64
+ train_demo_idxs_list_or_num: null
65
+ num_valid_demos: null
66
+ val_num_groups: 3
67
+ name_of_expert_demo: 112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
68
+ expert_dataset_dirpath: ${root_dir}/FISH/expert_demos/${suite.name}/${task_name}/${name_of_expert_demo}
69
+ expert_dataset: ${expert_dataset_dirpath}/demos.zarr
70
+ action_key: ${oc.if_else:${action_trajectories}, 'action_trajectory_${interpolation_frequency}hz',
71
+ 'action'}
72
+ semantic_demo_grouping_name: semantic_demo_grouping.yaml
73
+ semantic_demo_grouping: ${expert_dataset_dirpath}/${semantic_demo_grouping_name}
74
+ expert_dataset_config: ${expert_dataset_dirpath}/demo_config.yaml
75
+ bc_regularize: false
76
+ bc_weight_type: qfilter
77
+ load_checkpoint: ${agent.load_checkpoint}
78
+ wandb_run_id: '4295_1'
79
+ true_action_history: false
80
+ wandb_notes: null
81
+ checkpoint_epoch: 7500
82
+ load_residual_weight: false
83
+ checkpoint_root_dir: /home/${oc.env:USER}/fish_leon/FISH
84
+ checkpoint_weight_dir: ${checkpoint_root_dir}/exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
85
+ residual_weight: ${root_dir}/FISH/weights/${suite.name}_${obs_type}/${task_name}/weight.pt
86
+ experiment_dir: ./exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
87
+ final_experiment_dir: ${experiment_dir}/${oc.generate_run_id:}
88
+ agent:
89
+ _target_: agent.diffusion_policy.DiffusionPolicyAgent
90
+ name: diffusion_policy
91
+ load_checkpoint: ${eval}
92
+ device: ${device}
93
+ n_obs_steps: ${.config.policy_cfg.n_obs_steps}
94
+ suite_name: ${suite.name}
95
+ obs_type: ${obs_type}
96
+ enable_arm: ${eval}
97
+ enable_camera: ${eval}
98
+ use_tb: ${use_tb}
99
+ desired_image_shape:
100
+ - 13
101
+ - 180
102
+ - 240
103
+ orig_cam_shape:
104
+ - 3
105
+ - 240
106
+ - 320
107
+ config:
108
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
109
+ compile: false
110
+ device: ${device}
111
+ cam_resize_shape: ${agent.desired_image_shape}
112
+ orig_cam_shape: ${agent.orig_cam_shape}
113
+ policy_frequency: ${policy_frequency}
114
+ interpolation_frequency: ${interpolation_frequency}
115
+ policy_cfg:
116
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
117
+ n_obs_steps: 1
118
+ horizon: 36
119
+ n_action_steps: ${agent.config.policy_cfg.horizon}
120
+ input_shapes:
121
+ observation.image: ${agent.config.cam_resize_shape}
122
+ context_observation.image: ${agent.config.cam_resize_shape}
123
+ observation.state:
124
+ - 8
125
+ observation.action_history:
126
+ - 7
127
+ output_shapes:
128
+ action:
129
+ - 7
130
+ input_normalization_modes:
131
+ observation.image: mean_std
132
+ observation.state: min_max
133
+ observation.action_history: min_max
134
+ output_normalization_modes:
135
+ action: min_max
136
+ vision_backbone: resnet18
137
+ crop_distractors_tlhw: null
138
+ pretrained_backbone_weights: null
139
+ transforms:
140
+ - _target_: torchaug.transforms.RandomAffine
141
+ degrees:
142
+ - -5
143
+ - 5
144
+ translate:
145
+ - 0.05
146
+ - 0.05
147
+ batch_transform: true
148
+ num_chunks: -1
149
+ batch_inplace: true
150
+ - _target_: torchaug.transforms.RandomColorJitter
151
+ brightness: 0.3
152
+ contrast: 0.4
153
+ saturation: 0.5
154
+ hue: 0.08
155
+ batch_transform: true
156
+ num_chunks: -1
157
+ batch_inplace: true
158
+ use_group_norm: true
159
+ spatial_softmax_num_keypoints: 32
160
+ action_history_encoder_config:
161
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
162
+ in_channels: 7
163
+ out_channels: 32
164
+ history_length: ${agent.config.policy_cfg.n_action_steps}
165
+ kernel_size: ${agent.config.policy_cfg.kernel_size}
166
+ downsample_kernel_size: 3
167
+ downsample_stride: 2
168
+ downsample_padding: 1
169
+ down_dims:
170
+ - 256
171
+ - 512
172
+ - 1024
173
+ kernel_size: 5
174
+ n_groups: 8
175
+ diffusion_step_embed_dim: 128
176
+ use_film_scale_modulation: true
177
+ noise_scheduler_type: DDIM
178
+ beta_schedule: squaredcos_cap_v2
179
+ beta_start: 0.0001
180
+ beta_end: 0.02
181
+ prediction_type: epsilon
182
+ clip_sample: true
183
+ clip_sample_range: 1.0
184
+ num_train_timesteps: 50
185
+ num_inference_steps: 10
186
+ do_mask_loss_for_padding: false
187
+ train_cfg:
188
+ _target_: utils.TrainConfig
189
+ lr: 0.0001
190
+ lr_scheduler: cosine
191
+ lr_warmup_steps: 500
192
+ adam_betas:
193
+ - 0.95
194
+ - 0.999
195
+ adam_eps: 1.0e-08
196
+ adam_weight_decay: 1.0e-06
197
+ grad_clip_norm: 10
198
+ offline_steps: ${num_train_frames_diffusion}
199
+ use_amp: true
200
+ observation_cfg:
201
+ _target_: agent.encoder.VisualFeatureSet
202
+ use_depth: ${use_depth}
203
+ use_color: ${use_color}
204
+ mask_input_dict:
205
+ _target_: agent.encoder.MaskInputDict
206
+ enable: ${use_masks}
207
+ representation: ${mask_representation}
208
+ mask_list: ${mask_list}
209
+ crop_input_config:
210
+ _target_: agent.encoder.CropInputConfig
211
+ color_crop_type: ${color_crop_type}
212
+ depth_crop_type: ${depth_crop_type}
213
+ segmask_crop_type: ${segmask_crop_type}
214
+ crop_hw: ${crop_hw}
215
+ crop_down_offset: ${crop_down_offset}
216
+ add_crop_binary_mask: ${add_crop_binary_mask}
217
+ add_coord_conv_map: ${add_coord_conv_map}
218
+ context_input_config:
219
+ _target_: agent.encoder.ContextInputConfig
220
+ use_color: ${use_context_color}
221
+ use_depth: ${use_context_depth}
222
+ mask_input_dict:
223
+ _target_: agent.encoder.MaskInputDict
224
+ enable: ${use_context_segmask}
225
+ representation: ${mask_representation}
226
+ mask_list: ${mask_list}
227
+ crop_input_config:
228
+ _target_: agent.encoder.CropInputConfig
229
+ color_crop_type: ${context_color_crop_type}
230
+ depth_crop_type: ${context_depth_crop_type}
231
+ segmask_crop_type: ${context_segmask_crop_type}
232
+ crop_hw: ${crop_hw}
233
+ crop_down_offset: ${crop_down_offset}
234
+ add_crop_binary_mask: ${context_add_crop_binary_mask}
235
+ add_coord_conv_map: ${context_add_coord_conv_map}
236
+ mask_soft_approx_scheduler_config:
237
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
238
+ num_steps: 40000
239
+ initial_value: 10.0
240
+ final_value: 1000.0
241
+ interpolation_scheme: constant
242
+ use_contact_map: ${use_contact_map}
243
+ use_sdf_maps: ${use_sdf_maps}
244
+ use_normals_maps: ${use_normals_maps}
245
+ which_objects: ${which_objects}
246
+ grasped_dtc_max_value: ${grasped_dtc_max_value}
247
+ env_dtc_max_value: ${env_dtc_max_value}
248
+ grasped_normals_mask_max_dtc_value: ${grasped_normals_mask_max_dtc_value}
249
+ env_normals_mask_max_dtc_value: ${env_normals_mask_max_dtc_value}
250
+ clamp_dtc: ${clamp_dtc}
251
+ max_contact_prob: ${max_contact_prob}
252
+ mask_normals_within_sdf: ${mask_normals_within_sdf}
253
+ dtc_adaptive_normalization: ${dtc_adaptive_normalization}
254
+ adaptive_normals_mask: ${adaptive_normals_mask}
255
+ max_depth: ${max_depth}
256
+ image_shape: ${agent.desired_image_shape}
257
+ learnable_contact_preprocess_params: ${learnable_contact_preprocess_params}
258
+ learning_rate: ${agent.config.train_cfg.lr}
259
+ weight_decay: 0.0
260
+ contact_model_name: ${contact_model_name}
261
+ zero_centered: false
262
+ crop_distractors_tlhw: ${agent.config.policy_cfg.crop_distractors_tlhw}
263
+ suite:
264
+ suite: frankagym
265
+ name: frankagym
266
+ frame_stack: ${agent.n_obs_steps}
267
+ action_repeat: 1
268
+ discount: 0.99
269
+ hidden_dim: 1024
270
+ num_train_frames: 2010
271
+ num_seed_frames: 260
272
+ num_train_epochs: 5000
273
+ validate_every_epochs: 100
274
+ validate_diffusion_on_action_loss_every_epochs: 500
275
+ train_eval_diffusion_on_action_loss_every_epochs: 500
276
+ check_topk_every_epochs: 10
277
+ save_snapshot_every_epochs: 5000
278
+ eval_every_frames: 2000
279
+ num_eval_episodes: 5
280
+ save_snapshot: true
281
+ wait_for_user_to_start_episode: true
282
+ task_make_fn:
283
+ _target_: suite.frankagym.make
284
+ name: ${task_name}
285
+ height: 240
286
+ width: 320
287
+ frame_stack: ${suite.frame_stack}
288
+ action_repeat: ${suite.action_repeat}
289
+ seed: ${seed}
290
+ enable_arm: ${agent.enable_arm}
291
+ enable_gripper: ${enable_gripper}
292
+ start_with_gripper_open: ${start_with_gripper_open}
293
+ enable_camera: ${agent.enable_camera}
294
+ path_to_depth_extrinsics: ${path_to_depth_extrinsics}
295
+ contact_estimation_model_ckpt_path: ${contact_estimation_model_ckpt_path}
296
+ x_limit: ${x_limit}
297
+ y_limit: ${y_limit}
298
+ z_limit: ${z_limit}
299
+ device: ${device}
300
+ interpolation_frequency: ${interpolation_frequency}
301
+ policy_frequency: ${policy_frequency}
302
+ debug_timestamps: ${debug_timestamps}
303
+ stop_after_action: ${stop_after_action}
304
+ open_loop: ${open_loop}
305
+ wait_for_new_camera_frames: ${wait_for_new_camera_frames}
306
+ action_key: ${action_key}
307
+ action_trajectory_horizon: ${agent.config.policy_cfg.horizon}
308
+ action_trajectories: ${action_trajectories}
309
+ path_to_zarr_dataset: ${expert_dataset}
310
+ agent_policy_cfg: ???
311
+ true_action_history: ${true_action_history}
312
+ num_train_frames_bc: 50000
313
+ num_train_frames_drq: 1100000
314
+ stddev_schedule_drq: linear(1.0,0.1,100000)
315
+ task_name: FrankaInsertion-v1
316
+ num_train_frames_vinn: 25000
317
+ num_train_frames_diffusion: 1000000
318
+ num_train_epochs_bc: 5000
319
+ num_train_epochs_diffusion: 5000
320
+ validate_every_epochs_bc: 5
321
+ validate_every_epochs_diffusion: 25
322
+ validate_diffusion_on_action_loss_every_epochs: 50
323
+ train_eval_diffusion_on_action_loss_every_epochs: 500
324
+ check_topk_every_epochs: 5
325
+ check_topk_every_epochs_diffusion: ${validate_diffusion_on_action_loss_every_epochs}
326
+ save_snapshot_every_epochs_diffusion: 5000
327
+ x_limit:
328
+ - 0.2
329
+ - 0.7
330
+ y_limit:
331
+ - -0.4
332
+ - 0.4
333
+ z_limit:
334
+ - -0.05
335
+ - 0.55
336
+ home_displacement:
337
+ - 0.55
338
+ - 0.0
339
+ - 0.55
340
+ - 180.0
341
+ - 0.0
342
+ - 0.0
343
+ enable_gripper: true
344
+ start_with_gripper_open: true
345
+ offset_mask:
346
+ - 1
347
+ - 1
348
+ - 1
349
+ - 1
350
+ - 1
351
+ - 1
352
+ path_to_depth_extrinsics: ~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy
bdmq8qsu/.hydra/hydra.yaml ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ hydra:
2
+ run:
3
+ dir: ${final_experiment_dir}
4
+ sweep:
5
+ dir: ${final_experiment_dir}
6
+ subdir: ${hydra.job.num}
7
+ launcher:
8
+ submitit_folder: ${final_experiment_dir}/.slurm
9
+ timeout_min: 60
10
+ cpus_per_task: null
11
+ gpus_per_node: null
12
+ tasks_per_node: 1
13
+ mem_gb: null
14
+ nodes: 1
15
+ name: ${hydra.job.name}
16
+ stderr_to_stdout: false
17
+ _target_: hydra_plugins.hydra_submitit_launcher.submitit_launcher.LocalLauncher
18
+ sweeper:
19
+ _target_: hydra._internal.core_plugins.basic_sweeper.BasicSweeper
20
+ max_batch_size: null
21
+ params: null
22
+ help:
23
+ app_name: ${hydra.job.name}
24
+ header: '${hydra.help.app_name} is powered by Hydra.
25
+
26
+ '
27
+ footer: 'Powered by Hydra (https://hydra.cc)
28
+
29
+ Use --hydra-help to view Hydra specific help
30
+
31
+ '
32
+ template: '${hydra.help.header}
33
+
34
+ == Configuration groups ==
35
+
36
+ Compose your configuration from those groups (group=option)
37
+
38
+
39
+ $APP_CONFIG_GROUPS
40
+
41
+
42
+ == Config ==
43
+
44
+ Override anything in the config (foo.bar=value)
45
+
46
+
47
+ $CONFIG
48
+
49
+
50
+ ${hydra.help.footer}
51
+
52
+ '
53
+ hydra_help:
54
+ template: 'Hydra (${hydra.runtime.version})
55
+
56
+ See https://hydra.cc for more info.
57
+
58
+
59
+ == Flags ==
60
+
61
+ $FLAGS_HELP
62
+
63
+
64
+ == Configuration groups ==
65
+
66
+ Compose your configuration from those groups (For example, append hydra/job_logging=disabled
67
+ to command line)
68
+
69
+
70
+ $HYDRA_CONFIG_GROUPS
71
+
72
+
73
+ Use ''--cfg hydra'' to Show the Hydra config.
74
+
75
+ '
76
+ hydra_help: ???
77
+ hydra_logging:
78
+ version: 1
79
+ formatters:
80
+ simple:
81
+ format: '[%(asctime)s][HYDRA] %(message)s'
82
+ handlers:
83
+ console:
84
+ class: logging.StreamHandler
85
+ formatter: simple
86
+ stream: ext://sys.stdout
87
+ root:
88
+ level: INFO
89
+ handlers:
90
+ - console
91
+ loggers:
92
+ logging_example:
93
+ level: DEBUG
94
+ disable_existing_loggers: false
95
+ job_logging:
96
+ version: 1
97
+ formatters:
98
+ simple:
99
+ format: '[%(asctime)s][%(name)s][%(levelname)s] - %(message)s'
100
+ handlers:
101
+ console:
102
+ class: logging.StreamHandler
103
+ formatter: simple
104
+ stream: ext://sys.stdout
105
+ file:
106
+ class: logging.FileHandler
107
+ formatter: simple
108
+ filename: ${hydra.runtime.output_dir}/${hydra.job.name}.log
109
+ root:
110
+ level: INFO
111
+ handlers:
112
+ - console
113
+ - file
114
+ disable_existing_loggers: false
115
+ env: {}
116
+ mode: RUN
117
+ searchpath: []
118
+ callbacks: {}
119
+ output_subdir: .hydra
120
+ overrides:
121
+ hydra:
122
+ - hydra.mode=RUN
123
+ task:
124
+ - agent=diffusion
125
+ - suite=frankagym
126
+ - suite/frankagym_task@_global_=insertion
127
+ job:
128
+ name: eval_policy
129
+ chdir: true
130
+ override_dirname: agent=diffusion,suite/frankagym_task@_global_=insertion,suite=frankagym
131
+ id: ???
132
+ num: ???
133
+ config_name: config_eval
134
+ env_set: {}
135
+ env_copy: []
136
+ config:
137
+ override_dirname:
138
+ kv_sep: '='
139
+ item_sep: ','
140
+ exclude_keys: []
141
+ runtime:
142
+ version: 1.3.2
143
+ version_base: '1.1'
144
+ cwd: /home/leonmkim/fish_leon/FISH
145
+ config_sources:
146
+ - path: hydra.conf
147
+ schema: pkg
148
+ provider: hydra
149
+ - path: /home/leonmkim/fish_leon/FISH/cfgs
150
+ schema: file
151
+ provider: main
152
+ - path: ''
153
+ schema: structured
154
+ provider: schema
155
+ output_dir: /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/4295_1/bdmq8qsu
156
+ choices:
157
+ suite: frankagym
158
+ suite/frankagym_task@_global_: insertion
159
+ agent: diffusion
160
+ hydra/env: default
161
+ hydra/callbacks: null
162
+ hydra/job_logging: default
163
+ hydra/hydra_logging: default
164
+ hydra/hydra_help: default
165
+ hydra/help: default
166
+ hydra/sweeper: basic
167
+ hydra/launcher: submitit_local
168
+ hydra/output: default
169
+ verbose: false
bdmq8qsu/.hydra/overrides.yaml ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ - agent=diffusion
2
+ - suite=frankagym
3
+ - suite/frankagym_task@_global_=insertion
bdmq8qsu/eval_policy.log ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [2025-01-21 22:16:31,809][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_policy.py:429: UserWarning:
2
+ The version_base parameter is not specified.
3
+ Please specify a compatability version level, or None.
4
+ Will assume defaults for version 1.1
5
+ @hydra.main(config_path='cfgs', config_name='config_eval')
6
+
7
+ [2025-01-21 22:16:31,812][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_policy.py:366: UserWarning:
8
+ The version_base parameter is not specified.
9
+ Please specify a compatability version level, or None.
10
+ Will assume defaults for version 1.1
11
+ hydra.initialize(
12
+
13
+ [2025-01-21 22:16:35,435][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_policy.py:415: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.
14
+ payload = torch.load(f)
15
+
nf7i3zuf/.hydra/config.yaml ADDED
@@ -0,0 +1,352 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ root_dir: /home/${oc.env:USER}/fish_leon
2
+ nstep: 3
3
+ seed: 41
4
+ dataset_shuffle_seed: ${seed}
5
+ device: cuda
6
+ save_video: true
7
+ save_buffer: true
8
+ use_tb: true
9
+ baseline: false
10
+ use_wandb: true
11
+ eval: true
12
+ process_contact_features: ${eval}
13
+ obs_type: pixels
14
+ use_color: true
15
+ use_depth: true
16
+ use_masks: false
17
+ mask_list:
18
+ - EE_obj_mask
19
+ mask_representation: channels
20
+ crop_hw:
21
+ - 144
22
+ - 144
23
+ crop_down_offset: 48
24
+ color_crop_type: null
25
+ depth_crop_type: null
26
+ segmask_crop_type: null
27
+ add_crop_binary_mask: false
28
+ add_coord_conv_map: false
29
+ use_context_color: false
30
+ use_context_depth: false
31
+ use_context_segmask: false
32
+ context_color_crop_type: null
33
+ context_depth_crop_type: null
34
+ context_segmask_crop_type: null
35
+ context_add_crop_binary_mask: false
36
+ context_add_coord_conv_map: false
37
+ use_contact_map: false
38
+ use_sdf_maps: false
39
+ use_normals_maps: false
40
+ which_objects: both
41
+ max_contact_prob: 0.1
42
+ max_depth: 2.0
43
+ grasped_dtc_max_value: 0.105
44
+ env_dtc_max_value: 0.425
45
+ grasped_normals_mask_max_dtc_value: 0.105
46
+ env_normals_mask_max_dtc_value: 0.425
47
+ clamp_dtc: true
48
+ dtc_adaptive_normalization: false
49
+ mask_normals_within_sdf: true
50
+ adaptive_normals_mask: true
51
+ learnable_contact_preprocess_params: false
52
+ contact_model_name: local_multitask_outhd64all_home_crop_h144w144d48_ctxt_seed_183386_epoch_9
53
+ contact_estimation_model_ckpt_path: ~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt
54
+ num_eval: 5
55
+ debug_timestamps: false
56
+ open_loop: false
57
+ action_trajectories: true
58
+ stop_after_action: false
59
+ interpolation_frequency: 25
60
+ policy_frequency: 5
61
+ wait_for_new_camera_frames: true
62
+ random_start: false
63
+ eval_starts: ${root_dir}/FISH/eval_starts/${suite.name}_${obs_type}/${task_name}
64
+ train_demo_idxs_list_or_num: null
65
+ num_valid_demos: null
66
+ val_num_groups: 3
67
+ name_of_expert_demo: 112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
68
+ expert_dataset_dirpath: ${root_dir}/FISH/expert_demos/${suite.name}/${task_name}/${name_of_expert_demo}
69
+ expert_dataset: ${expert_dataset_dirpath}/demos.zarr
70
+ action_key: ${oc.if_else:${action_trajectories}, 'action_trajectory_${interpolation_frequency}hz',
71
+ 'action'}
72
+ semantic_demo_grouping_name: semantic_demo_grouping.yaml
73
+ semantic_demo_grouping: ${expert_dataset_dirpath}/${semantic_demo_grouping_name}
74
+ expert_dataset_config: ${expert_dataset_dirpath}/demo_config.yaml
75
+ bc_regularize: false
76
+ bc_weight_type: qfilter
77
+ load_checkpoint: ${agent.load_checkpoint}
78
+ wandb_run_id: '4295_1'
79
+ true_action_history: false
80
+ wandb_notes: null
81
+ checkpoint_epoch: 7500
82
+ load_residual_weight: false
83
+ checkpoint_root_dir: /home/${oc.env:USER}/fish_leon/FISH
84
+ checkpoint_weight_dir: ${checkpoint_root_dir}/exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
85
+ residual_weight: ${root_dir}/FISH/weights/${suite.name}_${obs_type}/${task_name}/weight.pt
86
+ experiment_dir: ./exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
87
+ final_experiment_dir: ${experiment_dir}/${oc.generate_run_id:}
88
+ agent:
89
+ _target_: agent.diffusion_policy.DiffusionPolicyAgent
90
+ name: diffusion_policy
91
+ load_checkpoint: ${eval}
92
+ device: ${device}
93
+ n_obs_steps: ${.config.policy_cfg.n_obs_steps}
94
+ suite_name: ${suite.name}
95
+ obs_type: ${obs_type}
96
+ enable_arm: ${eval}
97
+ enable_camera: ${eval}
98
+ use_tb: ${use_tb}
99
+ desired_image_shape:
100
+ - 13
101
+ - 180
102
+ - 240
103
+ orig_cam_shape:
104
+ - 3
105
+ - 240
106
+ - 320
107
+ config:
108
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
109
+ compile: false
110
+ device: ${device}
111
+ cam_resize_shape: ${agent.desired_image_shape}
112
+ orig_cam_shape: ${agent.orig_cam_shape}
113
+ policy_frequency: ${policy_frequency}
114
+ interpolation_frequency: ${interpolation_frequency}
115
+ policy_cfg:
116
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
117
+ n_obs_steps: 1
118
+ horizon: 36
119
+ n_action_steps: ${agent.config.policy_cfg.horizon}
120
+ input_shapes:
121
+ observation.image: ${agent.config.cam_resize_shape}
122
+ context_observation.image: ${agent.config.cam_resize_shape}
123
+ observation.state:
124
+ - 8
125
+ observation.action_history:
126
+ - 7
127
+ output_shapes:
128
+ action:
129
+ - 7
130
+ input_normalization_modes:
131
+ observation.image: mean_std
132
+ observation.state: min_max
133
+ observation.action_history: min_max
134
+ output_normalization_modes:
135
+ action: min_max
136
+ vision_backbone: resnet18
137
+ crop_distractors_tlhw: null
138
+ pretrained_backbone_weights: null
139
+ transforms:
140
+ - _target_: torchaug.transforms.RandomAffine
141
+ degrees:
142
+ - -5
143
+ - 5
144
+ translate:
145
+ - 0.05
146
+ - 0.05
147
+ batch_transform: true
148
+ num_chunks: -1
149
+ batch_inplace: true
150
+ - _target_: torchaug.transforms.RandomColorJitter
151
+ brightness: 0.3
152
+ contrast: 0.4
153
+ saturation: 0.5
154
+ hue: 0.08
155
+ batch_transform: true
156
+ num_chunks: -1
157
+ batch_inplace: true
158
+ use_group_norm: true
159
+ spatial_softmax_num_keypoints: 32
160
+ action_history_encoder_config:
161
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
162
+ in_channels: 7
163
+ out_channels: 32
164
+ history_length: ${agent.config.policy_cfg.n_action_steps}
165
+ kernel_size: ${agent.config.policy_cfg.kernel_size}
166
+ downsample_kernel_size: 3
167
+ downsample_stride: 2
168
+ downsample_padding: 1
169
+ down_dims:
170
+ - 256
171
+ - 512
172
+ - 1024
173
+ kernel_size: 5
174
+ n_groups: 8
175
+ diffusion_step_embed_dim: 128
176
+ use_film_scale_modulation: true
177
+ noise_scheduler_type: DDIM
178
+ beta_schedule: squaredcos_cap_v2
179
+ beta_start: 0.0001
180
+ beta_end: 0.02
181
+ prediction_type: epsilon
182
+ clip_sample: true
183
+ clip_sample_range: 1.0
184
+ num_train_timesteps: 50
185
+ num_inference_steps: 10
186
+ do_mask_loss_for_padding: false
187
+ train_cfg:
188
+ _target_: utils.TrainConfig
189
+ lr: 0.0001
190
+ lr_scheduler: cosine
191
+ lr_warmup_steps: 500
192
+ adam_betas:
193
+ - 0.95
194
+ - 0.999
195
+ adam_eps: 1.0e-08
196
+ adam_weight_decay: 1.0e-06
197
+ grad_clip_norm: 10
198
+ offline_steps: ${num_train_frames_diffusion}
199
+ use_amp: true
200
+ observation_cfg:
201
+ _target_: agent.encoder.VisualFeatureSet
202
+ use_depth: ${use_depth}
203
+ use_color: ${use_color}
204
+ mask_input_dict:
205
+ _target_: agent.encoder.MaskInputDict
206
+ enable: ${use_masks}
207
+ representation: ${mask_representation}
208
+ mask_list: ${mask_list}
209
+ crop_input_config:
210
+ _target_: agent.encoder.CropInputConfig
211
+ color_crop_type: ${color_crop_type}
212
+ depth_crop_type: ${depth_crop_type}
213
+ segmask_crop_type: ${segmask_crop_type}
214
+ crop_hw: ${crop_hw}
215
+ crop_down_offset: ${crop_down_offset}
216
+ add_crop_binary_mask: ${add_crop_binary_mask}
217
+ add_coord_conv_map: ${add_coord_conv_map}
218
+ context_input_config:
219
+ _target_: agent.encoder.ContextInputConfig
220
+ use_color: ${use_context_color}
221
+ use_depth: ${use_context_depth}
222
+ mask_input_dict:
223
+ _target_: agent.encoder.MaskInputDict
224
+ enable: ${use_context_segmask}
225
+ representation: ${mask_representation}
226
+ mask_list: ${mask_list}
227
+ crop_input_config:
228
+ _target_: agent.encoder.CropInputConfig
229
+ color_crop_type: ${context_color_crop_type}
230
+ depth_crop_type: ${context_depth_crop_type}
231
+ segmask_crop_type: ${context_segmask_crop_type}
232
+ crop_hw: ${crop_hw}
233
+ crop_down_offset: ${crop_down_offset}
234
+ add_crop_binary_mask: ${context_add_crop_binary_mask}
235
+ add_coord_conv_map: ${context_add_coord_conv_map}
236
+ mask_soft_approx_scheduler_config:
237
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
238
+ num_steps: 40000
239
+ initial_value: 10.0
240
+ final_value: 1000.0
241
+ interpolation_scheme: constant
242
+ use_contact_map: ${use_contact_map}
243
+ use_sdf_maps: ${use_sdf_maps}
244
+ use_normals_maps: ${use_normals_maps}
245
+ which_objects: ${which_objects}
246
+ grasped_dtc_max_value: ${grasped_dtc_max_value}
247
+ env_dtc_max_value: ${env_dtc_max_value}
248
+ grasped_normals_mask_max_dtc_value: ${grasped_normals_mask_max_dtc_value}
249
+ env_normals_mask_max_dtc_value: ${env_normals_mask_max_dtc_value}
250
+ clamp_dtc: ${clamp_dtc}
251
+ max_contact_prob: ${max_contact_prob}
252
+ mask_normals_within_sdf: ${mask_normals_within_sdf}
253
+ dtc_adaptive_normalization: ${dtc_adaptive_normalization}
254
+ adaptive_normals_mask: ${adaptive_normals_mask}
255
+ max_depth: ${max_depth}
256
+ image_shape: ${agent.desired_image_shape}
257
+ learnable_contact_preprocess_params: ${learnable_contact_preprocess_params}
258
+ learning_rate: ${agent.config.train_cfg.lr}
259
+ weight_decay: 0.0
260
+ contact_model_name: ${contact_model_name}
261
+ zero_centered: false
262
+ crop_distractors_tlhw: ${agent.config.policy_cfg.crop_distractors_tlhw}
263
+ suite:
264
+ suite: frankagym
265
+ name: frankagym
266
+ frame_stack: ${agent.n_obs_steps}
267
+ action_repeat: 1
268
+ discount: 0.99
269
+ hidden_dim: 1024
270
+ num_train_frames: 2010
271
+ num_seed_frames: 260
272
+ num_train_epochs: 5000
273
+ validate_every_epochs: 100
274
+ validate_diffusion_on_action_loss_every_epochs: 500
275
+ train_eval_diffusion_on_action_loss_every_epochs: 500
276
+ check_topk_every_epochs: 10
277
+ save_snapshot_every_epochs: 5000
278
+ eval_every_frames: 2000
279
+ num_eval_episodes: 5
280
+ save_snapshot: true
281
+ wait_for_user_to_start_episode: true
282
+ task_make_fn:
283
+ _target_: suite.frankagym.make
284
+ name: ${task_name}
285
+ height: 240
286
+ width: 320
287
+ frame_stack: ${suite.frame_stack}
288
+ action_repeat: ${suite.action_repeat}
289
+ seed: ${seed}
290
+ enable_arm: ${agent.enable_arm}
291
+ enable_gripper: ${enable_gripper}
292
+ start_with_gripper_open: ${start_with_gripper_open}
293
+ enable_camera: ${agent.enable_camera}
294
+ path_to_depth_extrinsics: ${path_to_depth_extrinsics}
295
+ contact_estimation_model_ckpt_path: ${contact_estimation_model_ckpt_path}
296
+ x_limit: ${x_limit}
297
+ y_limit: ${y_limit}
298
+ z_limit: ${z_limit}
299
+ device: ${device}
300
+ interpolation_frequency: ${interpolation_frequency}
301
+ policy_frequency: ${policy_frequency}
302
+ debug_timestamps: ${debug_timestamps}
303
+ stop_after_action: ${stop_after_action}
304
+ open_loop: ${open_loop}
305
+ wait_for_new_camera_frames: ${wait_for_new_camera_frames}
306
+ action_key: ${action_key}
307
+ action_trajectory_horizon: ${agent.config.policy_cfg.horizon}
308
+ action_trajectories: ${action_trajectories}
309
+ path_to_zarr_dataset: ${expert_dataset}
310
+ agent_policy_cfg: ???
311
+ true_action_history: ${true_action_history}
312
+ num_train_frames_bc: 50000
313
+ num_train_frames_drq: 1100000
314
+ stddev_schedule_drq: linear(1.0,0.1,100000)
315
+ task_name: FrankaInsertion-v1
316
+ num_train_frames_vinn: 25000
317
+ num_train_frames_diffusion: 1000000
318
+ num_train_epochs_bc: 5000
319
+ num_train_epochs_diffusion: 5000
320
+ validate_every_epochs_bc: 5
321
+ validate_every_epochs_diffusion: 25
322
+ validate_diffusion_on_action_loss_every_epochs: 50
323
+ train_eval_diffusion_on_action_loss_every_epochs: 500
324
+ check_topk_every_epochs: 5
325
+ check_topk_every_epochs_diffusion: ${validate_diffusion_on_action_loss_every_epochs}
326
+ save_snapshot_every_epochs_diffusion: 5000
327
+ x_limit:
328
+ - 0.2
329
+ - 0.7
330
+ y_limit:
331
+ - -0.4
332
+ - 0.4
333
+ z_limit:
334
+ - -0.05
335
+ - 0.55
336
+ home_displacement:
337
+ - 0.55
338
+ - 0.0
339
+ - 0.55
340
+ - 180.0
341
+ - 0.0
342
+ - 0.0
343
+ enable_gripper: true
344
+ start_with_gripper_open: true
345
+ offset_mask:
346
+ - 1
347
+ - 1
348
+ - 1
349
+ - 1
350
+ - 1
351
+ - 1
352
+ path_to_depth_extrinsics: ~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy
nf7i3zuf/.hydra/hydra.yaml ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ hydra:
2
+ run:
3
+ dir: ${final_experiment_dir}
4
+ sweep:
5
+ dir: ${final_experiment_dir}
6
+ subdir: ${hydra.job.num}
7
+ launcher:
8
+ submitit_folder: ${final_experiment_dir}/.slurm
9
+ timeout_min: 60
10
+ cpus_per_task: null
11
+ gpus_per_node: null
12
+ tasks_per_node: 1
13
+ mem_gb: null
14
+ nodes: 1
15
+ name: ${hydra.job.name}
16
+ stderr_to_stdout: false
17
+ _target_: hydra_plugins.hydra_submitit_launcher.submitit_launcher.LocalLauncher
18
+ sweeper:
19
+ _target_: hydra._internal.core_plugins.basic_sweeper.BasicSweeper
20
+ max_batch_size: null
21
+ params: null
22
+ help:
23
+ app_name: ${hydra.job.name}
24
+ header: '${hydra.help.app_name} is powered by Hydra.
25
+
26
+ '
27
+ footer: 'Powered by Hydra (https://hydra.cc)
28
+
29
+ Use --hydra-help to view Hydra specific help
30
+
31
+ '
32
+ template: '${hydra.help.header}
33
+
34
+ == Configuration groups ==
35
+
36
+ Compose your configuration from those groups (group=option)
37
+
38
+
39
+ $APP_CONFIG_GROUPS
40
+
41
+
42
+ == Config ==
43
+
44
+ Override anything in the config (foo.bar=value)
45
+
46
+
47
+ $CONFIG
48
+
49
+
50
+ ${hydra.help.footer}
51
+
52
+ '
53
+ hydra_help:
54
+ template: 'Hydra (${hydra.runtime.version})
55
+
56
+ See https://hydra.cc for more info.
57
+
58
+
59
+ == Flags ==
60
+
61
+ $FLAGS_HELP
62
+
63
+
64
+ == Configuration groups ==
65
+
66
+ Compose your configuration from those groups (For example, append hydra/job_logging=disabled
67
+ to command line)
68
+
69
+
70
+ $HYDRA_CONFIG_GROUPS
71
+
72
+
73
+ Use ''--cfg hydra'' to Show the Hydra config.
74
+
75
+ '
76
+ hydra_help: ???
77
+ hydra_logging:
78
+ version: 1
79
+ formatters:
80
+ simple:
81
+ format: '[%(asctime)s][HYDRA] %(message)s'
82
+ handlers:
83
+ console:
84
+ class: logging.StreamHandler
85
+ formatter: simple
86
+ stream: ext://sys.stdout
87
+ root:
88
+ level: INFO
89
+ handlers:
90
+ - console
91
+ loggers:
92
+ logging_example:
93
+ level: DEBUG
94
+ disable_existing_loggers: false
95
+ job_logging:
96
+ version: 1
97
+ formatters:
98
+ simple:
99
+ format: '[%(asctime)s][%(name)s][%(levelname)s] - %(message)s'
100
+ handlers:
101
+ console:
102
+ class: logging.StreamHandler
103
+ formatter: simple
104
+ stream: ext://sys.stdout
105
+ file:
106
+ class: logging.FileHandler
107
+ formatter: simple
108
+ filename: ${hydra.runtime.output_dir}/${hydra.job.name}.log
109
+ root:
110
+ level: INFO
111
+ handlers:
112
+ - console
113
+ - file
114
+ disable_existing_loggers: false
115
+ env: {}
116
+ mode: RUN
117
+ searchpath: []
118
+ callbacks: {}
119
+ output_subdir: .hydra
120
+ overrides:
121
+ hydra:
122
+ - hydra.mode=RUN
123
+ task:
124
+ - agent=diffusion
125
+ - suite=frankagym
126
+ - suite/frankagym_task@_global_=insertion
127
+ job:
128
+ name: eval_robot
129
+ chdir: true
130
+ override_dirname: agent=diffusion,suite/frankagym_task@_global_=insertion,suite=frankagym
131
+ id: ???
132
+ num: ???
133
+ config_name: config_eval
134
+ env_set: {}
135
+ env_copy: []
136
+ config:
137
+ override_dirname:
138
+ kv_sep: '='
139
+ item_sep: ','
140
+ exclude_keys: []
141
+ runtime:
142
+ version: 1.3.2
143
+ version_base: '1.1'
144
+ cwd: /home/leonmkim/fish_leon/FISH
145
+ config_sources:
146
+ - path: hydra.conf
147
+ schema: pkg
148
+ provider: hydra
149
+ - path: /home/leonmkim/fish_leon/FISH/cfgs
150
+ schema: file
151
+ provider: main
152
+ - path: ''
153
+ schema: structured
154
+ provider: schema
155
+ output_dir: /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/4295_1/nf7i3zuf
156
+ choices:
157
+ suite: frankagym
158
+ suite/frankagym_task@_global_: insertion
159
+ agent: diffusion
160
+ hydra/env: default
161
+ hydra/callbacks: null
162
+ hydra/job_logging: default
163
+ hydra/hydra_logging: default
164
+ hydra/hydra_help: default
165
+ hydra/help: default
166
+ hydra/sweeper: basic
167
+ hydra/launcher: submitit_local
168
+ hydra/output: default
169
+ verbose: false
nf7i3zuf/.hydra/overrides.yaml ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ - agent=diffusion
2
+ - suite=frankagym
3
+ - suite/frankagym_task@_global_=insertion
nf7i3zuf/episode_rosbags/color_K.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4a962c703d20da282f5e009d432dff51df4ebd22f3386699b6754ea9cfc06a55
3
+ size 200
nf7i3zuf/episode_rosbags/episode_0_2025-01-21-21-45-28.bag ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a3687ed46f4776057dc718e0e3741ac63a1ece716316f8eb98e4b01784ef8345
3
+ size 2608653504
nf7i3zuf/episode_rosbags/episode_2_2025-01-21-21-47-06.bag ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7068c08a3fdfc3b30de4d9e838e26842f7008fcfaa3393f49ac3d29801ed8689
3
+ size 2597346283
nf7i3zuf/episode_rosbags/episode_4_2025-01-21-21-48-53.bag ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6978ba0b80f32ce33f779000085c6e4c58d8a00f33b8ad1cf133008eb1537b8b
3
+ size 2601054808
nf7i3zuf/eval_video/0_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9b28e537c714f414ede9ebbbc7da92ec34cde9fa3391484321848b114cabc505
3
+ size 1475941
nf7i3zuf/eval_video/1_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ea5929cab6224759260c660ed866bdf16ef354d196faba0bd4d3062847381cfe
3
+ size 1478121
nf7i3zuf/eval_video/2_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5dc2224e3d6c0a1bac85ed67f34d58d253381326fd534bc0f4a132735437246d
3
+ size 1473697
nf7i3zuf/eval_video/3_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d7365acda7abf65fdffc37e78f5f71610b644f7286226caf3dfadf4c836d4798
3
+ size 1505668
nf7i3zuf/eval_video/4_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:86fd9cb181be35cfea37fd46ca43b852bedc04d329d5a1d062319f2c3242411a
3
+ size 1480928
nf7i3zuf/tb/events.out.tfevents.1737513909.leonmkim-ROG-Strix-G15CS-G15CS.2655690.0 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cc9f59cf43117d0e5cde1f5e7294a329d57dfd1528e509ca6afec38192e78d32
3
+ size 6539
nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/files/code/FISH/eval_robot.py ADDED
@@ -0,0 +1,606 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #%%
2
+ import warnings
3
+ import os
4
+
5
+ os.environ['MKL_SERVICE_FORCE_INTEL'] = '1'
6
+ os.environ['MUJOCO_GL'] = 'egl'
7
+ from pathlib import Path
8
+ #%%
9
+ import hydra
10
+ import numpy as np
11
+ import torch
12
+
13
+ import utils
14
+ from utils import get_feature_dirname_from_configs
15
+
16
+ from video import VideoRecorder
17
+ import pickle
18
+ import time
19
+ import threading
20
+ import shutil
21
+ from logger import Logger
22
+
23
+ import wandb
24
+ from omegaconf import OmegaConf, open_dict
25
+
26
+ from replay_buffer_robot import RosbagEvalReplayBufferStorage
27
+ from lerobot.common.utils.utils import _relative_path_between
28
+
29
+ torch.backends.cudnn.benchmark = True
30
+ warnings.filterwarnings('ignore', category=DeprecationWarning)
31
+
32
+ # import specs for replay buffer
33
+ from dm_env import specs
34
+
35
+ import sys, signal
36
+ import yaml
37
+
38
+ import binomial_cis as bc
39
+
40
+ # get path of current file
41
+ current_path = os.path.dirname(os.path.realpath(__file__))
42
+ sys.path.append(os.path.join(current_path, os.pardir))
43
+ # from contact_estimation.src.utils.viz_utils import normalized_surface_normal_to_rgb, depth_map_to_im, grasped_env_dtc_map_to_im, contact_prob_map_to_im, desaturate_color_image, masked_overlay_im_list
44
+
45
+ def make_agent(obs_spec, action_spec, cfg):
46
+ cfg.obs_shape = obs_spec['pixels'].shape
47
+ dataset_statistics = None # this will be loaded from the checkpoint
48
+ try:
49
+ cfg.action_shape = action_spec.shape
50
+ except:
51
+ pass
52
+ return hydra.utils.instantiate(cfg, dataset_statistics)
53
+
54
+ class Workspace:
55
+ def __init__(self, cfg):
56
+ self.work_dir = Path.cwd()
57
+ print(f'workspace: {self.work_dir}')
58
+
59
+ signal.signal(signal.SIGINT, self.signal_handler)
60
+
61
+ self.cfg = cfg
62
+ self.loading_uncompiled_checkpoint_with_compile = False
63
+ self.loading_compiled_checkpoint_with_no_compile = False
64
+
65
+ snapshot_path = Path(self.cfg.checkpoint_weight_dir) / f'snapshot_{self.cfg.checkpoint_epoch}.pt'
66
+ self.load_checkpoint_conf(snapshot_path=snapshot_path)
67
+
68
+ # load config for action trajectories
69
+ utils.set_seed_everywhere(self.cfg.seed)
70
+ self.device = torch.device(self.cfg.device)
71
+ self.setup()
72
+
73
+ # self.agent = make_agent(self.eval_env.observation_spec(),
74
+ # self.eval_env.action_spec(), self.cfg.agent)
75
+ self.timer = utils.Timer()
76
+ # self._global_step = 0
77
+ self._global_episode = 0
78
+ self._global_epoch = 0
79
+ self.num_episode_successes = 0
80
+
81
+ self.alpha_range = [.01, .025, .05, .1]
82
+
83
+ # Need to convert hydra config to primitive container for wandb https://docs.wandb.ai/guides/integrations/hydra
84
+ with open_dict(self.cfg):
85
+ self.cfg.feature_type = get_feature_dirname_from_configs(
86
+ hydra.utils.instantiate(self.cfg.agent.config),
87
+ # hydra.utils.instantiate(self.cfg.agent.config.observation_cfg),
88
+ # self.cfg.agent.config.policy_cfg.input_shapes,
89
+ # hydra.utils.instantiate(self.cfg.agent.config.policy_cfg.action_history_encoder_config) if 'observation.action_history' in self.cfg.agent.config.policy_cfg.input_shapes else None,
90
+ )
91
+
92
+ wandb_config = OmegaConf.to_container(
93
+ self.cfg, resolve=True, throw_on_missing=True
94
+ )
95
+ # must be called before any tf summary writer is created
96
+ if self.cfg.use_wandb:
97
+ # get the run id from the final_experiment_dir directory
98
+ run_id = os.path.basename(os.path.normpath(self.cfg.final_experiment_dir))
99
+ wandb.init(project='extrinsic_contact_downstream', entity='serialexperimentsleon', job_type='eval', sync_tensorboard=self.cfg.use_tb, config=wandb_config, id=run_id)
100
+
101
+ self.logger = Logger(self.work_dir, use_tb=self.cfg.use_tb, use_wandb=self.cfg.use_wandb)
102
+
103
+ # if not self.loading_uncompiled_checkpoint_with_compile and self.cfg.agent.config.compile:
104
+ # self.agent.compile_modules()
105
+
106
+ # self.load_checkpoint(snapshot_path=snapshot_path)
107
+
108
+ # if self.loading_uncompiled_checkpoint_with_compile: # need to call compile after loading the checkpoint
109
+ # self.agent.compile_modules()
110
+
111
+ print(f"loaded agent with feature_type: {self.cfg.feature_type}")
112
+
113
+ def check_for_key_press(self):
114
+ while self.continue_keypress_thread:
115
+ inp = input("Press 'r' to restart current episode, 'n' to stop current episode and skip to next, 'q' to break entire eval\n")
116
+ if inp == 'n':
117
+ self.preempt_episode = True
118
+ print("preempting episode")
119
+ elif inp in ['', '0', '1']: # enter key
120
+ if inp in ['0', '1']:
121
+ self.num_episode_successes += int(inp)
122
+ self.proceed_after_env_reset_event.set()
123
+ print("proceeding to start episode!")
124
+ elif inp == 'q':
125
+ self.proceed_after_env_reset_event.set()
126
+ self.preempt_episode = True
127
+ self.exit_eval = True
128
+ self.continue_keypress_thread = False # will stop the keypress thread
129
+ print("quitting eval")
130
+ break
131
+ elif inp == 'r':
132
+ print('restarting episode')
133
+ self.preempt_episode = True
134
+ self.restart_episode = True
135
+ else:
136
+ print("Invalid key press, try again")
137
+
138
+ # self.keypress_input_thread.join() # wait for the keypress thread to finish
139
+
140
+ def signal_handler(self, signal, frame):
141
+ print("\nprogram exiting gracefully")
142
+ self.proceed_after_env_reset_event.set()
143
+ self.preempt_episode = True
144
+ self.exit_eval = True
145
+ self.continue_keypress_thread = False # will stop the keypress thread
146
+ self.keypress_input_thread.join() # wait for the keypress thread to finish
147
+ video_filepath = self.video_recorder.save()
148
+ # get the video file and convert to video tensor to log
149
+ self.logger.log_video('eval/video', video_filepath, self.global_step)
150
+ wandb.finish()
151
+ sys.exit(0)
152
+
153
+ def setup(self):
154
+ # create envs
155
+ self.eval_env = hydra.utils.call(self.cfg.suite.task_make_fn)
156
+ # expert_demo_config_path = os.path.join(os.path.dirname(self.cfg.expert_dataset), 'demo_config.yaml')
157
+ # self.expert_demo_config = yaml.load(open(expert_demo_config_path, 'r'), Loader=yaml.FullLoader)
158
+ # self.eval_env._env.action_trans_norm = expert_demo_config['max_translation_action_norm']
159
+ # self.eval_env._env.action_rot_norm = expert_demo_config['max_rotation_action_norm']
160
+ # self.eval_env._env.action_period = expert_demo_config['sample_period']
161
+ # print(f"setting max_translation_action_norm to {expert_demo_config['max_translation_action_norm']} and sample_period to {expert_demo_config['sample_period']}")
162
+ # print(f"setting max_rotation_action_norm to {expert_demo_config['max_rotation_action_norm']}")
163
+
164
+ # self.eval_env.set_demo_params(self.cfg.expert_dataset)
165
+
166
+ # Turn off random start
167
+ self.eval_env.random_start = False
168
+
169
+ # create replay buffer
170
+ # data_specs = [
171
+ # {
172
+ # 'observation': self.eval_env.observation_spec(),
173
+ # },
174
+ # # self.eval_env.observation_spec()['features'],
175
+ # self.eval_env.action_spec(),
176
+ # specs.Array(self.eval_env.action_spec().shape, self.eval_env.action_spec().dtype, 'vinn_action'),
177
+ # specs.Array((1, ), np.float32, 'reward'),
178
+ # specs.Array((1, ), np.float32, 'discount'),
179
+ # ]
180
+
181
+ # self.eval_replay_storage = ZarrEvalReplayBufferStorage(data_specs, self.work_dir / 'eval_buffer', debug_timestamps=self.cfg.debug_timestamps, save_buffer=self.cfg.save_buffer, debug_info_data_specs=self.eval_env.debug_info_data_specs, camera_info_dict=self.eval_env.get_camera_info_dict())
182
+ self.eval_replay_storage = RosbagEvalReplayBufferStorage(self.work_dir)
183
+
184
+ self.video_recorder = VideoRecorder(
185
+ self.work_dir if self.cfg.save_video else None,
186
+ ros_enabled=True,
187
+ fps=self.cfg.agent.config.policy_frequency,
188
+ )
189
+
190
+ print('workspace setup complete')
191
+
192
+ @property
193
+ def global_step(self):
194
+ # return self._global_step
195
+ return self.eval_env.get_global_step()
196
+
197
+ @property
198
+ def global_episode(self):
199
+ return self._global_episode
200
+
201
+ @property
202
+ def global_frame(self):
203
+ return self.global_step * self.cfg.action_repeat
204
+
205
+ @property
206
+ def global_epoch(self):
207
+ return self._global_epoch
208
+
209
+ def reset(self, eval_idx):
210
+ if not self.eval_env.enable_arm:
211
+ return np.array([0,0,0], dtype=np.float32)
212
+ self.eval_env.arm_refresh(reset=False)
213
+ # Set start position
214
+ try:
215
+ self.eval_env.set_position(self.start_pos[eval_idx])
216
+ except:
217
+ self.eval_env.arm.set_position(self.start_pos[eval_idx])
218
+ if self.eval_env.arm.keep_gripper_closed:
219
+ self.eval_env.arm.close_gripper_fully()
220
+ else:
221
+ self.eval_env.arm.open_gripper_fully()
222
+ time.sleep(0.1)
223
+ time_step = self.eval_env.step(np.zeros(self.eval_env.action_spec().shape[0], dtype=np.float32),
224
+ np.zeros(self.eval_env.action_spec().shape[0], dtype=np.float32))
225
+ return time_step
226
+
227
+ def eval(self):
228
+ # before evals start, prompt user for name of grasped object and the left book of the slot location
229
+ grasped_obj_name = input("Enter the name of the grasped object: ")
230
+ left_book_slot = input("Enter the left book slot location: ")
231
+ # update wandb config
232
+ if self.cfg.use_wandb:
233
+ wandb.config.update({'grasped_obj_name': grasped_obj_name, 'left_book_slot': left_book_slot})
234
+
235
+ self.preempt_episode = False
236
+ self.exit_eval = False
237
+ self.restart_episode = False
238
+
239
+ self.continue_keypress_thread = True
240
+ self.proceed_after_env_reset_event = threading.Event()
241
+ self.keypress_input_thread = threading.Thread(target=self.check_for_key_press)
242
+ self.keypress_input_thread.start()
243
+
244
+ # # Set model to eval mode
245
+ # self.agent.train(False)
246
+
247
+ eval_until_episode = utils.Until(self.cfg.num_eval)
248
+
249
+ self.use_action_history = False
250
+ # if "dp" in repr(self.agent) and "observation.action_history" in self.cfg.agent.config.policy_cfg.input_shapes:
251
+ if "observation.action_history" in self.cfg.agent.config.policy_cfg.input_shapes:
252
+ self.use_action_history = True
253
+
254
+ # self.eval_replay_storage._new_eval_step(0)
255
+
256
+ # if 'vinn' in repr(self.agent) or 'openloop' in repr(self.agent):
257
+ # with open(self.cfg.expert_dataset, 'rb') as f:
258
+ # if self.cfg.obs_type == 'pixels':
259
+ # self.expert_demo, _, self.expert_action, self.expert_reward = pickle.load(f)
260
+ # elif self.cfg.obs_type == 'features':
261
+ # _, self.expert_demo, self.expert_action, self.expert_reward = pickle.load(f)
262
+
263
+ # if self.cfg.action_trajectories:
264
+ # with open(self.cfg.expert_action_trajectories, 'rb') as f:
265
+ # self.expert_action = pickle.load(f)
266
+
267
+ # if isinstance(self.cfg.train_demo_idxs_list_or_num, int):
268
+ # if self.cfg.train_demo_idxs_list_or_num == -1:
269
+ # self.cfg.train_demo_idxs_list_or_num = len(self.expert_demo)
270
+ # train_demo_idxs_list_or_num = list(range(self.cfg.train_demo_idxs_list_or_num))
271
+
272
+ # self.expert_demo = self.expert_demo[train_demo_idxs_list_or_num]
273
+ # self.expert_action = self.expert_action[train_demo_idxs_list_or_num]
274
+ # self.expert_reward = self.expert_reward[train_demo_idxs_list_or_num]
275
+ # # if self.cfg.action_plans:
276
+ # # self.expert_action_plans = self.expert_action_plans[self.cfg.train_demo_idxs_list_or_num]
277
+ # # self.expert_demo = self.expert_demo[:self.cfg.num_demos]
278
+ # # self.expert_action = self.expert_action[:self.cfg.num_demos]
279
+ # # self.expert_reward = self.expert_reward[:self.cfg.num_demos]
280
+
281
+ # self.expert_demo = np.concatenate(self.expert_demo, axis=0)
282
+ # self.expert_rgb_obs = np.ascontiguousarray(np.transpose(self.expert_demo, (0,2,3,1))[:, :,:,:3].astype(np.uint8))
283
+ # self.expert_action = np.concatenate(self.expert_action, axis=0)
284
+
285
+ # self.agent.save_representations(self.expert_demo, self.expert_action, 128, config=self.expert_demo_config)
286
+
287
+ # Get start points
288
+ if self.cfg.random_start:
289
+ eval_starts = Path(self.cfg.eval_starts) / 'starts.pkl'
290
+ if eval_starts.exists():
291
+ with eval_starts.open('rb') as f:
292
+ self.start_pos = pickle.load(f)
293
+ else:
294
+ eval_starts = Path(self.cfg.eval_starts)
295
+ eval_starts.mkdir(parents=True, exist_ok=True)
296
+
297
+ # Generate start points
298
+ self.start_pos = []
299
+ try:
300
+ for _ in range(self.cfg.num_eval):
301
+ self.start_pos.append(self.eval_env.get_random_pos())
302
+ except:
303
+ for _ in range(self.cfg.num_eval):
304
+ self.start_pos.append(self.eval_env.arm.get_random_pos())
305
+
306
+ # Save start points for the task
307
+ eval_starts = eval_starts / 'starts.pkl'
308
+ with eval_starts.open('wb') as f:
309
+ pickle.dump(self.start_pos, f)
310
+
311
+ time_step = self.eval_env.reset()
312
+ # replay_thread = None
313
+ while eval_until_episode(self.global_episode) and not self.exit_eval:
314
+ # self.video_recorder.init(self.eval_env, video_filename=f'{self.global_episode}_eval.mp4')
315
+ print(f"Starting episode {self.global_episode}")
316
+ time_step = self.eval_env.reset() #Leon: need to call reset twice in case objects are trapped
317
+ self.video_recorder.init(self.eval_env, video_filename=f'{self.global_episode}_eval.mp4')
318
+ # x = input("Press Enter to continue... after reseting env")
319
+ print("Press Enter to continue... after reseting env. To rate prev episode, press 0 for failure and 1 for success")
320
+ self.proceed_after_env_reset_event.clear() # clear the event flag
321
+ self.proceed_after_env_reset_event.wait() # blocking wait for the event flag to be set
322
+ if self.global_episode > 0:
323
+ self.logger.log_metrics({'num_success': self.num_episode_successes}, self.global_step, 'eval', episode=self.global_episode)
324
+ self.logger.log_metrics({'success_rate': self.num_episode_successes/self.global_episode}, self.global_step, 'eval', episode=self.global_episode)
325
+
326
+ # log confidence intervals for success rate
327
+ k = self.num_episode_successes # number of successes
328
+ n = self.global_episode # number of trials
329
+
330
+ table_columns = []
331
+ table_data = []
332
+ for alpha in self.alpha_range:
333
+ lb = bc.binom_ci(k, n, alpha, 'lb')
334
+ ub = bc.binom_ci(k, n, alpha, 'ub')
335
+
336
+ self.logger.log_metrics({f'success_rate_lb_{alpha}': lb}, self.global_step, 'eval', episode=self.global_episode)
337
+ self.logger.log_metrics({f'success_rate_ub_{alpha}': ub}, self.global_step, 'eval', episode=self.global_episode)
338
+
339
+ time_step = self.eval_env.reset()
340
+ # debug_info_dict = self.eval_env.debug_info_dict
341
+ # if replay_thread is not None:
342
+ # # wait for the last replay thread to finish
343
+ # replay_thread.join()
344
+
345
+ # self.eval_replay_storage.add(time_step._replace(observation=time_step.observation[self.cfg.obs_type]), debug_info_dict)
346
+ # replay_thread = threading.Thread(target=self.eval_replay_storage.add, args=(time_step._replace(observation=time_step.observation[self.cfg.obs_type]), debug_info_dict))
347
+ # replay_thread = threading.Thread(target=self.eval_replay_storage.add, args=(time_step, debug_info_dict))
348
+
349
+ # replay_thread.start()
350
+ if self.cfg.random_start:
351
+ time_step = self.reset(self.global_episode)
352
+ time.sleep(2) #5)
353
+ # if 'vinn' in repr(self.agent):
354
+ # self.agent.reset()
355
+ # # self.agent.buffer.reset()
356
+ # # if self.cfg.open_loop:
357
+ # # self.agent.current_step = 0
358
+ # if 'openloop' in repr(self.agent):
359
+ # self.agent.curr_step = 0
360
+ # at start of each episode, provide zero action for policies that use action history
361
+ # shape should be (T_o, T_a, action_dim)
362
+
363
+ # while not time_step.last() and not self.preempt_episode:
364
+ self.video_recorder.ros_start_recording()
365
+ self.eval_replay_storage.start_episode()
366
+ self.eval_env.start_policy_timer()
367
+ while not self.eval_env.episode_done() and not self.preempt_episode:
368
+ # with torch.no_grad(), utils.eval_mode(self.agent):
369
+ # # if self.cfg.agent.provide_topk:
370
+ # # action, vinn_action, topk = self.agent.act(
371
+ # # time_step.observation['pixels'],
372
+ # # self.global_step,
373
+ # # eval_mode=True)
374
+ # # elif self.cfg.agent.provide_obs:
375
+ # # action, vinn_action, obs = self.agent.act(
376
+ # # time_step.observation['pixels'],
377
+ # # self.global_step,
378
+ # # eval_mode=True)
379
+ # # else:
380
+ # action, vinn_action = self.agent.act(
381
+ # time_step.observation,
382
+ # self.global_step,
383
+ # eval_mode=True,
384
+ # obs_timestamp=time_step.observation['timestamp'],
385
+ # obs_seq=time_step.observation['seq'],
386
+ # action_history=action_history,
387
+ # action_history_start_timestamp=action_history_start_timestamp,
388
+ # )
389
+ # DONT WAIT FOR POLICY TO GET AN ACTION
390
+ # we dont want to slow down grabbing obs and passing to sam/contact features
391
+
392
+ self.eval_env.run_policy_threads() # this just does a rospy sleep
393
+
394
+ # if self.use_action_history:
395
+ # action_history_start_timestamp = time_step.observation['timestamp']
396
+ # # action_history = action[:self.cfg.agent.config.policy_cfg.action_history_encoder_config.history_length, ...]
397
+ # # add n_obs_steps dimension to action_history, for now we assume n_obs_steps = 1
398
+ # # TODO: handle n_obs_steps > 1
399
+ # action_history = action[np.newaxis, ...]
400
+
401
+ # time_step = self.eval_env.step(action, vinn_action) # obs, reward after action has been taken
402
+ # debug_info_dict = self.eval_env.debug_info_dict
403
+
404
+ # time_step = self.eval_env.ros_step()
405
+
406
+ # replay_thread.join()
407
+
408
+ # time how long it takes to execute the step
409
+ # time_before_add = time.perf_counter()
410
+ # self.eval_replay_storage.add(time_step._replace(observation=time_step.observation[self.cfg.obs_type]), debug_info_dict)
411
+ # use thread to call the add function in a separate thread
412
+ # replay_thread = threading.Thread(target=self.eval_replay_storage.add, args=(time_step._replace(observation=time_step.observation[self.cfg.obs_type]), debug_info_dict))
413
+
414
+ # replay_thread = threading.Thread(target=self.eval_replay_storage.add, args=(time_step, debug_info_dict))
415
+ # replay_thread.start()
416
+
417
+ # print(f"Time to add to replay buffer: {time.perf_counter() - time_before_add}")
418
+
419
+ # self.video_recorder.record(self.eval_env)
420
+ # self._global_step += 1
421
+
422
+ self.eval_env.stop_policy_timer()
423
+
424
+ if self.restart_episode:
425
+ # means we should delete the current episode and start again
426
+ self.restart_episode = False
427
+ self.eval_replay_storage.reset_current_episode()
428
+ self.video_recorder.reset_current_episode()
429
+
430
+ else:
431
+ self.eval_replay_storage.store_current_episode()
432
+ video_filepath = self.video_recorder.save()
433
+ self.logger.log_video(f"eval/{video_filepath.name.rstrip('.mp4')}", video_filepath, self.global_step)
434
+ self._global_episode += 1
435
+
436
+ self.preempt_episode = False # reset preempt_episode flag
437
+
438
+ # self.video_recorder.save(f'{episode}_eval.mp4')
439
+ # get the video file and convert to video tensor to log
440
+
441
+ self.eval_env.reset()
442
+
443
+ print("Evaluation finished. To wrap up, rate prev episode, press 0 for failure and 1 for success")
444
+ self.proceed_after_env_reset_event.clear() # clear the event flag
445
+ self.proceed_after_env_reset_event.wait() # blocking wait for the event flag to be set
446
+ if self.global_episode > 0:
447
+ # self.logger.log_metrics({'num_success': self.num_episode_successes}, self.global_step, 'eval', episode=self.global_episode)
448
+ self.logger.log_metrics({'num_success': self.num_episode_successes}, self.global_step, 'eval', episode=self.global_episode)
449
+ self.logger.log_metrics({'success_rate': self.num_episode_successes/self.global_episode}, self.global_step, 'eval', episode=self.global_episode)
450
+
451
+ # log confidence intervals for success rate
452
+ k = self.num_episode_successes # number of successes
453
+ n = self.global_episode # number of trials
454
+
455
+ table_columns = ['success_rate']
456
+ table_data = [self.num_episode_successes/self.global_episode]
457
+ for alpha in self.alpha_range:
458
+ lb = bc.binom_ci(k, n, alpha, 'lb')
459
+ ub = bc.binom_ci(k, n, alpha, 'ub')
460
+
461
+ self.logger.log_metrics({f'success_rate_lb_{alpha}': lb}, self.global_step, 'eval', episode=self.global_episode)
462
+ self.logger.log_metrics({f'success_rate_ub_{alpha}': ub}, self.global_step, 'eval', episode=self.global_episode)
463
+
464
+ table_columns.extend([f'success_rate_lb_{alpha}', f'success_rate_ub_{alpha}'])
465
+ table_data.extend([lb, ub])
466
+
467
+ table_data = [table_data]
468
+
469
+ # seperately log as a table
470
+ wandb.log({
471
+ "eval/success_rate_ci": wandb.Table(data=table_data, columns=table_columns)
472
+ })
473
+
474
+ # also accumulate eval metrics across previous eval runs
475
+ # TODO: change wandb init to resume from an existing run!!!
476
+ run_filter={
477
+ "jobType": "eval",
478
+ "config.wandb_run_id": self.cfg.wandb_run_id,
479
+ "summary_metrics.episode": {"$gte": 5},
480
+ "config.checkpoint_epoch": self.cfg.checkpoint_epoch,
481
+ "state": "finished",
482
+ # "config.grasped_obj_name": grasped_obj_name,
483
+ # "config.left_book_slot": left_book_slot,
484
+ }
485
+
486
+ api = wandb.Api()
487
+ filtered_runs = api.runs("serialexperimentsleon/extrinsic_contact_downstream", filters=run_filter)
488
+ total_num_successes = self.num_episode_successes
489
+ total_num_episodes = self.global_episode
490
+ list_of_historical_run_ids = []
491
+ if len(filtered_runs) > 0:
492
+ for filtered_run in filtered_runs:
493
+ total_num_successes += filtered_run.summary_metrics['eval/num_success']
494
+ # total_num_episodes += filtered_run.summary_metrics['episode']
495
+ total_num_episodes += filtered_run.config['num_eval']
496
+ list_of_historical_run_ids.append(filtered_run.id)
497
+
498
+ wandb.summary['total_num_successes'] = total_num_successes
499
+ wandb.summary['total_num_episodes'] = total_num_episodes
500
+ wandb.summary['total_success_rate'] = total_num_successes/total_num_episodes
501
+
502
+ # log the accumulated metrics as a table
503
+ total_table_columns = ['total_num_successes', 'total_num_episodes', 'total_success_rate']
504
+ total_table_data = [total_num_successes, total_num_episodes, total_num_successes/total_num_episodes]
505
+ self.logger.log_metrics({'total_success_rate': total_num_successes/total_num_episodes}, self.global_step, 'eval', episode=total_num_episodes)
506
+
507
+ for alpha in self.alpha_range:
508
+ lb = bc.binom_ci(total_num_successes, total_num_episodes, alpha, 'lb')
509
+ ub = bc.binom_ci(total_num_successes, total_num_episodes, alpha, 'ub')
510
+ total_table_columns.extend([f'total_success_rate_lb_{alpha}', f'total_success_rate_ub_{alpha}'])
511
+ total_table_data.extend([lb, ub])
512
+ wandb.summary[f'total_success_rate_lb_{alpha}'] = lb
513
+ wandb.summary[f'total_success_rate_ub_{alpha}'] = ub
514
+
515
+ self.logger.log_metrics({f'total_success_rate_lb_{alpha}': lb}, self.global_step, 'eval', episode=total_num_episodes)
516
+ self.logger.log_metrics({f'total_success_rate_ub_{alpha}': ub}, self.global_step, 'eval', episode=total_num_episodes)
517
+
518
+ total_table_data = [total_table_data]
519
+ wandb.log({
520
+ 'eval/total_success_rate_ci': wandb.Table(data=total_table_data, columns=total_table_columns)
521
+ })
522
+
523
+ self.continue_keypress_thread = False # will stop the keypress thread
524
+ self.keypress_input_thread.join() # wait for the keypress thread to finish
525
+
526
+ def load_checkpoint_conf(self, snapshot_path):
527
+ config_path = snapshot_path.parent / 'config.yaml'
528
+ if not config_path.exists():
529
+ raise FileNotFoundError(f'No snapshot conf found at {config_path}')
530
+ else:
531
+ # load the omegaconf config
532
+ hydra.core.global_hydra.GlobalHydra.instance().clear()
533
+ hydra.initialize(
534
+ str(_relative_path_between(Path(config_path).absolute().parent, Path(__file__).absolute().parent)),
535
+ )
536
+ cfg = hydra.compose(Path(config_path).stem)
537
+ from deepdiff import DeepDiff
538
+ from omegaconf import open_dict
539
+ diff = DeepDiff(OmegaConf.to_container(cfg), OmegaConf.to_container(self.cfg)) # old, new
540
+ # import re
541
+ overwriteable_keys = [f"root{overwritable_key}" for overwritable_key in ["['use_wandb']", "['path_to_depth_extrinsics']", "['eval']", "['root_dir']", "['wandb_notes']", "['agent']['config']['train_cfg']['use_amp']", "['agent']['config']['compile']", "['agent']['config']['policy_cfg']['num_inference_steps']"]]
542
+ if "values_changed" in diff:
543
+ # top_k_checkpoints, wandb_notes, agent.config.train_cfg.use_amp, save_snapshot_every_epochs_diffusion, check_topk_every_epochs_diffusion, validate_diffusion_on_action_loss_every_epochs, train_eval_diffusion_on_action_loss_every_epochs, validate_every_epochs_diffusion
544
+ # for keys above, overwrite the old config with the new config
545
+ for k, v in diff['values_changed'].items():
546
+ # replace any keys that are under "root['suite']"
547
+ if k in overwriteable_keys or k.startswith("root['suite']"):
548
+ print(f"Found changed key {k} with value {v}. Overwriting old checkpoint config")
549
+ if k == "root['agent']['config']['compile']":
550
+ if diff['values_changed'][k]['new_value']:
551
+ self.loading_uncompiled_checkpoint_with_compile = True
552
+ elif not diff['values_changed'][k]['new_value']:
553
+ # raise ValueError("Cannot load a compiled checkpoint without compile")
554
+ self.loading_compiled_checkpoint_with_no_compile = True
555
+ exec(f"{k.replace('root[', 'cfg[')} = {k.replace('root[', 'self.cfg[')}")
556
+ # for any new values, update the old checkpoint config
557
+ if "dictionary_item_added" in diff:
558
+ for new_key in diff['dictionary_item_added']: # this is a list
559
+ # if new_key == "root['suite']['task_make_fn']['observation_cfg']":
560
+ if new_key == "root['suite']['task_make_fn']['agent_policy_cfg']":
561
+ # pass the agents observation_cfg to the suite task_make_fn
562
+ with open_dict(cfg): # to allow addition of non-existing keys
563
+ # cfg.suite.task_make_fn.observation_cfg = cfg.agent.config.observation_cfg
564
+ cfg.suite.task_make_fn.agent_policy_cfg = cfg.agent.config
565
+ continue
566
+ elif "['agent']['config']['policy_cfg']['input_shapes']" in new_key:
567
+ # skip adding the new key if it is the input_shapes of the policy_cfg
568
+ continue
569
+ else:
570
+ print(f"Found new key {new_key} with value {eval(new_key.replace('root[', 'self.cfg['))}. Adding to checkpoint config")
571
+ # eval(new_key.replace('root', 'cfg')) = eval(new_key.replace('root', 'self.cfg'))
572
+ if new_key == "root['agent']['config']['compile']":
573
+ if self.cfg.agent.config.compile:
574
+ self.loading_uncompiled_checkpoint_with_compile = True
575
+
576
+ with open_dict(cfg):
577
+ exec(f"{new_key.replace('root[', 'cfg[')}={new_key.replace('root[', 'self.cfg[')}")
578
+ self.cfg = cfg
579
+
580
+ def load_checkpoint(self, snapshot_path, bc=False):
581
+ print(f'resuming {repr(self.agent)}: {snapshot_path}')
582
+ with snapshot_path.open('rb') as f:
583
+ payload = torch.load(f)
584
+ agent_payload = {}
585
+ for k, v in payload.items():
586
+ if k not in self.__dict__:
587
+ agent_payload[k] = v
588
+ elif k == '_global_epoch':
589
+ self._global_epoch = v
590
+ print(f'loaded epoch: {v}')
591
+ if self.cfg.use_wandb:
592
+ # add to config of wandb
593
+ wandb.config.update({'epoch': v})
594
+
595
+ # self.agent.load_snapshot_eval(agent_payload, bc)
596
+
597
+ @hydra.main(config_path='cfgs', config_name='config_eval')
598
+ def main(cfg):
599
+ from eval_robot import Workspace as W
600
+ root_dir = Path.cwd()
601
+ workspace = W(cfg)
602
+
603
+ workspace.eval()
604
+
605
+ if __name__ == '__main__':
606
+ main()
nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/files/media/videos/eval/0_eval_0_9b28e537c714f414ede9.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9b28e537c714f414ede9ebbbc7da92ec34cde9fa3391484321848b114cabc505
3
+ size 1475941
nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/files/media/videos/eval/1_eval_1_ea5929cab6224759260c.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ea5929cab6224759260c660ed866bdf16ef354d196faba0bd4d3062847381cfe
3
+ size 1478121
nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/files/media/videos/eval/2_eval_2_5dc2224e3d6c0a1bac85.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5dc2224e3d6c0a1bac85ed67f34d58d253381326fd534bc0f4a132735437246d
3
+ size 1473697
nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/files/media/videos/eval/3_eval_3_d7365acda7abf65fdffc.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d7365acda7abf65fdffc37e78f5f71610b644f7286226caf3dfadf4c836d4798
3
+ size 1505668
nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/files/media/videos/eval/4_eval_4_86fd9cb181be35cfea37.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:86fd9cb181be35cfea37fd46ca43b852bedc04d329d5a1d062319f2c3242411a
3
+ size 1480928
nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/logs/debug-internal.log ADDED
The diff for this file is too large to render. See raw diff
 
nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/logs/debug.log ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 2025-01-21 21:45:08,616 INFO MainThread:2655690 [wandb_setup.py:_flush():76] Current SDK version is 0.17.5
2
+ 2025-01-21 21:45:08,616 INFO MainThread:2655690 [wandb_setup.py:_flush():76] Configure stats pid to 2655690
3
+ 2025-01-21 21:45:08,616 INFO MainThread:2655690 [wandb_setup.py:_flush():76] Loading settings from /home/leonmkim/.config/wandb/settings
4
+ 2025-01-21 21:45:08,616 INFO MainThread:2655690 [wandb_setup.py:_flush():76] Loading settings from /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/4295_1/nf7i3zuf/wandb/settings
5
+ 2025-01-21 21:45:08,616 INFO MainThread:2655690 [wandb_setup.py:_flush():76] Loading settings from environment variables: {}
6
+ 2025-01-21 21:45:08,616 INFO MainThread:2655690 [wandb_setup.py:_flush():76] Applying setup settings: {'_disable_service': False}
7
+ 2025-01-21 21:45:08,616 INFO MainThread:2655690 [wandb_setup.py:_flush():76] Inferring run settings from compute environment: {'program_relpath': 'FISH/eval_robot.py', 'program_abspath': '/home/leonmkim/fish_leon/FISH/eval_robot.py', 'program': '/home/leonmkim/fish_leon/FISH/eval_robot.py'}
8
+ 2025-01-21 21:45:08,616 INFO MainThread:2655690 [wandb_setup.py:_flush():76] Applying login settings: {}
9
+ 2025-01-21 21:45:08,617 INFO MainThread:2655690 [wandb_init.py:_log_setup():529] Logging user logs to /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/4295_1/nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/logs/debug.log
10
+ 2025-01-21 21:45:08,617 INFO MainThread:2655690 [wandb_init.py:_log_setup():530] Logging internal logs to /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/4295_1/nf7i3zuf/wandb/run-20250121_214508-nf7i3zuf/logs/debug-internal.log
11
+ 2025-01-21 21:45:08,617 INFO MainThread:2655690 [wandb_init.py:init():569] calling init triggers
12
+ 2025-01-21 21:45:08,617 INFO MainThread:2655690 [wandb_init.py:init():576] wandb.init called with sweep_config: {}
13
+ config: {'root_dir': '/home/leonmkim/fish_leon', 'replay_buffer_size': 150000, 'replay_buffer_num_workers': 2, 'nstep': 3, 'batch_size': 128, 'seed': 1, 'dataset_shuffle_seed': 0, 'device': 'cuda', 'save_video': True, 'save_train_video': True, 'use_tb': True, 'use_wandb': True, 'wandb_run_id': '4295_1', 'wandb_notes': '4295_1_restarted_1', 'eval': True, 'true_action_history': False, 'train_pad_after': 4, 'process_contact_features': True, 'obs_type': 'pixels', 'use_color': False, 'use_depth': True, 'use_masks': True, 'mask_list': ['EE_obj_mask'], 'mask_representation': 'channels', 'crop_hw': [144, 144], 'crop_down_offset': 48, 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'add_crop_binary_mask': False, 'add_coord_conv_map': False, 'use_context_color': False, 'use_context_depth': False, 'use_context_segmask': False, 'context_color_crop_type': None, 'context_depth_crop_type': None, 'context_segmask_crop_type': None, 'context_add_crop_binary_mask': False, 'context_add_coord_conv_map': False, 'use_contact_map': True, 'use_sdf_maps': True, 'use_normals_maps': True, 'which_objects': 'both', 'max_contact_prob': 0.1, 'max_depth': 2.0, 'grasped_dtc_max_value': 0.2, 'env_dtc_max_value': 0.4, 'grasped_normals_mask_max_dtc_value': 0.2, 'env_normals_mask_max_dtc_value': 0.4, 'clamp_dtc': True, 'dtc_adaptive_normalization': False, 'mask_normals_within_sdf': True, 'adaptive_normals_mask': True, 'learnable_contact_preprocess_params': True, 'contact_model_name': 'local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9', 'contact_estimation_model_ckpt_path': '~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt', 'encoder_type': 'small', 'debug_timestamps': False, 'open_loop': False, 'action_trajectories': True, 'stop_after_action': False, 'interpolation_frequency': 25, 'policy_frequency': 5, 'wait_for_new_camera_frames': True, 'baseline': False, 'train_demo_idxs_list_or_num': -1, 'log_train_every_steps': 25, 'name_of_expert_demo': '120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act', 'expert_dataset_dirpath': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act', 'store_dataset_in_memory': False, 'expert_dataset': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr', 'action_key': 'action_trajectory_25hz', 'semantic_demo_grouping_name': 'semantic_demo_grouping.yaml', 'semantic_demo_grouping': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/semantic_demo_grouping.yaml', 'include_groups_list': 'all', 'expert_dataset_config': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demo_config.yaml', 'name_of_valid_demo': '120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act', 'valid_dataset_dir': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr', 'valid_demo_idxs_list_or_num': None, 'val_num_groups': 7, 'load_bc': True, 'checkpoint_epoch_list': [99, 199, 299, 399, 499, 599, 699, 799, 899, 999, 1249, 1499, 1749, 1999, 2999, 3999, 4999, 5999, 6999, 7999, 8999, 9999], 'snapshot_root_dir': '/mnt/grasp_high_usage/leonmkim/contact_estimation/FISH', 'save_snapshot': True, 'save_last_snapshot': True, 'save_snapshot_when_done': True, 'top_k_checkpoints': 5, 'save_snapshot_link_to_weights_dir': 'deprecated', 'restore_missing_checkpoint': None, 'bc_regularize': False, 'bc_weight_type': 'qfilter', 'experiment_dir': './exp_local/frankagym_pixels/FrankaInsertion-v1/4295_1', 'agent': {'_target_': 'agent.diffusion_policy.DiffusionPolicyAgent', 'name': 'diffusion_policy', 'load_checkpoint': True, 'device': 'cuda', 'n_obs_steps': 1, 'suite_name': 'frankagym', 'obs_type': 'pixels', 'enable_arm': True, 'enable_camera': True, 'use_tb': True, 'desired_image_shape': [13, 180, 240], 'orig_cam_shape': [3, 240, 320], 'config': {'_target_': 'agent.diffusion_policy.DiffusionPolicyAgentConfig', 'compile': False, 'device': 'cuda', 'cam_resize_shape': [13, 180, 240], 'orig_cam_shape': [3, 240, 320], 'policy_frequency': 5, 'interpolation_frequency': 25, 'policy_cfg': {'_target_': 'lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig', 'n_obs_steps': 1, 'horizon': 36, 'n_action_steps': 36, 'output_shapes': {'action': [7]}, 'input_normalization_modes': {'observation.image': 'mean_std', 'observation.state': 'min_max', 'observation.action_history': 'min_max'}, 'output_normalization_modes': {'action': 'min_max'}, 'vision_backbone': 'resnet18', 'crop_distractors_tlhw': [32, 68, 174, 174], 'pretrained_backbone_weights': None, 'transforms': [{'_target_': 'torchaug.transforms.RandomAffine', 'degrees': [-5, 5], 'translate': [0.05, 0.05], 'batch_transform': True, 'num_chunks': -1, 'batch_inplace': True}, {'_target_': 'torchaug.transforms.RandomColorJitter', 'brightness': 0.3, 'contrast': 0.4, 'saturation': 0.5, 'hue': 0.08, 'batch_transform': True, 'num_chunks': -1, 'batch_inplace': True}], 'use_group_norm': True, 'spatial_softmax_num_keypoints': 32, 'action_history_encoder_config': {'_target_': 'lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig', 'in_channels': 7, 'out_channels': 32, 'history_length': 6, 'kernel_size': 5, 'downsample_kernel_size': 3, 'downsample_stride': 2, 'downsample_padding': 1}, 'down_dims': [256, 512, 1024], 'kernel_size': 5, 'n_groups': 8, 'diffusion_step_embed_dim': 128, 'use_film_scale_modulation': True, 'noise_scheduler_type': 'DDIM', 'beta_schedule': 'squaredcos_cap_v2', 'beta_start': 0.0001, 'beta_end': 0.02, 'prediction_type': 'epsilon', 'clip_sample': True, 'clip_sample_range': 1.0, 'num_train_timesteps': 50, 'num_inference_steps': 10, 'do_mask_loss_for_padding': False, 'input_shapes': {'observation.image': [13, 180, 240], 'context_observation.image': [13, 180, 240], 'observation.state': [8], 'observation.action_history': [7]}}, 'train_cfg': {'_target_': 'utils.TrainConfig', 'lr': 0.0001, 'lr_scheduler': 'cosine', 'lr_warmup_steps': 500, 'adam_betas': [0.95, 0.999], 'adam_eps': 1e-08, 'adam_weight_decay': 1e-06, 'grad_clip_norm': 10, 'offline_steps': 1000000, 'use_amp': True}, 'observation_cfg': {'_target_': 'agent.encoder.VisualFeatureSet', 'use_depth': True, 'use_color': False, 'mask_input_dict': {'_target_': 'agent.encoder.MaskInputDict', 'enable': True, 'representation': 'channels', 'mask_list': ['EE_obj_mask']}, 'crop_input_config': {'_target_': 'agent.encoder.CropInputConfig', 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'crop_hw': [144, 144], 'crop_down_offset': 48, 'add_crop_binary_mask': False, 'add_coord_conv_map': False}, 'context_input_config': {'_target_': 'agent.encoder.ContextInputConfig', 'use_color': False, 'use_depth': False, 'mask_input_dict': {'_target_': 'agent.encoder.MaskInputDict', 'enable': False, 'representation': 'channels', 'mask_list': ['EE_obj_mask']}, 'crop_input_config': {'_target_': 'agent.encoder.CropInputConfig', 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'crop_hw': [144, 144], 'crop_down_offset': 48, 'add_crop_binary_mask': False, 'add_coord_conv_map': False}}, 'mask_soft_approx_scheduler_config': {'_target_': 'agent.encoder.MaskSoftApproxSchedulerConfig', 'num_steps': 40000, 'initial_value': 10.0, 'final_value': 1000.0, 'interpolation_scheme': 'cosine'}, 'use_contact_map': True, 'use_sdf_maps': True, 'use_normals_maps': True, 'which_objects': 'both', 'grasped_dtc_max_value': 0.2, 'env_dtc_max_value': 0.4, 'grasped_normals_mask_max_dtc_value': 0.2, 'env_normals_mask_max_dtc_value': 0.4, 'clamp_dtc': True, 'max_contact_prob': 0.1, 'mask_normals_within_sdf': True, 'dtc_adaptive_normalization': False, 'adaptive_normals_mask': True, 'max_depth': 2.0, 'image_shape': [13, 180, 240], 'learnable_contact_preprocess_params': True, 'learning_rate': 0.0001, 'weight_decay': 0.0, 'contact_model_name': 'local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9', 'zero_centered': False, 'crop_distractors_tlhw': [32, 68, 174, 174]}}}, 'suite': {'suite': 'frankagym', 'name': 'frankagym', 'frame_stack': 1, 'action_repeat': 1, 'discount': 0.99, 'hidden_dim': 1024, 'num_train_frames': 2010, 'num_seed_frames': 260, 'num_train_epochs': 5000, 'validate_every_epochs': 100, 'validate_diffusion_on_action_loss_every_epochs': 500, 'train_eval_diffusion_on_action_loss_every_epochs': 500, 'check_topk_every_epochs': 10, 'save_snapshot_every_epochs': 5000, 'eval_every_frames': 2000, 'num_eval_episodes': 5, 'save_snapshot': True, 'wait_for_user_to_start_episode': True, 'task_make_fn': {'_target_': 'suite.frankagym.make', 'name': 'FrankaInsertion-v1', 'height': 240, 'width': 320, 'frame_stack': 1, 'action_repeat': 1, 'seed': 1, 'enable_arm': True, 'enable_gripper': True, 'start_with_gripper_open': True, 'enable_camera': True, 'path_to_depth_extrinsics': '~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy', 'contact_estimation_model_ckpt_path': '~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt', 'x_limit': [0.2, 0.7], 'y_limit': [-0.4, 0.4], 'z_limit': [-0.05, 0.55], 'device': 'cuda', 'interpolation_frequency': 25, 'policy_frequency': 5, 'debug_timestamps': False, 'stop_after_action': False, 'open_loop': False, 'wait_for_new_camera_frames': True, 'action_key': 'action_trajectory_25hz', 'action_trajectory_horizon': 36, 'action_trajectories': True, 'path_to_zarr_dataset': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr', 'agent_policy_cfg': {'_target_': 'agent.diffusion_policy.DiffusionPolicyAgentConfig', 'compile': False, 'device': 'cuda', 'cam_resize_shape': [13, 180, 240], 'orig_cam_shape': [3, 240, 320], 'policy_frequency': 5, 'interpolation_frequency': 25, 'policy_cfg': {'_target_': 'lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig', 'n_obs_steps': 1, 'horizon': 36, 'n_action_steps': 36, 'output_shapes': {'action': [7]}, 'input_normalization_modes': {'observation.image': 'mean_std', 'observation.state': 'min_max', 'observation.action_history': 'min_max'}, 'output_normalization_modes': {'action': 'min_max'}, 'vision_backbone': 'resnet18', 'crop_distractors_tlhw': [32, 68, 174, 174], 'pretrained_backbone_weights': None, 'transforms': [{'_target_': 'torchaug.transforms.RandomAffine', 'degrees': [-5, 5], 'translate': [0.05, 0.05], 'batch_transform': True, 'num_chunks': -1, 'batch_inplace': True}, {'_target_': 'torchaug.transforms.RandomColorJitter', 'brightness': 0.3, 'contrast': 0.4, 'saturation': 0.5, 'hue': 0.08, 'batch_transform': True, 'num_chunks': -1, 'batch_inplace': True}], 'use_group_norm': True, 'spatial_softmax_num_keypoints': 32, 'action_history_encoder_config': {'_target_': 'lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig', 'in_channels': 7, 'out_channels': 32, 'history_length': 6, 'kernel_size': 5, 'downsample_kernel_size': 3, 'downsample_stride': 2, 'downsample_padding': 1}, 'down_dims': [256, 512, 1024], 'kernel_size': 5, 'n_groups': 8, 'diffusion_step_embed_dim': 128, 'use_film_scale_modulation': True, 'noise_scheduler_type': 'DDIM', 'beta_schedule': 'squaredcos_cap_v2', 'beta_start': 0.0001, 'beta_end': 0.02, 'prediction_type': 'epsilon', 'clip_sample': True, 'clip_sample_range': 1.0, 'num_train_timesteps': 50, 'num_inference_steps': 10, 'do_mask_loss_for_padding': False, 'input_shapes': {'observation.image': [13, 180, 240], 'context_observation.image': [13, 180, 240], 'observation.state': [8], 'observation.action_history': [7]}}, 'train_cfg': {'_target_': 'utils.TrainConfig', 'lr': 0.0001, 'lr_scheduler': 'cosine', 'lr_warmup_steps': 500, 'adam_betas': [0.95, 0.999], 'adam_eps': 1e-08, 'adam_weight_decay': 1e-06, 'grad_clip_norm': 10, 'offline_steps': 1000000, 'use_amp': True}, 'observation_cfg': {'_target_': 'agent.encoder.VisualFeatureSet', 'use_depth': True, 'use_color': False, 'mask_input_dict': {'_target_': 'agent.encoder.MaskInputDict', 'enable': True, 'representation': 'channels', 'mask_list': ['EE_obj_mask']}, 'crop_input_config': {'_target_': 'agent.encoder.CropInputConfig', 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'crop_hw': [144, 144], 'crop_down_offset': 48, 'add_crop_binary_mask': False, 'add_coord_conv_map': False}, 'context_input_config': {'_target_': 'agent.encoder.ContextInputConfig', 'use_color': False, 'use_depth': False, 'mask_input_dict': {'_target_': 'agent.encoder.MaskInputDict', 'enable': False, 'representation': 'channels', 'mask_list': ['EE_obj_mask']}, 'crop_input_config': {'_target_': 'agent.encoder.CropInputConfig', 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'crop_hw': [144, 144], 'crop_down_offset': 48, 'add_crop_binary_mask': False, 'add_coord_conv_map': False}}, 'mask_soft_approx_scheduler_config': {'_target_': 'agent.encoder.MaskSoftApproxSchedulerConfig', 'num_steps': 40000, 'initial_value': 10.0, 'final_value': 1000.0, 'interpolation_scheme': 'cosine'}, 'use_contact_map': True, 'use_sdf_maps': True, 'use_normals_maps': True, 'which_objects': 'both', 'grasped_dtc_max_value': 0.2, 'env_dtc_max_value': 0.4, 'grasped_normals_mask_max_dtc_value': 0.2, 'env_normals_mask_max_dtc_value': 0.4, 'clamp_dtc': True, 'max_contact_prob': 0.1, 'mask_normals_within_sdf': True, 'dtc_adaptive_normalization': False, 'adaptive_normals_mask': True, 'max_depth': 2.0, 'image_shape': [13, 180, 240], 'learnable_contact_preprocess_params': True, 'learning_rate': 0.0001, 'weight_decay': 0.0, 'contact_model_name': 'local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9', 'zero_centered': False, 'crop_distractors_tlhw': [32, 68, 174, 174]}}, 'true_action_history': False}}, 'num_train_frames_bc': 50000, 'num_train_frames_drq': 1100000, 'stddev_schedule_drq': 'linear(1.0,0.1,100000)', 'task_name': 'FrankaInsertion-v1', 'num_train_frames_vinn': 25000, 'num_train_frames_diffusion': 1000000, 'num_train_epochs_bc': 5000, 'num_train_epochs_diffusion': 15000, 'validate_every_epochs_bc': 5, 'validate_every_epochs_diffusion': 250, 'validate_diffusion_on_action_loss_every_epochs': 250, 'train_eval_diffusion_on_action_loss_every_epochs': 250, 'check_topk_every_epochs': 5, 'check_topk_every_epochs_diffusion': 250, 'save_snapshot_every_epochs_diffusion': 1500, 'x_limit': [0.2, 0.7], 'y_limit': [-0.4, 0.4], 'z_limit': [-0.05, 0.55], 'home_displacement': [0.55, 0.0, 0.55, 180.0, 0.0, 0.0], 'enable_gripper': True, 'start_with_gripper_open': True, 'offset_mask': [1, 1, 1, 1, 1, 1], 'path_to_depth_extrinsics': '~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy', 'test': {'username': 'leonmkim', 'hostname': 'grasp-login1', 'name_of_expert_demo': '112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act', 'root_dir': '~/fish_leon', 'expert_dataset_dirpath': '~/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act', 'expert_dataset': '~/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr', 'semantic_demo_grouping_name': 'semantic_demo_grouping.yaml', 'semantic_demo_grouping': '~/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/semantic_demo_grouping.yaml', 'include_groups_list': 'all', 'batch_size': 128, 'store_dataset_in_memory': False, 'use_tb': True, 'local_snapshot_root_dir': '/mnt/bighdd/fish_contact_backup', 'local_snapshot_dir': '/mnt/bighdd/fish_contact_backup/exp_local/frankagym_pixels/FrankaInsertion-v1', 'resume_wandb_run': False}, 'feature_type': '180x240_crpdstlhw24x51x130x130_1_D_2.0_msk_channels_EE_obj_mask_cntct_0.1_DTC_clmpd_lrnbl_nrmls_DTCmask_adpt_lrnbl_both_lr_0.0001_wd_0.0_local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9_acthist_hst6_out32_dwnkrnl3_dwnstrd2_dwnpd1', 'save_buffer': True, 'num_eval': 5, 'random_start': False, 'eval_starts': '/home/leonmkim/fish_leon/FISH/eval_starts/frankagym_pixels/FrankaInsertion-v1', 'num_valid_demos': None, 'load_checkpoint': True, 'checkpoint_epoch': 7500, 'load_residual_weight': False, 'checkpoint_root_dir': '/home/leonmkim/fish_leon/FISH', 'checkpoint_weight_dir': '/home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/4295_1', 'residual_weight': '/home/leonmkim/fish_leon/FISH/weights/frankagym_pixels/FrankaInsertion-v1/weight.pt', 'final_experiment_dir': './exp_local/frankagym_pixels/FrankaInsertion-v1/4295_1/nf7i3zuf'}
14
+ 2025-01-21 21:45:08,617 INFO MainThread:2655690 [wandb_init.py:init():619] starting backend
15
+ 2025-01-21 21:45:08,617 INFO MainThread:2655690 [wandb_init.py:init():623] setting up manager
16
+ 2025-01-21 21:45:08,623 INFO MainThread:2655690 [backend.py:_multiprocessing_setup():105] multiprocessing start_methods=fork,spawn,forkserver, using: spawn
17
+ 2025-01-21 21:45:08,624 INFO MainThread:2655690 [wandb_init.py:init():631] backend started and connected
18
+ 2025-01-21 21:45:08,635 INFO MainThread:2655690 [wandb_init.py:init():720] updated telemetry
19
+ 2025-01-21 21:45:08,642 INFO MainThread:2655690 [wandb_init.py:init():753] communicating run to backend with 90.0 second timeout
20
+ 2025-01-21 21:45:08,935 INFO MainThread:2655690 [wandb_run.py:_on_init():2435] communicating current version
21
+ 2025-01-21 21:45:09,001 INFO MainThread:2655690 [wandb_run.py:_on_init():2444] got version response upgrade_message: "wandb version 0.19.4 is available! To upgrade, please run:\n $ pip install wandb --upgrade"
22
+
23
+ 2025-01-21 21:45:09,001 INFO MainThread:2655690 [wandb_init.py:init():804] starting run threads in backend
24
+ 2025-01-21 21:45:09,329 INFO MainThread:2655690 [wandb_run.py:_console_start():2413] atexit reg
25
+ 2025-01-21 21:45:09,330 INFO MainThread:2655690 [wandb_run.py:_redirect():2255] redirect: wrap_raw
26
+ 2025-01-21 21:45:09,330 INFO MainThread:2655690 [wandb_run.py:_redirect():2320] Wrapping output streams.
27
+ 2025-01-21 21:45:09,330 INFO MainThread:2655690 [wandb_run.py:_redirect():2345] Redirects installed.
28
+ 2025-01-21 21:45:09,331 INFO MainThread:2655690 [wandb_init.py:init():847] run started, returning control to user process
29
+ 2025-01-21 21:45:09,331 INFO MainThread:2655690 [wandb_run.py:_tensorboard_callback():1544] tensorboard callback: /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/4295_1/nf7i3zuf/tb, True
30
+ 2025-01-21 21:45:15,324 INFO MainThread:2655690 [wandb_run.py:_config_callback():1382] config_cb None None {'grasped_obj_name': 'greece', 'left_book_slot': 'twodim'}
31
+ 2025-01-21 21:50:15,899 WARNING MsgRouterThr:2655690 [router.py:message_loop():77] message_loop has been closed
tvfn1k3b/.hydra/config.yaml ADDED
@@ -0,0 +1,352 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ root_dir: /home/${oc.env:USER}/fish_leon
2
+ nstep: 3
3
+ seed: 41
4
+ dataset_shuffle_seed: ${seed}
5
+ device: cuda
6
+ save_video: true
7
+ save_buffer: true
8
+ use_tb: true
9
+ baseline: false
10
+ use_wandb: true
11
+ eval: true
12
+ process_contact_features: ${eval}
13
+ obs_type: pixels
14
+ use_color: true
15
+ use_depth: true
16
+ use_masks: false
17
+ mask_list:
18
+ - EE_obj_mask
19
+ mask_representation: channels
20
+ crop_hw:
21
+ - 144
22
+ - 144
23
+ crop_down_offset: 48
24
+ color_crop_type: null
25
+ depth_crop_type: null
26
+ segmask_crop_type: null
27
+ add_crop_binary_mask: false
28
+ add_coord_conv_map: false
29
+ use_context_color: false
30
+ use_context_depth: false
31
+ use_context_segmask: false
32
+ context_color_crop_type: null
33
+ context_depth_crop_type: null
34
+ context_segmask_crop_type: null
35
+ context_add_crop_binary_mask: false
36
+ context_add_coord_conv_map: false
37
+ use_contact_map: false
38
+ use_sdf_maps: false
39
+ use_normals_maps: false
40
+ which_objects: both
41
+ max_contact_prob: 0.1
42
+ max_depth: 2.0
43
+ grasped_dtc_max_value: 0.105
44
+ env_dtc_max_value: 0.425
45
+ grasped_normals_mask_max_dtc_value: 0.105
46
+ env_normals_mask_max_dtc_value: 0.425
47
+ clamp_dtc: true
48
+ dtc_adaptive_normalization: false
49
+ mask_normals_within_sdf: true
50
+ adaptive_normals_mask: true
51
+ learnable_contact_preprocess_params: false
52
+ contact_model_name: local_multitask_outhd64all_home_crop_h144w144d48_ctxt_seed_183386_epoch_9
53
+ contact_estimation_model_ckpt_path: ~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt
54
+ num_eval: 5
55
+ debug_timestamps: false
56
+ open_loop: false
57
+ action_trajectories: true
58
+ stop_after_action: false
59
+ interpolation_frequency: 25
60
+ policy_frequency: 5
61
+ wait_for_new_camera_frames: true
62
+ random_start: false
63
+ eval_starts: ${root_dir}/FISH/eval_starts/${suite.name}_${obs_type}/${task_name}
64
+ train_demo_idxs_list_or_num: null
65
+ num_valid_demos: null
66
+ val_num_groups: 3
67
+ name_of_expert_demo: 112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
68
+ expert_dataset_dirpath: ${root_dir}/FISH/expert_demos/${suite.name}/${task_name}/${name_of_expert_demo}
69
+ expert_dataset: ${expert_dataset_dirpath}/demos.zarr
70
+ action_key: ${oc.if_else:${action_trajectories}, 'action_trajectory_${interpolation_frequency}hz',
71
+ 'action'}
72
+ semantic_demo_grouping_name: semantic_demo_grouping.yaml
73
+ semantic_demo_grouping: ${expert_dataset_dirpath}/${semantic_demo_grouping_name}
74
+ expert_dataset_config: ${expert_dataset_dirpath}/demo_config.yaml
75
+ bc_regularize: false
76
+ bc_weight_type: qfilter
77
+ load_checkpoint: ${agent.load_checkpoint}
78
+ wandb_run_id: '4295_1'
79
+ true_action_history: false
80
+ wandb_notes: null
81
+ checkpoint_epoch: 7500
82
+ load_residual_weight: false
83
+ checkpoint_root_dir: /home/${oc.env:USER}/fish_leon/FISH
84
+ checkpoint_weight_dir: ${checkpoint_root_dir}/exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
85
+ residual_weight: ${root_dir}/FISH/weights/${suite.name}_${obs_type}/${task_name}/weight.pt
86
+ experiment_dir: ./exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
87
+ final_experiment_dir: ${experiment_dir}/${oc.generate_run_id:}
88
+ agent:
89
+ _target_: agent.diffusion_policy.DiffusionPolicyAgent
90
+ name: diffusion_policy
91
+ load_checkpoint: ${eval}
92
+ device: ${device}
93
+ n_obs_steps: ${.config.policy_cfg.n_obs_steps}
94
+ suite_name: ${suite.name}
95
+ obs_type: ${obs_type}
96
+ enable_arm: ${eval}
97
+ enable_camera: ${eval}
98
+ use_tb: ${use_tb}
99
+ desired_image_shape:
100
+ - 13
101
+ - 180
102
+ - 240
103
+ orig_cam_shape:
104
+ - 3
105
+ - 240
106
+ - 320
107
+ config:
108
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
109
+ compile: false
110
+ device: ${device}
111
+ cam_resize_shape: ${agent.desired_image_shape}
112
+ orig_cam_shape: ${agent.orig_cam_shape}
113
+ policy_frequency: ${policy_frequency}
114
+ interpolation_frequency: ${interpolation_frequency}
115
+ policy_cfg:
116
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
117
+ n_obs_steps: 1
118
+ horizon: 36
119
+ n_action_steps: ${agent.config.policy_cfg.horizon}
120
+ input_shapes:
121
+ observation.image: ${agent.config.cam_resize_shape}
122
+ context_observation.image: ${agent.config.cam_resize_shape}
123
+ observation.state:
124
+ - 8
125
+ observation.action_history:
126
+ - 7
127
+ output_shapes:
128
+ action:
129
+ - 7
130
+ input_normalization_modes:
131
+ observation.image: mean_std
132
+ observation.state: min_max
133
+ observation.action_history: min_max
134
+ output_normalization_modes:
135
+ action: min_max
136
+ vision_backbone: resnet18
137
+ crop_distractors_tlhw: null
138
+ pretrained_backbone_weights: null
139
+ transforms:
140
+ - _target_: torchaug.transforms.RandomAffine
141
+ degrees:
142
+ - -5
143
+ - 5
144
+ translate:
145
+ - 0.05
146
+ - 0.05
147
+ batch_transform: true
148
+ num_chunks: -1
149
+ batch_inplace: true
150
+ - _target_: torchaug.transforms.RandomColorJitter
151
+ brightness: 0.3
152
+ contrast: 0.4
153
+ saturation: 0.5
154
+ hue: 0.08
155
+ batch_transform: true
156
+ num_chunks: -1
157
+ batch_inplace: true
158
+ use_group_norm: true
159
+ spatial_softmax_num_keypoints: 32
160
+ action_history_encoder_config:
161
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
162
+ in_channels: 7
163
+ out_channels: 32
164
+ history_length: ${agent.config.policy_cfg.n_action_steps}
165
+ kernel_size: ${agent.config.policy_cfg.kernel_size}
166
+ downsample_kernel_size: 3
167
+ downsample_stride: 2
168
+ downsample_padding: 1
169
+ down_dims:
170
+ - 256
171
+ - 512
172
+ - 1024
173
+ kernel_size: 5
174
+ n_groups: 8
175
+ diffusion_step_embed_dim: 128
176
+ use_film_scale_modulation: true
177
+ noise_scheduler_type: DDIM
178
+ beta_schedule: squaredcos_cap_v2
179
+ beta_start: 0.0001
180
+ beta_end: 0.02
181
+ prediction_type: epsilon
182
+ clip_sample: true
183
+ clip_sample_range: 1.0
184
+ num_train_timesteps: 50
185
+ num_inference_steps: 10
186
+ do_mask_loss_for_padding: false
187
+ train_cfg:
188
+ _target_: utils.TrainConfig
189
+ lr: 0.0001
190
+ lr_scheduler: cosine
191
+ lr_warmup_steps: 500
192
+ adam_betas:
193
+ - 0.95
194
+ - 0.999
195
+ adam_eps: 1.0e-08
196
+ adam_weight_decay: 1.0e-06
197
+ grad_clip_norm: 10
198
+ offline_steps: ${num_train_frames_diffusion}
199
+ use_amp: true
200
+ observation_cfg:
201
+ _target_: agent.encoder.VisualFeatureSet
202
+ use_depth: ${use_depth}
203
+ use_color: ${use_color}
204
+ mask_input_dict:
205
+ _target_: agent.encoder.MaskInputDict
206
+ enable: ${use_masks}
207
+ representation: ${mask_representation}
208
+ mask_list: ${mask_list}
209
+ crop_input_config:
210
+ _target_: agent.encoder.CropInputConfig
211
+ color_crop_type: ${color_crop_type}
212
+ depth_crop_type: ${depth_crop_type}
213
+ segmask_crop_type: ${segmask_crop_type}
214
+ crop_hw: ${crop_hw}
215
+ crop_down_offset: ${crop_down_offset}
216
+ add_crop_binary_mask: ${add_crop_binary_mask}
217
+ add_coord_conv_map: ${add_coord_conv_map}
218
+ context_input_config:
219
+ _target_: agent.encoder.ContextInputConfig
220
+ use_color: ${use_context_color}
221
+ use_depth: ${use_context_depth}
222
+ mask_input_dict:
223
+ _target_: agent.encoder.MaskInputDict
224
+ enable: ${use_context_segmask}
225
+ representation: ${mask_representation}
226
+ mask_list: ${mask_list}
227
+ crop_input_config:
228
+ _target_: agent.encoder.CropInputConfig
229
+ color_crop_type: ${context_color_crop_type}
230
+ depth_crop_type: ${context_depth_crop_type}
231
+ segmask_crop_type: ${context_segmask_crop_type}
232
+ crop_hw: ${crop_hw}
233
+ crop_down_offset: ${crop_down_offset}
234
+ add_crop_binary_mask: ${context_add_crop_binary_mask}
235
+ add_coord_conv_map: ${context_add_coord_conv_map}
236
+ mask_soft_approx_scheduler_config:
237
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
238
+ num_steps: 40000
239
+ initial_value: 10.0
240
+ final_value: 1000.0
241
+ interpolation_scheme: constant
242
+ use_contact_map: ${use_contact_map}
243
+ use_sdf_maps: ${use_sdf_maps}
244
+ use_normals_maps: ${use_normals_maps}
245
+ which_objects: ${which_objects}
246
+ grasped_dtc_max_value: ${grasped_dtc_max_value}
247
+ env_dtc_max_value: ${env_dtc_max_value}
248
+ grasped_normals_mask_max_dtc_value: ${grasped_normals_mask_max_dtc_value}
249
+ env_normals_mask_max_dtc_value: ${env_normals_mask_max_dtc_value}
250
+ clamp_dtc: ${clamp_dtc}
251
+ max_contact_prob: ${max_contact_prob}
252
+ mask_normals_within_sdf: ${mask_normals_within_sdf}
253
+ dtc_adaptive_normalization: ${dtc_adaptive_normalization}
254
+ adaptive_normals_mask: ${adaptive_normals_mask}
255
+ max_depth: ${max_depth}
256
+ image_shape: ${agent.desired_image_shape}
257
+ learnable_contact_preprocess_params: ${learnable_contact_preprocess_params}
258
+ learning_rate: ${agent.config.train_cfg.lr}
259
+ weight_decay: 0.0
260
+ contact_model_name: ${contact_model_name}
261
+ zero_centered: false
262
+ crop_distractors_tlhw: ${agent.config.policy_cfg.crop_distractors_tlhw}
263
+ suite:
264
+ suite: frankagym
265
+ name: frankagym
266
+ frame_stack: ${agent.n_obs_steps}
267
+ action_repeat: 1
268
+ discount: 0.99
269
+ hidden_dim: 1024
270
+ num_train_frames: 2010
271
+ num_seed_frames: 260
272
+ num_train_epochs: 5000
273
+ validate_every_epochs: 100
274
+ validate_diffusion_on_action_loss_every_epochs: 500
275
+ train_eval_diffusion_on_action_loss_every_epochs: 500
276
+ check_topk_every_epochs: 10
277
+ save_snapshot_every_epochs: 5000
278
+ eval_every_frames: 2000
279
+ num_eval_episodes: 5
280
+ save_snapshot: true
281
+ wait_for_user_to_start_episode: true
282
+ task_make_fn:
283
+ _target_: suite.frankagym.make
284
+ name: ${task_name}
285
+ height: 240
286
+ width: 320
287
+ frame_stack: ${suite.frame_stack}
288
+ action_repeat: ${suite.action_repeat}
289
+ seed: ${seed}
290
+ enable_arm: ${agent.enable_arm}
291
+ enable_gripper: ${enable_gripper}
292
+ start_with_gripper_open: ${start_with_gripper_open}
293
+ enable_camera: ${agent.enable_camera}
294
+ path_to_depth_extrinsics: ${path_to_depth_extrinsics}
295
+ contact_estimation_model_ckpt_path: ${contact_estimation_model_ckpt_path}
296
+ x_limit: ${x_limit}
297
+ y_limit: ${y_limit}
298
+ z_limit: ${z_limit}
299
+ device: ${device}
300
+ interpolation_frequency: ${interpolation_frequency}
301
+ policy_frequency: ${policy_frequency}
302
+ debug_timestamps: ${debug_timestamps}
303
+ stop_after_action: ${stop_after_action}
304
+ open_loop: ${open_loop}
305
+ wait_for_new_camera_frames: ${wait_for_new_camera_frames}
306
+ action_key: ${action_key}
307
+ action_trajectory_horizon: ${agent.config.policy_cfg.horizon}
308
+ action_trajectories: ${action_trajectories}
309
+ path_to_zarr_dataset: ${expert_dataset}
310
+ agent_policy_cfg: ???
311
+ true_action_history: ${true_action_history}
312
+ num_train_frames_bc: 50000
313
+ num_train_frames_drq: 1100000
314
+ stddev_schedule_drq: linear(1.0,0.1,100000)
315
+ task_name: FrankaInsertion-v1
316
+ num_train_frames_vinn: 25000
317
+ num_train_frames_diffusion: 1000000
318
+ num_train_epochs_bc: 5000
319
+ num_train_epochs_diffusion: 5000
320
+ validate_every_epochs_bc: 5
321
+ validate_every_epochs_diffusion: 25
322
+ validate_diffusion_on_action_loss_every_epochs: 50
323
+ train_eval_diffusion_on_action_loss_every_epochs: 500
324
+ check_topk_every_epochs: 5
325
+ check_topk_every_epochs_diffusion: ${validate_diffusion_on_action_loss_every_epochs}
326
+ save_snapshot_every_epochs_diffusion: 5000
327
+ x_limit:
328
+ - 0.2
329
+ - 0.7
330
+ y_limit:
331
+ - -0.4
332
+ - 0.4
333
+ z_limit:
334
+ - -0.05
335
+ - 0.55
336
+ home_displacement:
337
+ - 0.55
338
+ - 0.0
339
+ - 0.55
340
+ - 180.0
341
+ - 0.0
342
+ - 0.0
343
+ enable_gripper: true
344
+ start_with_gripper_open: true
345
+ offset_mask:
346
+ - 1
347
+ - 1
348
+ - 1
349
+ - 1
350
+ - 1
351
+ - 1
352
+ path_to_depth_extrinsics: ~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy
tvfn1k3b/.hydra/hydra.yaml ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ hydra:
2
+ run:
3
+ dir: ${final_experiment_dir}
4
+ sweep:
5
+ dir: ${final_experiment_dir}
6
+ subdir: ${hydra.job.num}
7
+ launcher:
8
+ submitit_folder: ${final_experiment_dir}/.slurm
9
+ timeout_min: 60
10
+ cpus_per_task: null
11
+ gpus_per_node: null
12
+ tasks_per_node: 1
13
+ mem_gb: null
14
+ nodes: 1
15
+ name: ${hydra.job.name}
16
+ stderr_to_stdout: false
17
+ _target_: hydra_plugins.hydra_submitit_launcher.submitit_launcher.LocalLauncher
18
+ sweeper:
19
+ _target_: hydra._internal.core_plugins.basic_sweeper.BasicSweeper
20
+ max_batch_size: null
21
+ params: null
22
+ help:
23
+ app_name: ${hydra.job.name}
24
+ header: '${hydra.help.app_name} is powered by Hydra.
25
+
26
+ '
27
+ footer: 'Powered by Hydra (https://hydra.cc)
28
+
29
+ Use --hydra-help to view Hydra specific help
30
+
31
+ '
32
+ template: '${hydra.help.header}
33
+
34
+ == Configuration groups ==
35
+
36
+ Compose your configuration from those groups (group=option)
37
+
38
+
39
+ $APP_CONFIG_GROUPS
40
+
41
+
42
+ == Config ==
43
+
44
+ Override anything in the config (foo.bar=value)
45
+
46
+
47
+ $CONFIG
48
+
49
+
50
+ ${hydra.help.footer}
51
+
52
+ '
53
+ hydra_help:
54
+ template: 'Hydra (${hydra.runtime.version})
55
+
56
+ See https://hydra.cc for more info.
57
+
58
+
59
+ == Flags ==
60
+
61
+ $FLAGS_HELP
62
+
63
+
64
+ == Configuration groups ==
65
+
66
+ Compose your configuration from those groups (For example, append hydra/job_logging=disabled
67
+ to command line)
68
+
69
+
70
+ $HYDRA_CONFIG_GROUPS
71
+
72
+
73
+ Use ''--cfg hydra'' to Show the Hydra config.
74
+
75
+ '
76
+ hydra_help: ???
77
+ hydra_logging:
78
+ version: 1
79
+ formatters:
80
+ simple:
81
+ format: '[%(asctime)s][HYDRA] %(message)s'
82
+ handlers:
83
+ console:
84
+ class: logging.StreamHandler
85
+ formatter: simple
86
+ stream: ext://sys.stdout
87
+ root:
88
+ level: INFO
89
+ handlers:
90
+ - console
91
+ loggers:
92
+ logging_example:
93
+ level: DEBUG
94
+ disable_existing_loggers: false
95
+ job_logging:
96
+ version: 1
97
+ formatters:
98
+ simple:
99
+ format: '[%(asctime)s][%(name)s][%(levelname)s] - %(message)s'
100
+ handlers:
101
+ console:
102
+ class: logging.StreamHandler
103
+ formatter: simple
104
+ stream: ext://sys.stdout
105
+ file:
106
+ class: logging.FileHandler
107
+ formatter: simple
108
+ filename: ${hydra.runtime.output_dir}/${hydra.job.name}.log
109
+ root:
110
+ level: INFO
111
+ handlers:
112
+ - console
113
+ - file
114
+ disable_existing_loggers: false
115
+ env: {}
116
+ mode: RUN
117
+ searchpath: []
118
+ callbacks: {}
119
+ output_subdir: .hydra
120
+ overrides:
121
+ hydra:
122
+ - hydra.mode=RUN
123
+ task:
124
+ - agent=diffusion
125
+ - suite=frankagym
126
+ - suite/frankagym_task@_global_=insertion
127
+ job:
128
+ name: eval_policy
129
+ chdir: true
130
+ override_dirname: agent=diffusion,suite/frankagym_task@_global_=insertion,suite=frankagym
131
+ id: ???
132
+ num: ???
133
+ config_name: config_eval
134
+ env_set: {}
135
+ env_copy: []
136
+ config:
137
+ override_dirname:
138
+ kv_sep: '='
139
+ item_sep: ','
140
+ exclude_keys: []
141
+ runtime:
142
+ version: 1.3.2
143
+ version_base: '1.1'
144
+ cwd: /home/leonmkim/fish_leon/FISH
145
+ config_sources:
146
+ - path: hydra.conf
147
+ schema: pkg
148
+ provider: hydra
149
+ - path: /home/leonmkim/fish_leon/FISH/cfgs
150
+ schema: file
151
+ provider: main
152
+ - path: ''
153
+ schema: structured
154
+ provider: schema
155
+ output_dir: /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/4295_1/tvfn1k3b
156
+ choices:
157
+ suite: frankagym
158
+ suite/frankagym_task@_global_: insertion
159
+ agent: diffusion
160
+ hydra/env: default
161
+ hydra/callbacks: null
162
+ hydra/job_logging: default
163
+ hydra/hydra_logging: default
164
+ hydra/hydra_help: default
165
+ hydra/help: default
166
+ hydra/sweeper: basic
167
+ hydra/launcher: submitit_local
168
+ hydra/output: default
169
+ verbose: false
tvfn1k3b/.hydra/overrides.yaml ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ - agent=diffusion
2
+ - suite=frankagym
3
+ - suite/frankagym_task@_global_=insertion
tvfn1k3b/eval_policy.log ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [2025-01-21 21:25:08,413][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_policy.py:429: UserWarning:
2
+ The version_base parameter is not specified.
3
+ Please specify a compatability version level, or None.
4
+ Will assume defaults for version 1.1
5
+ @hydra.main(config_path='cfgs', config_name='config_eval')
6
+
7
+ [2025-01-21 21:25:08,417][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_policy.py:366: UserWarning:
8
+ The version_base parameter is not specified.
9
+ Please specify a compatability version level, or None.
10
+ Will assume defaults for version 1.1
11
+ hydra.initialize(
12
+
13
+ [2025-01-21 21:25:12,219][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_policy.py:415: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.
14
+ payload = torch.load(f)
15
+