--- license: bsd-3-clause tags: - climate - emulator - e3sm - ace - samudra --- # 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](https://huggingface.co/datasets/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. ```console $ 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](https://pypi.org/project/xaig/) 0.3 or later in the same environment): ```console $ 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](https://huggingface.co/datasets/E3SM-Project/aigs-hack-sep26-latents#reproduce-a-run) gives the command for every run, says how the vectors were made, and how to [make your own](https://huggingface.co/datasets/E3SM-Project/aigs-hack-sep26-latents#making-your-own-steering-vector): a difference between two runs, a contrast within one (rain against no rain, land against ocean), a basis direction, or a probe.