| # ============================================================================= | |
| # patching.sh — activation patching: bath→toilet causal tracing, base vs lora. | |
| # | |
| # For each layer l: patches corrupted (bathroom-with-toilet) activations into | |
| # the clean (bathroom-only) run, measures ΔP(toilet) = P(toilet|patch) − baseline. | |
| # P(toilet) = P("to") × P("iel"|"to") via teacher-forced forward (single pass). | |
| # | |
| # Tunables: | |
| # DEVICE_ID GPU id (default 0) | |
| # DTYPE bfloat16 | float16 | float32 (default bfloat16) | |
| # VARIANTS space-separated list (default "base lora") | |
| # N_PAIRS image pairs to average over (default 50) | |
| # SEED random seed for pair sampling (default 42) | |
| # HOOK_TYPE pre | mid | post (default post) | |
| # STAMP datestamp suffix for output files (default today) | |
| # ============================================================================= | |
| export HF_HOME="/data/caotue/hf_cache" | |
| export HF_DATASETS_CACHE="/data/caotue/hf_cache/datasets" | |
| export TORCH_HOME="/data/caotue/torch_cache" | |
| export TMPDIR="/data/caotue/tmp" | |
| DEVICE_ID="${DEVICE_ID:-0}" | |
| DTYPE="${DTYPE:-bfloat16}" | |
| VARIANTS="${VARIANTS:-base lora}" | |
| N_PAIRS="${N_PAIRS:-50}" | |
| SEED="${SEED:-42}" | |
| HOOK_TYPE="${HOOK_TYPE:-post}" | |
| STAMP="${STAMP:-$(date +%Y%m%d)}" | |
| REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" | |
| cd "${REPO_ROOT}" | |
| export PYTHONPATH="$(cd .. && pwd):$(pwd):${PYTHONPATH:-}" | |
| OUT="mechanistic_interp/graph/patching_bath_toilet_${STAMP}.png" | |
| OUT_JSON="mechanistic_interp/graph/patching_bath_toilet_${STAMP}.json" | |
| python -m mechanistic_interp.patching \ | |
| --device_id "${DEVICE_ID}" \ | |
| --dtype "${DTYPE}" \ | |
| --variants ${VARIANTS} \ | |
| --n_pairs "${N_PAIRS}" \ | |
| --seed "${SEED}" \ | |
| --hook_type "${HOOK_TYPE}" \ | |
| --out "${OUT}" \ | |
| --out_json "${OUT_JSON}" \ | |
| "$@" | |