E3SMv3 emulator checkpoints for the E3SM AI group hackathon, 25 September 2026
Not fit for forcing or scenario experiments. Both checkpoints reproduce the E3SMv3 historical run well when the other half of the climate system is handed to them, but neither should be trusted to respond to a change in forcing. Use them to study how an emulator represents the climate, not what the climate does. Results from them show how the model represents forcing.
| Folder | Checkpoint | Fit for | Not fit for |
|---|---|---|---|
E05-FT-S01/ |
E05-FT.aug26.atm.A3_B16_C1_L0_O5_W0_X0.S01, atmosphere, noise-conditioned SFNO (8 blocks × 384 channels), 1°, 6-hourly, SST prescribed |
Historical runs with prescribed SST; looking inside the network | Any forcing experiment |
E11-FT-S01/ |
E11-FT.aug26.ocn.A0_B16_C0_L0_O5_W0_X0.S01, ocean, Samudra U-Net, 1°, 5-daily, surface fluxes prescribed |
Replaying the historical run from reference fluxes; looking inside the network | Any change to the fluxes |
These are the checkpoints the latents in E3SM-Project/aigs-hack-sep26-latents were recorded from. E05-FT S01 is not the shipped atmosphere (S03).
Run an experiment yourself
The kit/ folder holds what a 2015 atmosphere run needs besides the checkpoint: the initial condition
(2015-01-03 12:00), two months of forcing (the inputs only), and configs for the control and each intervention.
One run uses about 4 GB of GPU memory.
$ pip install "fme @ git+https://github.com/E3SM-Project/ace@e3sm/exps/hist-v2026.8.0"
$ hf download E3SM-Project/aigs-hack-sep26-models --local-dir aigs-models && cd aigs-models
$ python -m fme.ace.inference kit/configs/atm-co2x1.25.yaml
| Config | Intervention |
|---|---|
atm-ctrl.yaml |
none |
atm-co2x1.25.yaml, atm-co2x0.8.yaml |
overwrite.multiply_scalar.global_mean_co2 |
atm-p4K.yaml |
overwrite.add_scalar.TS: 4.0 |
atm-aerofrz.yaml |
aerosol diagnostics swapped for their 1965 values (kit/forcing-aerofrz/) |
Every config sets seed: 0. Keep it: the model is stochastic, and a shared seed is what makes two runs
comparable node for node. Change the intervention by editing the overwrite block; make it longer with
n_forward_steps (the forcing covers January and February 2015).
To record the latents as well, and to steer a layer along a feature, use the exporter in the kit
(kit/export_fme_latents.py; it needs xaig 0.3 or later in the same
environment):
$ python kit/export_fme_latents.py kit/configs/atm-ctrl.yaml --out my-run --steps 20 \
--steer 0:sae_L00.npz:FEATURE:3 # push one SAE feature of layer 0 by +3 at every node
It reproduces the published latents bit for bit. kit/vectors/ holds the three steering vectors some of the
published runs used; the
dataset card gives the
command for every run, says how the vectors were made, and how to
make your own:
a difference between two runs, a contrast within one (rain against no rain, land against ocean), a basis
direction, or a probe.