From b5a0e3c64f287f7b129cf780023e04723e039889 Mon Sep 17 00:00:00 2001 From: bingshuo <565183519@qq.com> Date: Mon, 18 May 2026 00:18:41 +0800 Subject: [PATCH] =?UTF-8?q?D100=20=E8=AE=AD=E7=BB=83=E7=9B=91=E6=8E=A7?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF:=20=E5=86=B0=E6=9C=94=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E7=BB=88=E7=AB=AF=E5=AE=9E=E6=97=B6=E6=9F=A5=E7=9C=8B=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/train_monitor.sh | 103 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 scripts/train_monitor.sh diff --git a/scripts/train_monitor.sh b/scripts/train_monitor.sh new file mode 100644 index 0000000..b1459a7 --- /dev/null +++ b/scripts/train_monitor.sh @@ -0,0 +1,103 @@ +#!/bin/bash +# ๐Ÿš€ ้“ธๆธŠ่ฎญ็ปƒ็›‘ๆŽง้ขๆฟ ยท ๅ…‰ๆน–ๆฏๆจกๅž‹ๅฎžๆ—ถ็Šถๆ€ +# ไฝฟ็”จๆ–นๆณ•๏ผšๅคๅˆถๅ…จ้ƒจ๏ผŒ็ฒ˜่ดดๅˆฐAutoDLๅœจ็บฟ็ปˆ็ซฏ๏ผŒๆŒ‰ๅ›ž่ฝฆ่ฟ่กŒ +# ้€€ๅ‡บ๏ผšๆŒ‰ Ctrl+C + +LOG_FILE="/root/autodl-tmp/train_mother.log" + +while true; do + clear + echo "โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—" + echo "โ•‘ ๐Ÿš€ ๅ…‰ๆน– ยท ๆฏๆจกๅž‹่ฎญ็ปƒๅฎžๆ—ถ้ขๆฟ โ•‘" + echo "โ•‘ ้“ธๆธŠ (ICE-GL-ZY001) ยท ่‡ชๅŠจๅˆทๆ–ฐ (5็ง’) โ•‘" + echo "โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" + echo "" + + # GPU็Šถๆ€ + if command -v nvidia-smi &> /dev/null; then + GPU_DATA=$(nvidia-smi --query-gpu=utilization.gpu,memory.used,memory.total,temperature.gpu --format=csv,noheader,nounits 2>/dev/null) + GPU_UTIL=$(echo "$GPU_DATA" | cut -d',' -f1 | tr -d ' ') + MEM_USED=$(echo "$GPU_DATA" | cut -d',' -f2 | tr -d ' ') + MEM_TOTAL=$(echo "$GPU_DATA" | cut -d',' -f3 | tr -d ' ') + GPU_TEMP=$(echo "$GPU_DATA" | cut -d',' -f4 | tr -d ' ') + MEM_PCT=$(( MEM_USED * 100 / MEM_TOTAL )) + else + GPU_UTIL="N/A"; MEM_USED="N/A"; MEM_TOTAL="N/A"; GPU_TEMP="N/A"; MEM_PCT=0 + fi + + echo " โšก GPU: ${GPU_UTIL}% | ๐ŸŽฏ ๆ˜พๅญ˜: ${MEM_USED}/${MEM_TOTAL}MB (${MEM_PCT}%) | ๐ŸŒก๏ธ ${GPU_TEMP}ยฐC" + echo "" + + if [ ! -f "$LOG_FILE" ]; then + echo " โณ ็ญ‰ๅพ…่ฎญ็ปƒๅฏๅŠจ..." + sleep 5 + continue + fi + + # ๆฃ€ๆŸฅๆŠฅ้”™ + if grep -q "Traceback" "$LOG_FILE" 2>/dev/null; then + echo " โŒ ่ฎญ็ปƒๆŠฅ้”™๏ผ่ฏทๆ‰พ้“ธๆธŠๅค„็†" + echo " $(grep "Traceback" "$LOG_FILE" | head -3)" + echo "" + sleep 10 + continue + fi + + # ๆฃ€ๆŸฅๅฎŒๆˆ + if grep -q "DONE!" "$LOG_FILE" 2>/dev/null; then + echo " โœ…โœ…โœ… ๆฏๆจกๅž‹่ฎญ็ปƒๅฎŒๆˆ๏ผโœ…โœ…โœ…" + echo "" + ls -lh /root/autodl-tmp/output/qwen25-7b-sft/final/ 2>/dev/null + sleep 30 + continue + fi + + # ่Žทๅ–่ฎญ็ปƒๆ•ฐๆฎ + LATEST_LOSS=$(grep -o "'loss': '[^']*'" "$LOG_FILE" 2>/dev/null | tail -1 | cut -d"'" -f4) + LATEST_STEP=$(grep -o "'loss': '[^']*'" "$LOG_FILE" 2>/dev/null | wc -l) + LATEST_EPOCH=$(grep -o "'epoch': '[^']*'" "$LOG_FILE" 2>/dev/null | tail -1 | cut -d"'" -f4) + LATEST_LR=$(grep -o "'learning_rate': '[^']*'" "$LOG_FILE" 2>/dev/null | tail -1 | cut -d"'" -f4) + GRAD_NORM=$(grep -o "'grad_norm': '[^']*'" "$LOG_FILE" 2>/dev/null | tail -1 | cut -d"'" -f4) + + if grep -q "Starting training" "$LOG_FILE" 2>/dev/null; then + echo " โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”" + echo " โ”‚ ๐ŸŸข ่ฎญ็ปƒไธญ โ”‚" + echo " โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค" + if [ -n "$LATEST_LOSS" ]; then + printf " โ”‚ ๐Ÿ“‰ Loss: %-20s โ”‚\n" "$LATEST_LOSS" + printf " โ”‚ ๐Ÿ“ Grad Norm: %-20s โ”‚\n" "$GRAD_NORM" + printf " โ”‚ ๐Ÿ“ˆ LR: %-20s โ”‚\n" "$LATEST_LR" + printf " โ”‚ ๐Ÿ‘ฃ Step: %-20s โ”‚\n" "$LATEST_STEP" + printf " โ”‚ ๐ŸŒ€ Epoch: %-20s โ”‚\n" "$LATEST_EPOCH" + else + echo " โ”‚ ็ฌฌไธ€ไธชStep่ฎก็ฎ—ไธญ... โ”‚" + fi + echo " โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜" + elif grep -q "Tokenize: 100%" "$LOG_FILE" 2>/dev/null; then + echo " โณ ๅˆ†่ฏๅฎŒๆˆ๏ผŒๅณๅฐ†่ฟ›ๅ…ฅGPU่ฎญ็ปƒ..." + elif grep -q "Tokenize:" "$LOG_FILE" 2>/dev/null; then + PCT=$(grep -oP 'Tokenize: \K[0-9]+%' "$LOG_FILE" 2>/dev/null | tail -1) + DONE=$(grep -oP '\|\s*\K[0-9]+/[0-9]+' "$LOG_FILE" 2>/dev/null | tail -1) + echo " โณ ๅˆ†่ฏไธญ: ${PCT} (${DONE})" + fi + + # ่ฟ่กŒๆ—ถ้—ด + if [ -f "$LOG_FILE" ]; then + START_TIME=$(stat -c %Y "$LOG_FILE" 2>/dev/null || stat -f %m "$LOG_FILE" 2>/dev/null) + NOW=$(date +%s) + ELAPSED=$(( (NOW - START_TIME) / 60 )) + if [ $ELAPSED -gt 60 ]; then + H=$(( ELAPSED / 60 )); M=$(( ELAPSED % 60 )) + echo "" + echo " โฑ๏ธ ๅทฒ่ฟ่กŒ: ${H}h ${M}m" + else + echo "" + echo " โฑ๏ธ ๅทฒ่ฟ่กŒ: ${ELAPSED}m" + fi + fi + + echo "" + echo " โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€" + echo " ๐Ÿ”„ ๆฏ5็ง’่‡ชๅŠจๅˆทๆ–ฐ ยท Ctrl+C ้€€ๅ‡บ" + sleep 5 +done