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}"
|