#!/bin/bash # Run 17 verified-by-smoke methods. # Confidence levels noted inline. Failures of one method do NOT abort the rest. source /root/miniconda3/etc/profile.d/conda.sh export PYTHONPATH=$PYTHONPATH:/root/autodl-tmp/SplatAtlas ERROR_LOG="/root/autodl-tmp/SplatAtlas/run_errors.log" STATUS_LOG="/root/autodl-tmp/SplatAtlas/run_status.log" echo "================================================================" | tee -a "$ERROR_LOG" "$STATUS_LOG" echo "17-method run started at $(date)" | tee -a "$ERROR_LOG" "$STATUS_LOG" echo "================================================================" | tee -a "$ERROR_LOG" "$STATUS_LOG" # ---------------------------------------------------------------- # Pre-flight: lp_3dgs env is missing torch (audit confirmed). # Install before queue starts so it doesn't waste a slot failing on import. # ---------------------------------------------------------------- echo "[pre-flight] checking lp_3dgs torch..." if ! /root/autodl-tmp/envs/lp_3dgs/bin/python -c "import torch" 2>/dev/null; then echo "[pre-flight] lp_3dgs missing torch, installing torch==2.1.2+cu118..." conda activate /root/autodl-tmp/envs/lp_3dgs pip install torch==2.1.2 torchvision torchaudio \ --index-url https://download.pytorch.org/whl/cu118 -q if /root/autodl-tmp/envs/lp_3dgs/bin/python -c "import torch; assert torch.cuda.is_available()" 2>/dev/null; then echo "[pre-flight] lp_3dgs torch OK" else echo "[pre-flight] lp_3dgs torch install FAILED — will skip lp_3dgs in queue" \ | tee -a "$ERROR_LOG" SKIP_LP3DGS=1 fi conda deactivate fi # ---------------------------------------------------------------- # Task list. Format: " # " # Order: low risk → high risk # ---------------------------------------------------------------- declare -a tasks=( # --- Tier 1: smoke 3000-iter user-confirmed exit 0 --- "/root/autodl-tmp/envs/gigs scripts/run_gigs_benchmark.py" "/root/autodl-tmp/envs/sort_free_gs scripts/run_sortfreegs_benchmark.py" "/root/autodl-tmp/envs/analytic_splatting scripts/run_analyticsplatting_benchmark.py" "/root/autodl-tmp/envs/ngs scripts/run_ngs_benchmark.py" "/root/autodl-tmp/envs/aaa_gaussians scripts/run_aaags_benchmark.py" "/root/autodl-tmp/envs/improving_adc scripts/run_improvingadc_benchmark.py" "/root/autodl-tmp/envs/compact3dgs scripts/run_compact3dgs_benchmark.py" "/root/autodl-tmp/envs/sogs scripts/run_sogs_benchmark.py" # --- Tier 2: 100-iter audit OK (worker B 报告过 + audit 复核) --- "/root/autodl-tmp/envs/cdc_gs scripts/run_cdcgs_benchmark.py" "/root/autodl-tmp/envs/op43dgs scripts/run_op43dgs_benchmark.py" "/root/autodl-tmp/envs/bags scripts/run_bags_benchmark.py" "/root/autodl-tmp/envs/gspull scripts/run_gspull_benchmark.py" "/root/autodl-tmp/envs/FLoD scripts/run_flod_benchmark.py" # --- Tier 3: 慢 / 弱信号(silent failure 风险),放后面 --- "/root/autodl-tmp/envs/spec_gaussian scripts/run_specgaussian_benchmark.py" "/root/autodl-tmp/envs/pup_3dgs scripts/run_pup3dgs_benchmark.py" "/root/autodl-tmp/envs/gaussianfocus scripts/run_gaussianfocus_benchmark.py" "/root/autodl-tmp/envs/lp_3dgs scripts/run_lp3dgs_benchmark.py" ) # ---------------------------------------------------------------- # Run loop # ---------------------------------------------------------------- TOTAL=${#tasks[@]} IDX=0 for task in "${tasks[@]}"; do IDX=$((IDX + 1)) read -r env_path script_path <<< "$task" method_name=$(basename "$script_path" .py) echo "----------------------------------------------------------------" \ | tee -a "$STATUS_LOG" echo "[$IDX/$TOTAL] $(date '+%Y-%m-%d %H:%M:%S') $method_name" \ | tee -a "$STATUS_LOG" # Skip lp_3dgs if pre-flight torch install failed if [ "$method_name" = "run_lp3dgs_benchmark" ] && [ "$SKIP_LP3DGS" = "1" ]; then echo "[skip] lp_3dgs torch not available" | tee -a "$STATUS_LOG" "$ERROR_LOG" continue fi # Sanity: env exists? if [ ! -d "$env_path" ]; then echo "[skip] env missing: $env_path" | tee -a "$STATUS_LOG" "$ERROR_LOG" continue fi conda activate "$env_path" if [ $? -ne 0 ]; then echo "[fail] could not activate $env_path" | tee -a "$STATUS_LOG" "$ERROR_LOG" continue fi # Common deps (idempotent, fast if already there) pip install lpips imageio scikit-image -q 2>/dev/null START=$(date +%s) PYTHONPATH=/root/autodl-tmp/SplatAtlas \ "$CONDA_PREFIX/bin/python" "/root/autodl-tmp/SplatAtlas/$script_path" \ 2> >(tee -a "$ERROR_LOG" >&2) RC=$? END=$(date +%s) DURATION=$((END - START)) if [ $RC -eq 0 ]; then echo "[done] $method_name (rc=0, ${DURATION}s)" | tee -a "$STATUS_LOG" else echo "[FAIL] $method_name (rc=$RC, ${DURATION}s) — see $ERROR_LOG" \ | tee -a "$STATUS_LOG" echo "[$(date)] FAILED: $method_name (rc=$RC)" >> "$ERROR_LOG" fi conda deactivate done echo "================================================================" | tee -a "$STATUS_LOG" echo "17-method run finished at $(date)" | tee -a "$STATUS_LOG" echo "Status log: $STATUS_LOG" echo "Error log: $ERROR_LOG" echo "" echo "To check render flags after run:" echo " ls outputs/*/render_complete_30000.flag 2>/dev/null | wc -l" echo "================================================================"