6.5 KiB
6.5 KiB
impl/work-history/recent
2026-09-01 Tue
- Fixed libauc-auroc sigmoid bug:
torch.sigmoid(logits)beforeAUCMLosscollapsed outputs to ~0.047 causing inverted predictions (AUC ~0.34); removing sigmoid gave AUC 0.8368 on chestxray14 probe - Fixed AUCMLoss
a=/=b=/=alphastate carry-over between episodes (nn.Parameters not reset); addedreset_state()call before each episode in all libauc resume scripts - Applied grace_period=0 policy across all experiments: was causing early-stopping to fire before training had meaningfully started (best epoch 3-13 out of 5000)
- Completed chestxray14 libauc-auroc rerun (no sigmoid, lr=0.01, grace_period=0): mean AUC=0.8351 ± 0.0019 across 5 episodes
- Completed bank-marketing full rerun: roll-aoc mean=0.9312 ± 0.0019, libauc-auroc mean=0.9364 ± 0.0015, all 7 configs in 0.930–0.936 range (grace_period=0 fixed previously broken results of ~0.511)
- Completed food101n libauc-auroc (no sigmoid): mean AUC=0.8572 ± 0.0015 across 3 episodes; roll-aoc leads at 0.8667
- Launched cifar10n full rerun on beacon-wsl (grace_period=0 everywhere, no-sigmoid libauc, writes to results/cifar10n); ~10h remaining as of 18:00
2026-08-28 Thu
- Returned from vacation; checked both remote machines for run status
- beacon-wsl (food101n
experiment-food101n-rerun-weighted.py): found crashed during gce-0.7 ep1 ~2 weeks ago — root cause:MLFLOW_TRACKING_URIwas set pointing tomlflow.zakobar.com, server went down mid-training causingMlflowException(502s then DNS failure); bce-weighted (3/3) and mae (3/3) were complete, gce-0.7 ep0 saved, ep1 dir empty - Fixed MLflow crash vector: (1) unset
MLFLOW_TRACKING_URIat top of resume script; (2) added try/except in_MLFlowRun.trackto suppress per-metric exceptions without crashing training - Created
experiment-food101n-rerun-weighted-resume.pywith per-episode skip logic (checkstest-res.pklexistence); launched detached on beacon-wsl; confirmed GPU active (RTX 3050), gce-0.7 ep1+2 and focal-loss ep0 completed, focal-loss ep1 in progress as of last check (~35h remaining) - mac (keel noise run from Aug 26): fully completed — all 12 datasets × 3 noise levels × 8 configs × 10 episodes done
- Fetched keel noise results from mac; flattened
results-final/keel-noise-{05,10,20}/structure (init_experimenthad inserted timestamp subdirs; removed them, kept latest Aug-26 run per dataset, discarded stale Aug-01 partial dirs) - Discovered roll-aoc config disadvantage in KEEL runs:
max_iters=1500andpatience=100vs baselinesmax_iters=5000/patience=500(3.3× fewer epochs, 5× less patience); confirmed no override inrun_noisy.pyorrun_all_noisy.sh - Created
experiments/keel/run_noisy_fair_roll.py: reruns roll-aoc only across all 12 datasets × 3 noise levels × 10 episodes with fair config (max_iters=5000,patience=500); has skip logic; writes toresults-fair-roll/keel-noise-{05,10,20}/<dataset>/roll-aoc/; launched detached on mac (CPU, no MLflow) - Plan: when
results-fair-rollis done, swaproll-aoc/dirs intoresults-final/keel-noise-*/to replace unfair results
2026-08-01 Fri
- Checked experiment status: beacon-wsl running food101n (5/21 episodes done, bce-weighted ep3 in progress); Mac idle — chestxray14 had crashed Jul 31 20:51
- Diagnosed chestxray14 crash:
ValueError: All episodes have NaN/inf predictions — cannot build ROC curveduring ROC summary generation after libauc-auroc training; non-libauc configs may have completed; logged as TODO with resume notes - Set up KEEL label noise ablation (5%, 10%, 20%) × 12 datasets × 10 episodes →
results-final/keel-noise-{05,10,20}/; createdexperiments/keel/run_all_noise_levels.sh - Added
--results-dir,--cpu,--no-mpflags torun_noisy.pyandrun_all_noisy.sh; addedforce_cpuparam torun_keel_experimentin_base.py - Benchmarked MPS vs CPU for KEEL-sized batches (72 samples, 9 features, 3-layer MLP): CPU is 6.6x faster — MPS kernel dispatch overhead dominates at tiny batch sizes
- Discovered
sequential_episodes=Trueis dead code for CPU +is_mp=Truepath: flag only gates the MPS subprocess branch; CPU always usesmp.Pool(n_episodes)whenis_mp=True, regardless of the flag - Discovered: MLflow was connected to remote server in the original MPS run, adding per-epoch network I/O that dominated wall time (~1.6s/epoch vs 54ms without)
- Changed
gen_criterialogging fromlogging.infotologging.debug(reduces StreamHandler flush overhead per epoch; per-epoch losses still captured in debug.log) - Settled on
--cpu --no-mp+unset MLFLOW_TRACKING_URIfor all KEEL noisy runs; hardcoded inrun_all_noise_levels.sh - Identified residual per-epoch overhead: ~54ms (ExperimentDataLoader shuffle+argwhere per epoch,
pd.DataFrameconstruction ×2 ingen_criteria, extra loss forward in_get_loss) vs 0.5ms raw compute - Launched final KEEL noise ablation on Mac: CPU, no-mp, no MLflow; estimated ~21h for all 3 noise levels
2026-07-24 Thu
- Investigated stalled cifar10n remote run: 5 workers from 6:45AM were still alive after 15.5h with 0 results; previous session's ps check had missed them, making the run appear dead
- Diagnosed OOM: memory at ~46MB free at 7h mark with 5 concurrent MPS workers on 16GB; new run with 3 workers also OOM'd after 8.5h (26GB compressed pages, 5B decompressions)
- Fixed root cause: added
sequential_episodesflag torun_configurationsand_perform_multiple_episodesinsrc/experiment.py— when True, bypasses the subprocess-parallel path and runs episodes one at a time in-process on MPS; cifar10n now uses this - Killed 3-worker subprocess run on remote; restarted cifar10n with
sequential_episodes=True— now running single-process, one episode at a time - Added
kaggletoflake.nixbuildInputs; set up~/.config/kaggle/kaggle.json(user: anerzakobar); downloaded creditcard.csv (144MB) to~/.data/creditcard/ - Rewrote
experiments/large/experiment-creditcard.py: replaced old ad-hoc FPR configs with full baseline suite matching KEEL/_base.py — roll-aoc, roll-tpr90, bce-weighted, libauc-auroc, gce-0.7, mae, focal-loss, asymmetric-loss; StepLR on all configs; N_EPISODES=5 - Launched creditcard experiment locally in background (5 episodes × 8 configs, CPU multiprocessing)
- Reviewed KEEL AUC results table: libauc-auroc wins 6/12 datasets (mean 0.890); asymmetric-loss strong second (0.887); roll-aoc 6th (0.872); roll-tpr90 last (0.842, dragged by new-thyroid1 instability)