| # preflight_check.sh - UMA 训练前预检脚本 | |
| # 用法: bash templates/preflight_check.sh [path1] [path2] ... | |
| # | |
| # 每个 path 可以是: | |
| # - 普通文件 (如 checkpoint .pt) | |
| # - 目录 (如 ASE-lmdb 的 train/ val/) | |
| # 检查项: | |
| # 1. ONESCIENCE_DATASETS_DIR 环境变量 (如果 env.sh 已 source) | |
| # 2. 每个路径是否存在 | |
| # 3. DCU/GPU 状态 | |
| ERRORS=0 | |
| echo "=========================================" | |
| echo "Node: $(hostname)" | |
| echo "Time: $(date)" | |
| echo "=========================================" | |
| # 检查路径是否存在 (文件或目录均可) | |
| for p in "$@"; do | |
| [ -z "$p" ] && continue | |
| expanded=$(eval echo "$p") | |
| if [ ! -e "$expanded" ]; then | |
| echo "[ERROR] 路径不存在: $expanded" | |
| ERRORS=$((ERRORS + 1)) | |
| elif [ -d "$expanded" ]; then | |
| echo "[OK] 目录: $expanded" | |
| else | |
| echo "[OK] 文件: $expanded" | |
| fi | |
| done | |
| # 打印 DCU/GPU 状态 | |
| echo "-----------------------------------------" | |
| echo ">>> DCU/GPU 状态:" | |
| if command -v hy-smi &>/dev/null; then | |
| hy-smi | |
| elif command -v rocm-smi &>/dev/null; then | |
| rocm-smi | |
| elif command -v nvidia-smi &>/dev/null; then | |
| nvidia-smi | |
| else | |
| echo "[WARN] 未找到 GPU 监控工具 (hy-smi/rocm-smi/nvidia-smi)" | |
| fi | |
| echo "-----------------------------------------" | |
| if [ $ERRORS -gt 0 ]; then | |
| echo "[FATAL] 预检发现 $ERRORS 个错误,终止训练" | |
| exit 1 | |
| fi | |
| echo "[OK] 预检通过" | |