Upload scripts/ckpt_janitor.sh with huggingface_hub
Browse files- scripts/ckpt_janitor.sh +30 -0
scripts/ckpt_janitor.sh
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env bash
|
| 2 |
+
# CP_CKPT_KEEP prunes .ckpt files but NOT their .zero_g1 sidecars. At
|
| 3 |
+
# CP_CKPT_FREQ=25 that leaked ~49 GB of orphans and filled a 193 GB disk, after
|
| 4 |
+
# which every save failed with only a [WARN] while training carried on. This
|
| 5 |
+
# deletes sidecars and .tmp files that no surviving .ckpt refers to.
|
| 6 |
+
set -uo pipefail
|
| 7 |
+
cd "$(dirname "$0")"
|
| 8 |
+
L=b3long_logs/janitor.log
|
| 9 |
+
while true; do
|
| 10 |
+
freed=0
|
| 11 |
+
for r in 0 1; do
|
| 12 |
+
d=checkpoints_bluscriptcp/rank_$r
|
| 13 |
+
[ -d "$d" ] || continue
|
| 14 |
+
for f in "$d"/*.zero_g1; do
|
| 15 |
+
[ -e "$f" ] || continue
|
| 16 |
+
stem=$(basename "$f" .zero_g1)
|
| 17 |
+
# keep if a matching .ckpt exists, or if a preserved copy references it
|
| 18 |
+
[ -f "$d/$stem.ckpt" ] && continue
|
| 19 |
+
ls "$d"/*"$stem".ckpt >/dev/null 2>&1 && continue
|
| 20 |
+
sz=$(stat -c%s "$f" 2>/dev/null || echo 0)
|
| 21 |
+
rm -f "$f" && freed=$(( freed + sz ))
|
| 22 |
+
done
|
| 23 |
+
# .tmp older than 10 min is a failed save, never an in-flight one
|
| 24 |
+
find "$d" -name '*.tmp' -mmin +10 -delete 2>/dev/null
|
| 25 |
+
done
|
| 26 |
+
avail=$(df -BG --output=avail /root | tail -1 | tr -dc '0-9')
|
| 27 |
+
[ "$freed" -gt 0 ] && echo "[$(date -u +%H:%M:%S)] freed $(( freed/1000000 )) MB, ${avail}G avail" >> "$L"
|
| 28 |
+
[ "$avail" -lt 25 ] && echo "[$(date -u +%H:%M:%S)] WARNING only ${avail}G avail -- a save needs 17.3G" >> "$L"
|
| 29 |
+
sleep 300
|
| 30 |
+
done
|