Skip to content

Releases: Emmi-AI/noether

v2026.4.0

29 Apr 09:44
0dbdd4c

Choose a tag to compare

Noether Release Notes

This release moves Noether to calendar-based versioning (#189) and ships a major round of new recipes, a higher-level training API, broader AB-UPT capabilities, and a measurable quality improvement on the DrivAerML baseline.

Highlights

Improved AB-UPT baseline on DrivAerML

RoPE scaling (#184) combined with the new Muon optimizer (#158) lifts AB-UPT performance on DrivAerML over the previous baseline. See the full comparison in the W&B report.

New recipes

  • AB-UPT showcase with scalable query-based inference (#153) — an end-to-end DrivAerML walkthrough covering data fetching, training, and evaluation. Designed to be the recommended starting point for AB-UPT users.
  • Heat transfer recipe (#146) — Neural surrogate for the SIMSHIFT Heatsink benchmark (819 simulations) predicting velocity, temperature, and pressure on 3D volume fields conditioned on simulation parameters. Supports both AB-UPT and Transolver++.
  • Emmi-Wing HF subset recipe (#159) — small, fast-to-iterate aerodynamics recipe backed by the public EmmiAI/Emmi-Wing HuggingFace dataset, with train/val/eval splits.
  • Aero CFD recipe (#143) — the previous tutorial promoted to a full recipe.

High-level training API

Training presets (#128) — DomainPreset encapsulates dataset stats, normalizers, pipeline defaults, and forward properties. Per-dataset training scripts (examples/train_*.py) now expose only experiment-level knobs (model, hidden dim, epochs, device, accelerator, paths).

AB-UPT capabilities

  • Untied physics blocks (#177) — self_untied, cross_untied, perceiver_untied variants with per-branch weights via UntiedLinear (batched or grouped matmul). Removes the need to configure decoder-block counts per domain and enables cross-attention between branches with untied weights.
  • Arbitrary domains (#139) (breaking) — replaces the hardcoded surface or volume split with a ModelDataSpecs dict, so AB-UPT can be applied to any number of named domains (gas, liquid, solid, multi-phase, …).
  • Optional geometry encoder (#150) and Muon optimizer support (#158) (breaking) — Muon is paired with a secondary optimizer for non-2D tensors. QKV is split into separate Q, K, V matrices (breaks old checkpoints).

Workflow and infrastructure

  • submitit-based multirun job submission (#164) (breaking) — replaces the custom sbatch --wrap path with submitit.AutoExecutor, giving Hydra multirun sweeps as SLURM array jobs with login-node validation. SlurmConfig field names now match AutoExecutor.update_parameters (name, slurm_partition, mem_gb, timeout_min, …).
  • Development CLI (#142) — noether-development runs individual modules (datasets, models, trainers) in isolation with verbose logging for fast iteration without the full pipeline.
  • EMA evaluation (#183, #192) — EmaCallback now accepts nested eval_callbacks that run on swapped-in EMA weights and emit metrics under an ema=<factor>/ prefix, removing the need for a separate eval run.
  • Profiling callback (#161) — wraps the PyTorch profiler as a standard callback.
  • Reproducibility (#179, #180) — DataLoader workers are seeded and use_deterministic_algorithms is enabled. Non-deterministic dataset ordering fixed.
  • Dataset hooks (#154) — pre_getitem and post_getitem hooks on the base Dataset for lightweight per-sample customization.

Breaking changes

  • #138 — shared attention renamed to self. Auto-converted with a deprecation warning during the transition.
  • #139 — fixed surface or volume domains generalized to arbitrary domains. Replace AeroDataSpecs with the ModelDataSpecs dict.
  • #142 — development CLI introduces new entry points (additive; review CLI docs).
  • #158 — Muon support splits QKV into separate Q, K, V matrices. Old AB-UPT checkpoints will not load.
  • #164 — submitit replaces the custom sbatch wrapper. Rename SlurmConfig fields. Remove --output and --error. Sweeps may not vary slurm: fields.
  • #189 — versioning switched to CalVer. Manual release process. Release-please config removed.

Detailed changes

Features

Fixes

  • Distributed training hanging with submit_job by @HennerM in #141
  • calculate_statistics compatibility with any dataset subclass by @HennerM in #147
  • Attempt HF download without HF_TOKEN by @HennerM in #152
  • Support configs without custom top-level schema in submit script by @HennerM in #151
  • move_item_to_device on MPS by @Ndles in #157
  • Log total parameter count for non-composite models by @HennerM in #155
  • Support normalization and denormalization on CUDA by @HennerM in #156
  • StopIteration error when training on fractional epoch by @HennerM in #162
  • Transolver uses Transolver attention, not regular attention by @MauritsBleeker in #166
  • Missed import rename by @HennerM in #168
  • Aero callback uses correct denormalization key by @MauritsBleeker in #169
  • aero_cfd ShapeNet recipe by @HennerM in #173
  • Default to unlimited job time by @HennerM in #176
  • Non-deterministic dataset order by @HennerM in #180
  • Avoid error when loading model with noether-eval due to stored computed fields by @kinggongzilla in #170
  • Catch OOM in slurm submission by @HennerM in #190
  • Flush tracker on eval and exception by @HennerM in #182
  • resume_from_checkpoint for eval callbacks by @HennerM in #193

Docs

Chore

CI

Tests

v2.0.0

27 Mar 14:37
fefea03

Choose a tag to compare

2.0.0 (2026-03-27)

⚠ BREAKING CHANGES

  • Add kv caching to AB-UPT (#131)
  • simplify model init methods by moving config class instantiation to the config classes themself (#110)

✨ Features

  • add attention mask support for padded token sequences (#115) (5474841)
  • add cli tool to validate config first and lauch a slurm job via… (#94) (d734b6a)
  • Add kv caching to AB-UPT (#131) (bfea608)
  • add noether-init for scaffolding (#113) (de3b6b9)
  • add signal handlers to BaseTrainer (#111) (5769509)
  • add sphinx doctest (#100) (e3ef887)
  • addnoether-init cli command to create a new boilerplate project to get started with implementing custom models and datasets. After running this command, the train command is printed, which the user can run to start a test training run immediately. (de3b6b9)
  • eliminate requirement for custom root schema (#108) (81a62ae)
  • match callback state dicts by key instead of position on resume (#114) (12bbaba)
  • support for resuming training without data loading (#130) (492f041), closes #55

🐛 Bug Fixes

  • bring back missing tutorial image (#112) (4772538)
  • Remove bad lr scheduler default value and make it required instead (#129) (d4dbb0a)
  • replace wrong dataset class for stats cli tool (#103) (4cad333)
  • split input sequence correctly and enable using kv_dim (#116) (77dc41d)
  • submit job CLI was not intercepting Hydra properly (#127) (9e624b8)
  • variable duplication bug in caeml preprocessing script to st… (#125) (22ac5f0)
  • various smaller bugs (#104) (308607a)
  • wrong semantics for BestCheckpoint tolerance config (#105) (b5895cb)
  • zero division in ProgressCallback in edge case (#122) (b3811b0)

♻️ Code Refactoring

  • simplify model init methods by moving config class instantiation to the config classes themself (#110) (ae2ed95)

v1.1.0

10 Feb 12:34
54b88e4

Choose a tag to compare

1.1.0 (2026-02-10)

✨ Features

🐛 Bug Fixes

  • add help to noether-train and use for installation verification (#34) (717658c)
  • fix failing test, remove unused classes, update wrong link in docs, and update tutorial readme (#32) (2a4b0b4)
  • use mypy and pytest config as intended in pyproject.toml (#40) (165770c)

📚 Documentation

v1.0.0

27 Jan 08:39
7c9704e

Choose a tag to compare

Introducing Noether

The Noether Framework is an open software framework for Engineering AI, introducing repeatable, extensible, and production-oriented workflows. Built on transformer building blocks, it delivers the full engineering stack, allowing teams to build, train, and apply industrial models across engineering verticals, eliminating the need for component re-engineering and an in-house deep learning team.

Supporting a variety of model architectures such as AB-UPT and datasets to get you started on Engineering AI. Provides all the building blocks and the scaffolding necessary to train neural surrogates for CFD and other engineering problems.

  • Model zoo with AB-UPT, UPT and others
  • Dataset zoo: AhmedML, DrivAerML, DrivAerNet++, Emmi-Wing
  • Config driven experiments
  • API for developing custom pipelines, models, datasets, etc.
  • Extensive documentation and how-tos