| # Resilient HF download with retries and low concurrency | |
| set -u | |
| cd /mnt/local-fast/zhangt | |
| LOG=/mnt/local-fast/zhangt/hf_download.log | |
| MAX_ATTEMPTS=200 | |
| attempt=0 | |
| while true; do | |
| attempt=$((attempt+1)) | |
| echo "===== attempt $attempt $(date -Is) =====" >> "$LOG" | |
| HF_HOME=/mnt/local-fast/zhangt/.cache/huggingface \ | |
| hf download ActivityForensics/ActivityForensics \ | |
| --repo-type dataset \ | |
| --include 'video/*' \ | |
| --cache-dir /mnt/local-fast/zhangt/.cache/huggingface/hub \ | |
| --max-workers 4 >> "$LOG" 2>&1 | |
| rc=$? | |
| echo "===== attempt $attempt exit=$rc $(date -Is) =====" >> "$LOG" | |
| if [ $rc -eq 0 ]; then | |
| echo "DOWNLOAD OK" >> "$LOG" | |
| exit 0 | |
| fi | |
| if [ $attempt -ge $MAX_ATTEMPTS ]; then | |
| echo "GIVE UP after $attempt attempts" >> "$LOG" | |
| exit 1 | |
| fi | |
| # exponential backoff capped at 5 min | |
| sleep_s=$(( attempt*30 < 300 ? attempt*30 : 300 )) | |
| echo "sleeping ${sleep_s}s before retry" >> "$LOG" | |
| sleep "$sleep_s" | |
| done | |