Skip to content

feat: big_tf_unet_2 — intern-driven single-scale teacher pipeline#8

Merged
nathanchenseanwalter merged 1 commit into
mainfrom
big-tf-unet-2
Jul 7, 2026
Merged

feat: big_tf_unet_2 — intern-driven single-scale teacher pipeline#8
nathanchenseanwalter merged 1 commit into
mainfrom
big-tf-unet-2

Conversation

@nathanchenseanwalter

Copy link
Copy Markdown
Contributor

Semi-automated, human-in-the-loop training pipeline. One run trains one single-scale (nfft, hop) teacher model; many runs produce per-scale teachers for later multiscale distillation (distillation out of scope).

Rebuilt on big_tf_unet_ablation internals (single-h5-per-step I/O, auto_params compute-once, forkserver+threadpoolctl baseline pool, SLURM-aware parmap, legacy-API TF32) with a workflow layer for non-expert operators:

  • Run facade + 6 Jupyter notebook templates: run/submit a step, view a gallery, tweak a knob in run.yaml, clear + rerun, accept. All indexing, memory, and data-placement is automated; the operator only turns knobs.
  • Single validated run.yaml per run (pydantic + OmegaConf-merge over defaults; unknown keys and out-of-range values fail loudly before compute).
  • Task matrix with human sign-off + params-hash staleness (a knob change stales downstream steps). File-fenced clears replace the rmtree footgun.
  • sbatch integration routes GPU steps to GPU nodes and heavy CPU steps to CPU nodes; submitted jobs are detached from the notebook kernel.

Methodology changes over the original recipe:

  • One normalization convention N_a(x) = aasinh((x - median)/(a1.4826*MAD)) at every model-facing site (robust median/MAD; asinh soft compression, no hard clamps). a=1 at the denoiser input, a=3 at the dataset (smooth generalization of the old clip(z, +/-3)). Per-modality robust stats are recorded and exported in the deploy manifest.
  • Knee-point thresholds via the kneed package (Kneedle on the positive robust-z ECDF) replacing the hand-rolled triangle method; knobs are knee_sensitivity and delta in robust-sigma units.
  • Energy-level edge-bin detector (catches broad low-frequency plateaus the gradient detector missed).
  • Refine stage replaced with leakage-free out-of-fold soft pseudo-labels: each fold predicts only its held-out samples; the final model trains on q = (1 - model_trust)knee_label + model_trustp_oof. Fixes the old refiner's cross-fold leakage and its backwards entropy criterion, and drops MC-dropout (cheaper).
  • Scale-covariant auto parameters (baseline lam, UNet depth, batch size) so one config works at every resolution.

Adds a quick TJ-II benchmark step (per-image IoU / F1 at the F1-optimal threshold) as a relative tracker against the deployed anchor.

Adds kneed + threadpoolctl to the train dependency group. Tests are collection-safe without train deps.

Semi-automated, human-in-the-loop training pipeline. One run trains one
single-scale (nfft, hop) teacher model; many runs produce per-scale teachers
for later multiscale distillation (distillation out of scope).

Rebuilt on big_tf_unet_ablation internals (single-h5-per-step I/O, auto_params
compute-once, forkserver+threadpoolctl baseline pool, SLURM-aware parmap,
legacy-API TF32) with a workflow layer for non-expert operators:

- Run facade + 6 Jupyter notebook templates: run/submit a step, view a
  gallery, tweak a knob in run.yaml, clear + rerun, accept. All indexing,
  memory, and data-placement is automated; the operator only turns knobs.
- Single validated run.yaml per run (pydantic + OmegaConf-merge over
  defaults; unknown keys and out-of-range values fail loudly before compute).
- Task matrix with human sign-off + params-hash staleness (a knob change
  stales downstream steps). File-fenced clears replace the rmtree footgun.
- sbatch integration routes GPU steps to GPU nodes and heavy CPU steps to CPU
  nodes; submitted jobs are detached from the notebook kernel.

Methodology changes over the original recipe:

- One normalization convention N_a(x) = a*asinh((x - median)/(a*1.4826*MAD))
  at every model-facing site (robust median/MAD; asinh soft compression, no
  hard clamps). a=1 at the denoiser input, a=3 at the dataset (smooth
  generalization of the old clip(z, +/-3)). Per-modality robust stats are
  recorded and exported in the deploy manifest.
- Knee-point thresholds via the kneed package (Kneedle on the positive
  robust-z ECDF) replacing the hand-rolled triangle method; knobs are
  knee_sensitivity and delta in robust-sigma units.
- Energy-level edge-bin detector (catches broad low-frequency plateaus the
  gradient detector missed).
- Refine stage replaced with leakage-free out-of-fold soft pseudo-labels:
  each fold predicts only its held-out samples; the final model trains on
  q = (1 - model_trust)*knee_label + model_trust*p_oof. Fixes the old
  refiner's cross-fold leakage and its backwards entropy criterion, and drops
  MC-dropout (cheaper).
- Scale-covariant auto parameters (baseline lam, UNet depth, batch size) so
  one config works at every resolution.

Adds a quick TJ-II benchmark step (per-image IoU / F1 at the F1-optimal
threshold) as a relative tracker against the deployed anchor.

Adds kneed + threadpoolctl to the train dependency group. Tests are
collection-safe without train deps.
@nathanchenseanwalter nathanchenseanwalter merged commit 0779a2a into main Jul 7, 2026
3 checks passed
@nathanchenseanwalter nathanchenseanwalter deleted the big-tf-unet-2 branch July 7, 2026 20:10
nathanchenseanwalter added a commit that referenced this pull request Jul 8, 2026
feat: big_tf_unet_2 — intern-driven single-scale teacher pipeline
nathanchenseanwalter added a commit that referenced this pull request Jul 8, 2026
feat: big_tf_unet_2 — intern-driven single-scale teacher pipeline
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant