Repository navigation
⚠️ Changes to Existing Model Inference
- Inference entrypoints load EMA weights by default when the checkpoint holds EMA parameters, as
ckpt.tardoes.best_ckpt.tar,best_inference_ckpt.tarandema_ckpt_*.taralready hold EMA weights and are unaffected. Setuse_ema_if_available: falsefor the previous behavior (#1531) - Ocean checkpoints using
ocean_heat_content_correctionproduce different rollouts. The corrector now weights heat content bysea_surface_fraction, and frozen precipitation is no longer counted twice in the precipitation heat flux (#1571, #1570)
Breaking Changes
engine: h5netcdfhas been removed; usenetcdf4(#1540)- The deprecated, unused fields on
NoiseConditionedSFNOBuilderhave been removed. Existing YAML and checkpoints still load (#1500) - Step configs'
output_names,input_names,next_step_input_namesandprognostic_namesreturnfrozenset[str](#1466)
Other behavior changes that do not raise an error:
- With
checkpointing >= 1, the conditional SFNO's input encoder previously received no gradients and stayed at its random initialization. It now trains (#1493) - An inline inference entry's
epochsslice is resolved against training epochs1..max_epochs, with epoch 0 added whenevaluate_before_trainingis set. This can change which epochs coupled configs evaluate (#1409) input_dropoutno longer masks non-optimized rollout steps (#1450)- Nino3.4 power scalars (
*_nino34_index_power_2_5yr,*_1_16yr) are rescaled and can't be compared with earlier runs (#1494)
What's Changed
Inference
stepper_override.correctorreplaces a checkpoint's corrector at inference time, in both standalone and coupled runs (#1441)- Monthly-mean output can be written as zarr (
time_coarsen: {method: monthly_mean},format: {name: zarr}) (#1472) - Coupled inference adds segmented runs (
--segments) that resume after preemption, and aseedoption (#1368, #1440)
Training
TrainStepperConfig.pushforward_stepsruns the first N rollout steps without gradients (#1551)stepper_training.corrector_lossadds opt-in pre-corrector optimization and a penalty on correction magnitude (#1426)residual_predictionaccepts aResidualPredictionConfigthat picks which prognostic variables are predicted as residuals and can normalize them by tendency statistics.true/falsestill work (#1487)- Also new: an
"L1"loss type (#1478),SecondaryDecoderConfig.include_input_step(#1437), and Samudra noise conditioning andlat_pad: pole(#1464, #1566) - On preemption, multi-GPU jobs stop without faulting the node, and they still save a restart checkpoint when not model-parallel (#1425, #1438)
Ocean
- New ocean corrector options: salt content correction,
zosglobal-mean correction, and a"prescribed_open_ocean"method for thehfdscorrection (#1533, #1564, #1501)
Downscaling
- Video PMD: an endpoint-conditioned video diffusion model, with
fme.downscaling.video_trainandfme.downscaling.video_inferenceentrypoints (#1413, #1415, #1416)
Performance and Environment
- Zarr data loading from a networked filesystem is 2.5–6x faster with the zarrs codec pipeline (#1421, #1422). The zarr writer is 3.6x faster to cloud object storage and about 8x faster to a networked filesystem (#1486, #1534)
zarrs>=0.2.3is a new dependency, the minimumzarris now 3.1, andh5netcdf/h5pyhave been dropped
Fixes
- Multi-GPU per-channel loss logging (#1466), zarr inference with zero data workers (#1524), a multi-GPU ENSO aggregator deadlock (#1490), and NaN
best_inference_errorlogging (#1442)
Full Changelog: v2026.8.0...v2026.10.0