fix: gen 判定改按产物而不是 wait 退出码——实测 28 个种子跑 5 小时后全部 wait 报失败,但每个 .part 都是完整的 1786 行(node 打了 done、mv 没执行),Git Bash 长跑后 wait 返回码不可靠;现在只要 .part 行数达标就补改名并记成功,只有产物缺失/不全才算失败。另:监控页 1 秒轮询(并行取 status/job/runs + nvidia-smi 缓存),GPU 数字 2 秒缓存。
This commit is contained in:
+13
-1
@@ -29,9 +29,21 @@ while :; do
|
||||
echo "[gen 节拍] $(( (tl-t0)/60 )) 分钟 运行中 $alive/${#pids[@]} 进程 本批已写 $n 条 $last"
|
||||
fi
|
||||
done
|
||||
# 判定按产物而不是 wait 的退出码:2026-10-18 实测 28 个种子跑了 5 小时后全部 wait 报失败,
|
||||
# 但每个 .part 都是完整的 1786 行(node 打了 done、mv 却没执行)——Git Bash 长跑后 wait 的返回码不可靠。
|
||||
fail=0
|
||||
for k in "${!pids[@]}"; do
|
||||
if ! wait ${pids[$k]}; then echo "[gen] 种子 ${seeds[$k]} 失败,最后几行:"; tail -n 5 ml/data/log_${seeds[$k]}.txt || true; fail=1; fi
|
||||
s=${seeds[$k]}; f=ml/data/shard_$(printf %04d $s).jsonl
|
||||
wait ${pids[$k]} || true
|
||||
if [ -f "$f" ]; then continue; fi
|
||||
if [ -f "$f.part" ]; then
|
||||
n=$(wc -l < "$f.part")
|
||||
if [ "$n" -ge "$N" ]; then mv "$f.part" "$f" && echo "[gen] 种子 $s 产物完整($n 行),补改名" && continue; fi
|
||||
echo "[gen] 种子 $s 失败:.part 只有 $n/$N 行,最后几行:"; tail -n 5 ml/data/log_$s.txt || true
|
||||
else
|
||||
echo "[gen] 种子 $s 失败:没有产物,最后几行:"; tail -n 5 ml/data/log_$s.txt || true
|
||||
fi
|
||||
fail=1
|
||||
done
|
||||
[ $fail = 0 ] || exit 6
|
||||
node ml/gen/stats.cjs ml/data/shard_*.jsonl > ml/data/stats.json
|
||||
|
||||
Reference in New Issue
Block a user