#!/usr/bin/env bash # Autonomous Feather outer loop launcher — survives Hermes session transitions. # Writes: /home/mikeb/work/feather/run_loop_t{N}.log, PID -> ~/.cache/autoresearch/train_pid set -euo pipefail REPO="/home/mikeb/work/feather" cd "$REPO" # Kill any stale training pkill -9 -f "python.*train\.py" 2>/dev/null || true sleep 1 HF_TOKEN_VAL=$(grep -ohP 'hf_[A-Za-z0-9_-]+' ~/.bashrc 2>/dev/null | head -1 || true) TICK="${1:-0}" LOG="${REPO}/run_loop_t${TICK}.log" echo "[loop] tick-${TICK} starting $(date +%H:%M:%S)" > "${LOG}" setsid -f /usr/bin/env \ LD_LIBRARY_PATH=/usr/lib/wsl/lib:/usr/local/cuda/lib64 \ PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True \ HF_TOKEN="${HF_TOKEN_VAL}" \ HUGGINGFACE_HUB_TOKEN="${HF_TOKEN_VAL}" \ WANDB_DISABLED=true \ HYDRA_USE_NEMOTRON=1 \ HYDRA_USE_FULL_BLEND=1 \ HYDRA_SAMPLED_SOFTMAX=256 \ HYDRA_SOFTCAP_CLAMP=1 \ HYDRA_SEQ_LEN=1024 \ HYDRA_HEADDIM=32 \ HYDRA_D_STATE=64 \ HYDRA_TIME_BUDGET=300 \ HYDRA_ENGRAM_TOPK=64 \ HYDRA_CANTOR_DISABLE=0 \ HYDRA_CANTOR_LEARNABLE=1 \ HYDRA_CANTOR_SCORE_GRAD=1 \ HYDRA_ENGRAM_ROUTING=auto \ HYDRA_REALITY_BRIDGE=1 \ HYDRA_SEMANTIC_SMOOTH_STD=0.01 \ HYDRA_SLOW_FAST_ORTHO_METRICS=1 \ HYDRA_SLOW_FAST_ORTHO_LAMBDA=1e-4 \ HYDRA_GDN_LAYERS= \ HYDRA_MTP_K=1 \ HYDRA_USE_MDLM=0 \ HYDRA_MUON_COMPILE=0 \ HYDRA_MUON_NS_STEPS=2 \ HYDRA_MATRIX_LR="${2:-0.01}" \ HYDRA_EMBED_LR="${3:-0.20}" \ HYDRA_UNEMBED_LR="${4:-0.001}" \ HYDRA_DT_BIAS_LR="${5:-0.05}" \ HYDRA_SCALAR_LR="${6:-0.01}" \ HYDRA_WARMUP_RATIO=0.01 \ HYDRA_LR_MIN_MULT=0.10 \ HYDRA_DOC_SEP_MASK=1 \ HYDRA_STREAM_SHUFFLE_BUFFER=4096 \ HYDRA_LOCAL_SHARDS_ONLY=0 \ HYDRA_BACKGROUND_PREFETCH=0 \ HYDRA_STREAM_PREFETCH=16 \ HYDRA_TOKEN_PREFETCH=4 \ HYDRA_TOKEN_CACHE_GB=1 \ HYDRA_CKPT_INTERVAL=2000 \ HYDRA_MID_VAL_INTERVAL=0 \ HYDRA_EVAL_BATCH=1 \ HYDRA_EVAL_TOKENS=51200 \ HYDRA_CE_CHUNK=16 \ HYDRA_SKIP_FACTUAL_EVAL=1 \ HYDRA_N_LAYER=6 \ HYDRA_D_MODEL=192 \ HYDRA_EXPAND=3 \ HYDRA_BATCH_SIZE=16 \ HYDRA_TOTAL_BATCH=32768 \ HYDRA_HYENA_LAYERS= \ HYDRA_HESTIA_INTERVAL=999999 \ HYDRA_HTM_SUBSAMPLE=16 \ UV_PYTHON=/usr/bin/python3 \ taskset -c 0-15 "${REPO}/.venv/bin/python" -u train.py \ >"${LOG}" 2>&1 sleep 2 TPID=$(pgrep -n -f 'python -u train\.py' || echo "") if [ -z "${TPID}" ]; then TPID=$(pgrep -n -f 'train\.py' || echo "0") fi echo "${TPID}" > /home/mikeb/.cache/autoresearch/train_pid echo "[loop] tick-${TICK} PID=${TPID} PPID=$(ps -o ppid= -p "${TPID}" 2>/dev/null || echo '?')" >> "${LOG}"