BonanDing commited on
Commit
95a6d29
·
1 Parent(s): 56f5ccc

Add local DeMemWM multiview launchers

Browse files
.exp_artifact/dememwm_dynamic_multiview_memory_selection_plan.md CHANGED
@@ -897,7 +897,7 @@ Add DeMemWM multiview selector benchmark
897
 
898
  ## Substep 7: Add Local Launchers And Final Validation
899
 
900
- Status: `[ ]`
901
 
902
  Goal:
903
 
 
897
 
898
  ## Substep 7: Add Local Launchers And Final Validation
899
 
900
+ Status: `[x]`
901
 
902
  Goal:
903
 
train_dememwm_curric_multiview_anchorclean_causal_cleanmem_local_2h200_debug.sh ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ export PYTHONPATH="./:${PYTHONPATH:-}"
5
+ export HYDRA_FULL_ERROR=1
6
+ export CUDA_VISIBLE_DEVICES=${CUDA_VISIBLE_DEVICES:-0,1}
7
+
8
+ NPROC_PER_NODE=${NPROC_PER_NODE:-2}
9
+ DATA_ROOT=${DATA_ROOT:-data/minecraft_simple_backforward}
10
+ FEATURE_ROOT=${FEATURE_ROOT:-${DATA_ROOT}/vae_features}
11
+ OUTPUT_ROOT=${OUTPUT_ROOT:-outputs}
12
+ RUN_NAME=${RUN_NAME:-train_dememwm_curric_multiview_anchorclean_causal_cleanmem_local_2h200_debug}
13
+ OUTPUT_DIR=${OUTPUT_DIR:-${OUTPUT_ROOT}/${RUN_NAME}}
14
+
15
+ : "${DIFFUSION_MODEL_PATH:?Set DIFFUSION_MODEL_PATH to a local diffusion checkpoint}"
16
+ : "${VAE_PATH:?Set VAE_PATH to a local VAE checkpoint}"
17
+
18
+ MAX_STEPS=${MAX_STEPS:-50}
19
+ VAL_EVERY_N_STEP=${VAL_EVERY_N_STEP:-25}
20
+ CHECKPOINT_EVERY_N_STEPS=${CHECKPOINT_EVERY_N_STEPS:-25}
21
+ LIMIT_BATCH=${LIMIT_BATCH:-1}
22
+ N_FRAMES_VALID=${N_FRAMES_VALID:-128}
23
+ CONTEXT_LENGTH=${CONTEXT_LENGTH:-100}
24
+ ALGORITHM_CONTEXT_FRAMES=${ALGORITHM_CONTEXT_FRAMES:-100}
25
+ TRAIN_BATCH_SIZE=${TRAIN_BATCH_SIZE:-1}
26
+ VAL_BATCH_SIZE=${VAL_BATCH_SIZE:-1}
27
+ NUM_WORKERS=${NUM_WORKERS:-2}
28
+ CURRICULUM_NO_UPDOWN_UNTIL_STEP=${CURRICULUM_NO_UPDOWN_UNTIL_STEP:-25}
29
+ CURRICULUM="{enabled:true,stages:[{name:no_updown,until_step:${CURRICULUM_NO_UPDOWN_UNTIL_STEP},dataset:{wo_updown:true}},{name:with_updown,until_step:${MAX_STEPS},dataset:{wo_updown:false}}]}"
30
+
31
+ mkdir -p "${OUTPUT_DIR}"
32
+
33
+ torchrun --standalone --nproc_per_node=${NPROC_PER_NODE} -m main \
34
+ "+name=${RUN_NAME}" \
35
+ "+output_dir=${OUTPUT_DIR}/" \
36
+ auto_resume=false \
37
+ wandb.mode=offline \
38
+ "experiment.tasks=[training]" \
39
+ algorithm=dememwm_base \
40
+ +customized_load=true \
41
+ +seperate_load=true \
42
+ "+diffusion_model_path=${DIFFUSION_MODEL_PATH}" \
43
+ "+vae_path=${VAE_PATH}" \
44
+ dataset=video_minecraft_dememwm_latent \
45
+ "dataset.save_dir=${DATA_ROOT}" \
46
+ "dataset.precomputed_feature_dir=${FEATURE_ROOT}" \
47
+ dataset.n_frames=8 \
48
+ "dataset.n_frames_valid=${N_FRAMES_VALID}" \
49
+ "dataset.context_length=${CONTEXT_LENGTH}" \
50
+ dataset.single_eval_clip=true \
51
+ dataset.memory_selection.enabled=true \
52
+ dataset.memory_selection.max_anchor_frames=2 \
53
+ dataset.memory_selection.max_dynamic_frames=4 \
54
+ dataset.memory_selection.max_revisit_frames=2 \
55
+ dataset.memory_selection.causal=true \
56
+ dataset.memory_selection.dynamic.selection_policy=multiview \
57
+ dataset.memory_selection.dynamic.multiview_selector=fov_greedy \
58
+ dataset.memory_selection.pose_similarity_threshold=0.6 \
59
+ dataset.memory_selection.training_use_plucker=true \
60
+ dataset.memory_selection.training_plucker_weight=1.0 \
61
+ dataset.memory_selection.fov_overlap_threshold=0.6 \
62
+ dataset.memory_selection.min_total_selected_coverage=0.1 \
63
+ dataset.memory_selection.local_context_exclusion_frames=8 \
64
+ dataset.memory_selection.anchor_diverse_selection=true \
65
+ dataset.memory_selection.pose_preselect_topk=16 \
66
+ dataset.memory_selection.candidate_chunk_size=16 \
67
+ algorithm.causal=true \
68
+ algorithm.n_tokens=8 \
69
+ "algorithm.context_frames=${ALGORITHM_CONTEXT_FRAMES}" \
70
+ algorithm.metric_report_segment=0 \
71
+ +algorithm.log_per_frame_metrics=false \
72
+ algorithm.chunk_size=1 \
73
+ algorithm.warmup_steps=100 \
74
+ algorithm.trainability.train_full_dit=true \
75
+ algorithm.trainability.full_dit_start_step=25 \
76
+ algorithm.trainability.lr.memory_modules=4.0e-5 \
77
+ algorithm.trainability.lr.base_dit=1.0e-5 \
78
+ algorithm.log_video=false \
79
+ algorithm.save_local=true \
80
+ algorithm.diffusion.sampling_timesteps=20 \
81
+ algorithm.noise_route.anchor=all \
82
+ algorithm.noise_route.dynamic=all \
83
+ algorithm.noise_route.revisit=all \
84
+ algorithm.memory_noise.enabled=false \
85
+ algorithm.memory_noise.anchor_max_fraction=0.0 \
86
+ algorithm.memory_noise.dynamic_max_fraction=0.0 \
87
+ algorithm.memory_noise.revisit_max_fraction=0.0 \
88
+ +algorithm.memory_noise.validation_noisy_memory=false \
89
+ "experiment.training.curriculum=${CURRICULUM}" \
90
+ "experiment.training.batch_size=${TRAIN_BATCH_SIZE}" \
91
+ experiment.training.precision=16-mixed \
92
+ experiment.training.optim.accumulate_grad_batches=1 \
93
+ experiment.training.optim.gradient_clip_val=1.0 \
94
+ "experiment.training.data.num_workers=${NUM_WORKERS}" \
95
+ "experiment.validation.data.num_workers=${NUM_WORKERS}" \
96
+ "experiment.validation.batch_size=${VAL_BATCH_SIZE}" \
97
+ "experiment.validation.limit_batch=${LIMIT_BATCH}" \
98
+ "experiment.validation.val_every_n_step=${VAL_EVERY_N_STEP}" \
99
+ "experiment.training.checkpointing.every_n_train_steps=${CHECKPOINT_EVERY_N_STEPS}" \
100
+ experiment.training.checkpointing.save_last_k=2 \
101
+ "experiment.training.max_steps=${MAX_STEPS}"
train_dememwm_curric_multiview_anchorclean_causal_cleanmem_local_full.sh ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ export PYTHONPATH="./:${PYTHONPATH:-}"
5
+ export HYDRA_FULL_ERROR=1
6
+ export CUDA_VISIBLE_DEVICES=${CUDA_VISIBLE_DEVICES:-0,1}
7
+
8
+ NPROC_PER_NODE=${NPROC_PER_NODE:-2}
9
+ DATA_ROOT=${DATA_ROOT:-data/minecraft_simple_backforward}
10
+ FEATURE_ROOT=${FEATURE_ROOT:-${DATA_ROOT}/vae_features}
11
+ OUTPUT_ROOT=${OUTPUT_ROOT:-outputs}
12
+ RUN_NAME=${RUN_NAME:-train_dememwm_curric_multiview_anchorclean_causal_cleanmem_local_full}
13
+ OUTPUT_DIR=${OUTPUT_DIR:-${OUTPUT_ROOT}/${RUN_NAME}}
14
+
15
+ : "${DIFFUSION_MODEL_PATH:?Set DIFFUSION_MODEL_PATH to a local diffusion checkpoint}"
16
+ : "${VAE_PATH:?Set VAE_PATH to a local VAE checkpoint}"
17
+
18
+ MAX_STEPS=${MAX_STEPS:-120000}
19
+ VAL_EVERY_N_STEP=${VAL_EVERY_N_STEP:-2000}
20
+ CHECKPOINT_EVERY_N_STEPS=${CHECKPOINT_EVERY_N_STEPS:-2000}
21
+ LIMIT_BATCH=${LIMIT_BATCH:-1}
22
+ N_FRAMES_VALID=${N_FRAMES_VALID:-1100}
23
+ CONTEXT_LENGTH=${CONTEXT_LENGTH:-100}
24
+ ALGORITHM_CONTEXT_FRAMES=${ALGORITHM_CONTEXT_FRAMES:-600}
25
+ TRAIN_BATCH_SIZE=${TRAIN_BATCH_SIZE:-16}
26
+ VAL_BATCH_SIZE=${VAL_BATCH_SIZE:-1}
27
+ ACCUMULATE_GRAD_BATCHES=${ACCUMULATE_GRAD_BATCHES:-1}
28
+ NUM_WORKERS=${NUM_WORKERS:-4}
29
+ WANDB_MODE=${WANDB_MODE:-offline}
30
+ CURRICULUM_NO_UPDOWN_UNTIL_STEP=${CURRICULUM_NO_UPDOWN_UNTIL_STEP:-60000}
31
+ CURRICULUM="{enabled:true,stages:[{name:no_updown,until_step:${CURRICULUM_NO_UPDOWN_UNTIL_STEP},dataset:{wo_updown:true}},{name:with_updown,until_step:${MAX_STEPS},dataset:{wo_updown:false}}]}"
32
+
33
+ mkdir -p "${OUTPUT_DIR}"
34
+
35
+ torchrun --standalone --nproc_per_node=${NPROC_PER_NODE} -m main \
36
+ "+name=${RUN_NAME}" \
37
+ "+output_dir=${OUTPUT_DIR}/" \
38
+ auto_resume=true \
39
+ "wandb.mode=${WANDB_MODE}" \
40
+ "experiment.tasks=[training]" \
41
+ algorithm=dememwm_base \
42
+ +customized_load=true \
43
+ +seperate_load=true \
44
+ "+diffusion_model_path=${DIFFUSION_MODEL_PATH}" \
45
+ "+vae_path=${VAE_PATH}" \
46
+ dataset=video_minecraft_dememwm_latent \
47
+ "dataset.save_dir=${DATA_ROOT}" \
48
+ "dataset.precomputed_feature_dir=${FEATURE_ROOT}" \
49
+ dataset.n_frames=8 \
50
+ "dataset.n_frames_valid=${N_FRAMES_VALID}" \
51
+ "dataset.context_length=${CONTEXT_LENGTH}" \
52
+ dataset.single_eval_clip=true \
53
+ dataset.memory_selection.enabled=true \
54
+ dataset.memory_selection.max_anchor_frames=2 \
55
+ dataset.memory_selection.max_dynamic_frames=4 \
56
+ dataset.memory_selection.max_revisit_frames=2 \
57
+ dataset.memory_selection.causal=true \
58
+ dataset.memory_selection.dynamic.selection_policy=multiview \
59
+ dataset.memory_selection.dynamic.multiview_selector=fov_greedy \
60
+ dataset.memory_selection.pose_similarity_threshold=0.6 \
61
+ dataset.memory_selection.training_use_plucker=true \
62
+ dataset.memory_selection.training_plucker_weight=1.0 \
63
+ dataset.memory_selection.fov_overlap_threshold=0.6 \
64
+ dataset.memory_selection.min_total_selected_coverage=0.1 \
65
+ dataset.memory_selection.local_context_exclusion_frames=8 \
66
+ dataset.memory_selection.anchor_diverse_selection=true \
67
+ dataset.memory_selection.pose_preselect_topk=64 \
68
+ dataset.memory_selection.candidate_chunk_size=64 \
69
+ algorithm.causal=true \
70
+ algorithm.n_tokens=8 \
71
+ "algorithm.context_frames=${ALGORITHM_CONTEXT_FRAMES}" \
72
+ algorithm.metric_report_segment=100 \
73
+ +algorithm.log_per_frame_metrics=true \
74
+ algorithm.chunk_size=1 \
75
+ algorithm.warmup_steps=5000 \
76
+ algorithm.trainability.train_full_dit=true \
77
+ algorithm.trainability.full_dit_start_step=40000 \
78
+ algorithm.trainability.lr.memory_modules=4.0e-5 \
79
+ algorithm.trainability.lr.base_dit=1.0e-5 \
80
+ algorithm.log_video=true \
81
+ algorithm.save_local=true \
82
+ algorithm.diffusion.sampling_timesteps=20 \
83
+ algorithm.noise_route.anchor=all \
84
+ algorithm.noise_route.dynamic=all \
85
+ algorithm.noise_route.revisit=all \
86
+ algorithm.memory_noise.enabled=false \
87
+ algorithm.memory_noise.anchor_max_fraction=0.0 \
88
+ algorithm.memory_noise.dynamic_max_fraction=0.0 \
89
+ algorithm.memory_noise.revisit_max_fraction=0.0 \
90
+ +algorithm.memory_noise.validation_noisy_memory=false \
91
+ "experiment.training.curriculum=${CURRICULUM}" \
92
+ "experiment.training.batch_size=${TRAIN_BATCH_SIZE}" \
93
+ experiment.training.precision=16-mixed \
94
+ "experiment.training.optim.accumulate_grad_batches=${ACCUMULATE_GRAD_BATCHES}" \
95
+ experiment.training.optim.gradient_clip_val=1.0 \
96
+ "experiment.training.data.num_workers=${NUM_WORKERS}" \
97
+ "experiment.validation.data.num_workers=${NUM_WORKERS}" \
98
+ "experiment.validation.batch_size=${VAL_BATCH_SIZE}" \
99
+ "experiment.validation.limit_batch=${LIMIT_BATCH}" \
100
+ "experiment.validation.val_every_n_step=${VAL_EVERY_N_STEP}" \
101
+ "experiment.training.checkpointing.every_n_train_steps=${CHECKPOINT_EVERY_N_STEPS}" \
102
+ +experiment.training.checkpointing.save_top_k=5 \
103
+ +experiment.training.checkpointing.monitor=lpips \
104
+ +experiment.training.checkpointing.mode=min \
105
+ "experiment.training.max_steps=${MAX_STEPS}"