File size: 1,906 Bytes
2847d0b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/env bash
set -euo pipefail

ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
PYTHON_BIN="${PYTHON_BIN:-/mnt/s3files/s3-us-west2-default/zoubin/cz/envs/self_forcing/bin/python}"
CONFIG_PATH="${CONFIG_PATH:?CONFIG_PATH is required}"
OUTPUT_DIR="${OUTPUT_DIR:?OUTPUT_DIR is required}"
GPU_IDS="${GPU_IDS:-0,1,2,3,4,5,6,7}"
MASTER_PORT="${MASTER_PORT:-29741}"
USE_SWANLAB="${USE_SWANLAB:-true}"
MAX_STUDENT_STEPS="${MAX_STUDENT_STEPS:-}"
FORCED_EXIT_STEP="${FORCED_EXIT_STEP:-}"

cd "$ROOT_DIR"
IFS=',' read -r -a GPU_ARRAY <<< "$GPU_IDS"
NPROC_PER_NODE="${#GPU_ARRAY[@]}"
if (( NPROC_PER_NODE != 8 )); then
  echo "错误:正式 Predictor-v4 DMD 训练需要 8 张 GPU,当前为 $NPROC_PER_NODE。" >&2
  exit 1
fi
for required in "$PYTHON_BIN" "$CONFIG_PATH"; do
  if [[ ! -e "$required" ]]; then
    echo "错误:找不到 $required" >&2
    exit 1
  fi
done
mkdir -p "$OUTPUT_DIR"
TRAIN_TMPDIR="${TRAIN_TMPDIR:-/mnt/local_nvme/zoubin/cz/tmp/predictor_v4_dmd}"
mkdir -p "$TRAIN_TMPDIR"

overrides=(
  --config_override "predictor_v4_dmd.output_dir=${OUTPUT_DIR}"
  --config_override "predictor_v4_dmd.use_swanlab=${USE_SWANLAB}"
)
if [[ -n "$MAX_STUDENT_STEPS" ]]; then
  overrides+=(
    --config_override "predictor_v4_dmd.max_student_steps=${MAX_STUDENT_STEPS}"
  )
fi
if [[ -n "$FORCED_EXIT_STEP" ]]; then
  overrides+=(
    --config_override "predictor_v4_dmd.forced_exit_step=${FORCED_EXIT_STEP}"
  )
fi

echo "[$(date -u +%FT%TZ)] 启动 Predictor-v4 Wan14B DMD:$CONFIG_PATH"
echo "[$(date -u +%FT%TZ)] 输出目录:$OUTPUT_DIR"
TMPDIR="$TRAIN_TMPDIR" \
CUDA_VISIBLE_DEVICES="$GPU_IDS" \
"$PYTHON_BIN" -m torch.distributed.run \
  --standalone \
  --nproc_per_node="$NPROC_PER_NODE" \
  --master_port="$MASTER_PORT" \
  train.py \
  --config_path "$CONFIG_PATH" \
  --no_visualize \
  --disable-wandb \
  "${overrides[@]}" \
  2>&1 | tee -a "$OUTPUT_DIR/launcher.log"