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

Move DeMemWM multiview launchers to debug scripts

Browse files
.debug_scripts/train_dememwm_curric_multiview_anchorclean_causal_cleanmem_local_2h200_debug.sh ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ #SBATCH --job-name=dmwm-mview-debug
3
+ #SBATCH --nodes=1
4
+ #SBATCH --ntasks-per-node=2
5
+ #SBATCH --gres=gpu:2
6
+ #SBATCH --cpus-per-task=8
7
+ #SBATCH --mem=256G
8
+ #SBATCH --time=02:00:00
9
+ #SBATCH --partition=gpu
10
+ #SBATCH --output=slurm_logs/dmwm-mview-debug-%j.out
11
+ #SBATCH --error=slurm_logs/dmwm-mview-debug-%j.out
12
+ #SBATCH --chdir=/share_1/users/bonan_ding/WorldMem
13
+
14
+ set -eo pipefail
15
+
16
+ REPO=/share_1/users/bonan_ding/WorldMem
17
+ PYTHON_BIN=/share_1/users/bonan_ding/.conda/envs/worldmem/bin/python
18
+ LOCAL_OASIS=/share_1/users/bonan_ding/worldmem_ckpt/open-oasis-ckpts/oasis500m.safetensors
19
+ LOCAL_VAE=/share_1/users/bonan_ding/worldmem_ckpt/open-oasis-ckpts/vit-l-20.safetensors
20
+ LOCAL_DATA=/share_1/users/bonan_ding/worldmem_data/minecraft
21
+ LOCAL_FEATURES=/share_1/users/bonan_ding/worldmem_data/minecraft/vae_features
22
+
23
+ RUN_NAME=train_dememwm_curric_multiview_anchorclean_causal_cleanmem_debug_${SLURM_JOB_ID:-manual}
24
+ OUTPUT_DIR=${REPO}/outputs/${RUN_NAME}
25
+ LOG_PREFIX="[DEMEMWM_MULTIVIEW_DEBUG]"
26
+ CURRICULUM='{enabled:true,stages:[{name:no_updown,until_step:4,dataset:{wo_updown:true}},{name:with_updown,until_step:8,dataset:{wo_updown:false}}]}'
27
+
28
+ export PYTHONPATH="${REPO}:${PYTHONPATH:-}"
29
+ export HF_HOME=/share_1/users/bonan_ding/.tmp/cache/huggingface
30
+ export TORCH_HOME=/share_1/users/bonan_ding/.tmp/cache/torch
31
+ export PIP_CACHE_DIR=/share_1/users/bonan_ding/.tmp/cache/pip
32
+ export XDG_CACHE_HOME=/share_1/users/bonan_ding/.tmp/cache/xdg
33
+ export TRITON_CACHE_DIR=/share_1/users/bonan_ding/.tmp/cache/triton
34
+ export TMPDIR=/share_1/users/bonan_ding/.tmp
35
+ export WANDB_MODE=offline
36
+ export WANDB_DISABLED=false
37
+ export TOKENIZERS_PARALLELISM=false
38
+ export HYDRA_FULL_ERROR=1
39
+ export NCCL_P2P_DISABLE=1
40
+ export CUDA_VISIBLE_DEVICES=0,1
41
+ export PYTHONUNBUFFERED=1
42
+
43
+ mkdir -p "${OUTPUT_DIR}" slurm_logs \
44
+ "${HF_HOME}" "${TORCH_HOME}" "${PIP_CACHE_DIR}" "${XDG_CACHE_HOME}" "${TRITON_CACHE_DIR}"
45
+
46
+ cd "${REPO}"
47
+ if [[ ! -s "${LOCAL_OASIS}" ]]; then
48
+ echo "${LOG_PREFIX}[ERROR] missing diffusion checkpoint: ${LOCAL_OASIS}" >&2
49
+ exit 2
50
+ fi
51
+ if [[ ! -s "${LOCAL_VAE}" ]]; then
52
+ echo "${LOG_PREFIX}[ERROR] missing VAE checkpoint: ${LOCAL_VAE}" >&2
53
+ exit 2
54
+ fi
55
+ if ! find "${LOCAL_DATA}/training" -type f -name '*.mp4' -print -quit 2>/dev/null | grep -q .; then
56
+ echo "${LOG_PREFIX}[ERROR] missing raw training mp4s under ${LOCAL_DATA}/training" >&2
57
+ exit 2
58
+ fi
59
+ if ! find "${LOCAL_DATA}/validation" -type f -name '*.mp4' -print -quit 2>/dev/null | grep -q .; then
60
+ echo "${LOG_PREFIX}[ERROR] missing raw validation mp4s under ${LOCAL_DATA}/validation" >&2
61
+ exit 2
62
+ fi
63
+ if ! find "${LOCAL_FEATURES}/training" -type f -name '*_vae_feature.npy' -print -quit 2>/dev/null | grep -q .; then
64
+ echo "${LOG_PREFIX}[ERROR] missing training VAE feature cache under ${LOCAL_FEATURES}/training" >&2
65
+ exit 2
66
+ fi
67
+ if ! find "${LOCAL_FEATURES}/validation" -type f -name '*_vae_feature.npy' -print -quit 2>/dev/null | grep -q .; then
68
+ echo "${LOG_PREFIX}[ERROR] missing validation VAE feature cache under ${LOCAL_FEATURES}/validation" >&2
69
+ exit 2
70
+ fi
71
+
72
+ echo "${LOG_PREFIX} repo=${REPO} output=${OUTPUT_DIR} partition=${SLURM_JOB_PARTITION:-local} job=${SLURM_JOB_ID:-manual}"
73
+ echo "${LOG_PREFIX} branch=$(git branch --show-current || true) commit=$(git rev-parse --short HEAD || true)"
74
+ echo "${LOG_PREFIX} status=$(git status --short | tr '\n' ';' || true)"
75
+ echo "${LOG_PREFIX} run_name=${RUN_NAME} wandb_mode=${WANDB_MODE} batch_size_per_gpu=8 global_batch=16"
76
+ echo "${LOG_PREFIX} curriculum=no_updown_until_4_then_with_updown_until_8"
77
+ echo "${LOG_PREFIX} memory_selection=causal_true dynamic_policy=multiview selector=fov_greedy clean_memory"
78
+ echo "${LOG_PREFIX} validation=n_frames_valid_700 context_frames_600 generated_frames_100 limit_batch_1"
79
+ echo "${LOG_PREFIX} data=${LOCAL_DATA} features=${LOCAL_FEATURES}"
80
+ nvidia-smi || true
81
+ wandb offline >/dev/null 2>&1 || true
82
+
83
+ srun "${PYTHON_BIN}" -m main \
84
+ +name="${RUN_NAME}" \
85
+ +output_dir="${OUTPUT_DIR}/" \
86
+ auto_resume=false \
87
+ wandb.mode=offline \
88
+ "experiment.tasks=[training]" \
89
+ experiment.num_nodes=1 \
90
+ algorithm=dememwm_base \
91
+ +customized_load=true \
92
+ +seperate_load=true \
93
+ +diffusion_model_path="${LOCAL_OASIS}" \
94
+ +vae_path="${LOCAL_VAE}" \
95
+ dataset=video_minecraft_dememwm_latent \
96
+ dataset.save_dir="${LOCAL_DATA}" \
97
+ dataset.precomputed_feature_dir="${LOCAL_FEATURES}" \
98
+ dataset.n_frames=8 \
99
+ dataset.n_frames_valid=700 \
100
+ dataset.context_length=100 \
101
+ dataset.single_eval_clip=true \
102
+ dataset.memory_selection.enabled=true \
103
+ dataset.memory_selection.causal=true \
104
+ dataset.memory_selection.max_anchor_frames=2 \
105
+ dataset.memory_selection.max_dynamic_frames=4 \
106
+ dataset.memory_selection.max_revisit_frames=2 \
107
+ dataset.memory_selection.pose_similarity_threshold=0.6 \
108
+ dataset.memory_selection.training_use_plucker=true \
109
+ dataset.memory_selection.training_plucker_weight=1.0 \
110
+ dataset.memory_selection.fov_overlap_threshold=0.6 \
111
+ dataset.memory_selection.min_total_selected_coverage=0.1 \
112
+ dataset.memory_selection.local_context_exclusion_frames=8 \
113
+ dataset.memory_selection.anchor_diverse_selection=true \
114
+ +dataset.memory_selection.pose_preselect_topk=32 \
115
+ +dataset.memory_selection.candidate_chunk_size=0 \
116
+ dataset.memory_selection.dynamic.selection_policy=multiview \
117
+ dataset.memory_selection.dynamic.multiview_selector=fov_greedy \
118
+ algorithm.causal=true \
119
+ algorithm.n_tokens=8 \
120
+ algorithm.context_frames=600 \
121
+ algorithm.metric_report_segment=100 \
122
+ algorithm.chunk_size=1 \
123
+ algorithm.warmup_steps=4 \
124
+ algorithm.trainability.train_full_dit=true \
125
+ algorithm.trainability.full_dit_start_step=4 \
126
+ algorithm.trainability.lr.memory_modules=4.0e-5 \
127
+ algorithm.trainability.lr.base_dit=1.0e-5 \
128
+ algorithm.log_video=true \
129
+ algorithm.save_local=true \
130
+ algorithm.diffusion.sampling_timesteps=20 \
131
+ algorithm.noise_route.anchor=all \
132
+ algorithm.noise_route.dynamic=all \
133
+ algorithm.noise_route.revisit=all \
134
+ algorithm.memory_noise.enabled=false \
135
+ algorithm.memory_noise.anchor_max_fraction=0.0 \
136
+ algorithm.memory_noise.dynamic_max_fraction=0.0 \
137
+ algorithm.memory_noise.revisit_max_fraction=0.0 \
138
+ +algorithm.memory_noise.validation_noisy_memory=false \
139
+ "experiment.training.curriculum=${CURRICULUM}" \
140
+ experiment.training.batch_size=8 \
141
+ experiment.training.optim.accumulate_grad_batches=1 \
142
+ experiment.validation.batch_size=1 \
143
+ experiment.validation.limit_batch=1 \
144
+ experiment.validation.data.num_workers=2 \
145
+ experiment.validation.inference_mode=false \
146
+ experiment.training.checkpointing.every_n_train_steps=4 \
147
+ experiment.validation.val_every_n_step=4 \
148
+ experiment.training.max_steps=8
.debug_scripts/train_dememwm_curric_multiview_anchorclean_causal_cleanmem_local_full.sh ADDED
@@ -0,0 +1,144 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ #SBATCH --job-name=dmwm-mview-clean-2h200
3
+ #SBATCH --nodes=1
4
+ #SBATCH --ntasks-per-node=2
5
+ #SBATCH --gres=gpu:2
6
+ #SBATCH --cpus-per-task=8
7
+ #SBATCH --mem=256G
8
+ #SBATCH --time=72:00:00
9
+ #SBATCH --partition=gpu
10
+ #SBATCH --output=slurm_logs/dmwm-mview-clean-2h200-%j.out
11
+ #SBATCH --error=slurm_logs/dmwm-mview-clean-2h200-%j.out
12
+ #SBATCH --chdir=/share_1/users/bonan_ding/WorldMem
13
+
14
+ set -eo pipefail
15
+
16
+ REPO=/share_1/users/bonan_ding/WorldMem
17
+ PYTHON_BIN=/share_1/users/bonan_ding/.conda/envs/worldmem/bin/python
18
+ LOCAL_OASIS=/share_1/users/bonan_ding/worldmem_ckpt/open-oasis-ckpts/oasis500m.safetensors
19
+ LOCAL_VAE=/share_1/users/bonan_ding/worldmem_ckpt/open-oasis-ckpts/vit-l-20.safetensors
20
+ LOCAL_DATA=/share_1/users/bonan_ding/worldmem_data/minecraft
21
+ LOCAL_FEATURES=/share_1/users/bonan_ding/worldmem_data/minecraft/vae_features
22
+
23
+ RUN_NAME=train_dememwm_curric_multiview_anchorclean_causal_cleanmem_fovgreedy_a2d4r2_route_ntok8_2h200_bs8_global16_400k
24
+ OUTPUT_DIR=${REPO}/outputs/${RUN_NAME}
25
+ LOG_PREFIX="[DEMEMWM_MULTIVIEW_CLEAN_2H200]"
26
+ CURRICULUM='{enabled:true,stages:[{name:no_updown,until_step:120000,dataset:{wo_updown:true}},{name:with_updown,until_step:400000,dataset:{wo_updown:false}}]}'
27
+
28
+ export PYTHONPATH="${REPO}:${PYTHONPATH:-}"
29
+ export HF_HOME=/share_1/users/bonan_ding/.tmp/cache/huggingface
30
+ export TORCH_HOME=/share_1/users/bonan_ding/.tmp/cache/torch
31
+ export PIP_CACHE_DIR=/share_1/users/bonan_ding/.tmp/cache/pip
32
+ export XDG_CACHE_HOME=/share_1/users/bonan_ding/.tmp/cache/xdg
33
+ export TRITON_CACHE_DIR=/share_1/users/bonan_ding/.tmp/cache/triton
34
+ export TMPDIR=/share_1/users/bonan_ding/.tmp
35
+ export WANDB_MODE=online
36
+ export WANDB_DISABLED=false
37
+ export TOKENIZERS_PARALLELISM=false
38
+ export HYDRA_FULL_ERROR=1
39
+ export NCCL_P2P_DISABLE=1
40
+ export CUDA_VISIBLE_DEVICES=0,1
41
+ export PYTHONUNBUFFERED=1
42
+
43
+ mkdir -p "${OUTPUT_DIR}" slurm_logs \
44
+ "${HF_HOME}" "${TORCH_HOME}" "${PIP_CACHE_DIR}" "${XDG_CACHE_HOME}" "${TRITON_CACHE_DIR}"
45
+
46
+ cd "${REPO}"
47
+ if [[ ! -s "${LOCAL_OASIS}" ]]; then
48
+ echo "${LOG_PREFIX}[ERROR] missing diffusion checkpoint: ${LOCAL_OASIS}" >&2
49
+ exit 2
50
+ fi
51
+ if [[ ! -s "${LOCAL_VAE}" ]]; then
52
+ echo "${LOG_PREFIX}[ERROR] missing VAE checkpoint: ${LOCAL_VAE}" >&2
53
+ exit 2
54
+ fi
55
+ if ! find "${LOCAL_DATA}/training" -type f -name '*.mp4' -print -quit 2>/dev/null | grep -q .; then
56
+ echo "${LOG_PREFIX}[ERROR] missing raw training mp4s under ${LOCAL_DATA}/training" >&2
57
+ exit 2
58
+ fi
59
+ if ! find "${LOCAL_DATA}/validation" -type f -name '*.mp4' -print -quit 2>/dev/null | grep -q .; then
60
+ echo "${LOG_PREFIX}[ERROR] missing raw validation mp4s under ${LOCAL_DATA}/validation" >&2
61
+ exit 2
62
+ fi
63
+ if ! find "${LOCAL_FEATURES}/training" -type f -name '*_vae_feature.npy' -print -quit 2>/dev/null | grep -q .; then
64
+ echo "${LOG_PREFIX}[ERROR] missing training VAE feature cache under ${LOCAL_FEATURES}/training" >&2
65
+ exit 2
66
+ fi
67
+ if ! find "${LOCAL_FEATURES}/validation" -type f -name '*_vae_feature.npy' -print -quit 2>/dev/null | grep -q .; then
68
+ echo "${LOG_PREFIX}[ERROR] missing validation VAE feature cache under ${LOCAL_FEATURES}/validation" >&2
69
+ exit 2
70
+ fi
71
+
72
+ echo "${LOG_PREFIX} repo=${REPO} output=${OUTPUT_DIR} partition=${SLURM_JOB_PARTITION:-local} job=${SLURM_JOB_ID:-manual}"
73
+ echo "${LOG_PREFIX} branch=$(git branch --show-current || true) commit=$(git rev-parse --short HEAD || true)"
74
+ echo "${LOG_PREFIX} status=$(git status --short | tr '\n' ';' || true)"
75
+ echo "${LOG_PREFIX} run_name=${RUN_NAME} wandb_mode=${WANDB_MODE} batch_size_per_gpu=8 global_batch=16"
76
+ echo "${LOG_PREFIX} curriculum=no_updown_until_120000_then_with_updown_until_400000"
77
+ echo "${LOG_PREFIX} memory_selection=causal_true dynamic_policy=multiview selector=fov_greedy clean_memory"
78
+ echo "${LOG_PREFIX} data=${LOCAL_DATA} features=${LOCAL_FEATURES}"
79
+ nvidia-smi || true
80
+
81
+ srun "${PYTHON_BIN}" -m main \
82
+ +name="${RUN_NAME}" \
83
+ +output_dir="${OUTPUT_DIR}/" \
84
+ auto_resume=true \
85
+ wandb.mode=online \
86
+ "experiment.tasks=[training]" \
87
+ experiment.num_nodes=1 \
88
+ algorithm=dememwm_base \
89
+ +customized_load=true \
90
+ +seperate_load=true \
91
+ +diffusion_model_path="${LOCAL_OASIS}" \
92
+ +vae_path="${LOCAL_VAE}" \
93
+ dataset=video_minecraft_dememwm_latent \
94
+ dataset.save_dir="${LOCAL_DATA}" \
95
+ dataset.precomputed_feature_dir="${LOCAL_FEATURES}" \
96
+ dataset.n_frames=8 \
97
+ dataset.n_frames_valid=1100 \
98
+ dataset.context_length=100 \
99
+ dataset.single_eval_clip=true \
100
+ dataset.memory_selection.enabled=true \
101
+ dataset.memory_selection.causal=true \
102
+ dataset.memory_selection.max_anchor_frames=2 \
103
+ dataset.memory_selection.max_dynamic_frames=4 \
104
+ dataset.memory_selection.max_revisit_frames=2 \
105
+ dataset.memory_selection.pose_similarity_threshold=0.6 \
106
+ dataset.memory_selection.training_use_plucker=true \
107
+ dataset.memory_selection.training_plucker_weight=1.0 \
108
+ dataset.memory_selection.fov_overlap_threshold=0.6 \
109
+ dataset.memory_selection.min_total_selected_coverage=0.1 \
110
+ dataset.memory_selection.local_context_exclusion_frames=8 \
111
+ dataset.memory_selection.anchor_diverse_selection=true \
112
+ +dataset.memory_selection.pose_preselect_topk=64 \
113
+ +dataset.memory_selection.candidate_chunk_size=64 \
114
+ dataset.memory_selection.dynamic.selection_policy=multiview \
115
+ dataset.memory_selection.dynamic.multiview_selector=fov_greedy \
116
+ algorithm.causal=true \
117
+ algorithm.n_tokens=8 \
118
+ algorithm.context_frames=600 \
119
+ algorithm.metric_report_segment=100 \
120
+ algorithm.chunk_size=1 \
121
+ algorithm.warmup_steps=10000 \
122
+ algorithm.trainability.train_full_dit=true \
123
+ algorithm.trainability.full_dit_start_step=40000 \
124
+ algorithm.trainability.lr.memory_modules=4.0e-5 \
125
+ algorithm.trainability.lr.base_dit=1.0e-5 \
126
+ algorithm.log_video=true \
127
+ algorithm.save_local=true \
128
+ algorithm.diffusion.sampling_timesteps=20 \
129
+ algorithm.noise_route.anchor=all \
130
+ algorithm.noise_route.dynamic=all \
131
+ algorithm.noise_route.revisit=all \
132
+ algorithm.memory_noise.enabled=false \
133
+ algorithm.memory_noise.anchor_max_fraction=0.0 \
134
+ algorithm.memory_noise.dynamic_max_fraction=0.0 \
135
+ algorithm.memory_noise.revisit_max_fraction=0.0 \
136
+ +algorithm.memory_noise.validation_noisy_memory=false \
137
+ "experiment.training.curriculum=${CURRICULUM}" \
138
+ experiment.training.batch_size=8 \
139
+ experiment.training.optim.accumulate_grad_batches=1 \
140
+ experiment.validation.batch_size=1 \
141
+ experiment.validation.limit_batch=4 \
142
+ experiment.training.checkpointing.every_n_train_steps=5000 \
143
+ experiment.validation.val_every_n_step=5000 \
144
+ experiment.training.max_steps=400000
train_dememwm_curric_multiview_anchorclean_causal_cleanmem_local_2h200_debug.sh DELETED
@@ -1,101 +0,0 @@
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 DELETED
@@ -1,105 +0,0 @@
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}"