mahf708's picture
record where kept layers sit in the network
7de4d03 verified
|
Raw History Blame Contribute Delete
3.44 kB
---
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.