ML weather and climate models: architectures, training and evaluation
Before this lesson: lesson 05 (chaos and error growth), lesson 06 (4D-Var, which makes the initial states), lesson 07 (the CRPS, PIT and calibration) and lesson 09 (spherical harmonics and the SFNO). Helpful: lesson 03 (gradients through a solver), lesson 13 (diffusion models), and in the deep-learning track graph neural networks and transformers. Time: about 90 minutes, plus the notebook.
Why this matters #
- ML runs in operational forecasting. As of 2026, ECMWF runs the Artificial Intelligence Forecasting System next to its physics model: AIFS Single became operational on 25 February 2025, and the 51-member ensemble AIFS ENS on 1 July 2025.
- ML models match or beat physics on standard scores. GraphCast (Lam et al. 2023) beat the ECMWF high-resolution forecast on 90 % of 1380 verification targets; GenCast (Price et al. 2024) beat the ECMWF ensemble on more than 97 % of 1320 targets. These claims depend on how the evaluation is done, which is the second half of this lesson.
- Climate needs long, stable runs. Hybrid models such as NeuralGCM (Kochkov et al. 2024) and emulators such as ACE (Watt-Meyer et al. 2023) run for decades, where new questions appear: stability, conservation and changing forcing.
- The whole track meets here. The initial states come from 4D-Var (lesson 06). Errors grow because the atmosphere is chaotic (lesson 05). SFNO and NeuralGCM are spectral on the sphere (lessons 08, 09). Training through many steps is reverse-mode differentiation (lessons 01, 03). Ensembles come from diffusion models (lesson 13) and are scored with the CRPS (lesson 07).
1. Predict first #
2. The picture #
The forecast problem #
The state of the atmosphere is a stack of fields on the sphere. For a model like GraphCast it is 6 variables (temperature, wind components, humidity, geopotential, vertical velocity) on 37 pressure levels, plus 5 surface variables, at each of the points of a 0.25° latitude–longitude grid. That is about 235 million numbers. An ML weather model is a learned map
with weights . A forecast rolls out the map: it applies to its own output again and again, 40 times for 10 days. The lead time is the time since the start of the forecast (the initialisation).
The training data is ERA5. ERA5 is ECMWF's reanalysis (Hersbach et al. 2020): one fixed version of the physics model, kept close to all available observations with 4D-Var (lesson 06), run over the past. As of 2026 it is hourly, 0.25°, on 37 pressure levels, from 1940 to a few days ago. It is the best estimate of the past atmosphere. It is not observations: in regions with few observations (the upper atmosphere over oceans, early decades) it is mostly the physics model, and its errors become the "truth" an ML model learns.
Model families #
All the families below keep the same outer loop: state on the grid in, next state on the grid out, rolled out. They differ in how they move information across the sphere.
Choose a family and press "Next stage" (or click a box). The blue boxes are the state on the grid, the orange boxes are learned networks, the violet box is physics (the dynamical core of the hybrid model), and the yellow box is the current stage. Notice that every family has the same rollout loop (the dashed arrow), and that the hybrid and the SFNO use the spherical-harmonic tools of lesson 09.
- Graph networks on a mesh (GraphCast; AIFS). An encoder sends the grid values to the nodes of a mesh that covers the sphere evenly (GraphCast: a refined icosahedron with 40,962 nodes). A processor updates the mesh many times, by message passing (GraphCast) or a sliding-window transformer (AIFS, Lang et al. 2024). A decoder sends the result back to the grid. The mesh avoids the crowding of grid points near the poles.
- 3D transformers (Pangu-Weather, Bi et al. 2023). The state is a 3D cube (pressure level × latitude × longitude) cut into patches. Attention works in local 3D windows with a learned bias that depends on the position on the Earth. Four models with steps of 1, 3, 6 and 24 hours are combined, so a long forecast needs fewer steps.
- Spherical Fourier neural operators (SFNO, Bonev et al. 2023; the base of FourCastNet v2 and of the ACE climate emulator). Each layer transforms to spherical harmonics, multiplies each degree by learned weights, and transforms back (lesson 09). The layer is a convolution on the sphere, so it respects rotations; the paper reports stable rollouts of one year (1460 steps).
- Hybrid models (NeuralGCM, Kochkov et al. 2024). A differentiable dynamical core solves the primitive equations of the atmosphere with a spectral method. A neural network, shared by all atmospheric columns, adds the tendencies of the processes that the grid does not resolve (clouds, convection). The model is trained end to end through the solver (lesson 03).
- Generative ensembles (GenCast, Price et al. 2024; AIFS ENS). GenCast is a diffusion model (lesson 13): given the two last states, it samples one possible next state (12-hour steps) from noise. New noise gives a new ensemble member. AIFS ENS is instead trained directly with a CRPS loss (Lang et al. 2024, AIFS-CRPS).
Training: weighted MSE and rollouts #
A deterministic model is trained to minimise a weighted mean squared error between the predicted and the true next state. Each grid point is weighted by its area (section 3), each variable and pressure level by a chosen weight. After this one-step training, the model is fine-tuned on rollouts: it runs steps on its own output, and the loss adds the errors of all steps,
with and (written with one input state for short). is the weighted sum of squares.
The gradient flows back through all applications of : reverse-mode differentiation through a time-stepper, as in lesson 03. GraphCast is fine-tuned with rollouts that grow from 2 to 12 steps (3 days). Why does this help? A model trained on one step never sees its own errors as input. In a rollout it does, and the loss teaches it to keep these errors small over several steps.
Errors grow, then level off #
The atmosphere is chaotic (lesson 05): a small initial error grows roughly like , with the largest Lyapunov exponent. A learned model adds its own error at every step. The error cannot grow forever: when the forecast has lost all information, it is like a random state of the climate. Two independent states with climatological standard deviation differ by in RMSE. The climatological mean itself has RMSE , and an ensemble mean tends to it.
A toy atmosphere: Lorenz-96 with 40 variables (one step = 6 hours). Learned surrogates (orange) were trained on noisy data with a one-step loss (dashed) or a -step rollout loss (solid). Compare with the true equations started from a small initial error: one run (blue) and the mean of 20 runs (violet). Change : the rollout loss lowers the error over the first days. Move : a better start helps the physics model for a while, then chaos wins. Notice where the curves level off: one run near , the ensemble mean near .
A model is trained with a one-step loss and then fine-tuned with a 4-step rollout loss. What does the fine-tuning change?
In a rollout the input of step 2 is the model's own prediction, not the true state, so the gradient (back through all 4 steps) pushes the model to handle its own errors. It cannot remove chaos: the true dynamics still amplify any error, and all forecasts level off at long lead times.
3. Definitions and main results #
Notation. is a forecast of one variable at one lead time, for initialisation (), latitude row () and longitude (). is the ground truth at the matching valid time, and is a climatology (the long-term mean for that day of the year and time of day). An ensemble has members (here we use latitude , not the colatitude of lesson 09).
Area weights #
On a latitude–longitude grid every row has the same number of points, but a row near a pole covers a tiny area. The area of the band between latitudes and is . WeatherBench 2 (WB2; Rasp et al. 2024, eq. 1) uses the latitude weights
For a row of width around ,
so . Without weights, the many small polar cells dominate every mean.
On the 0.25° grid, 242 of the 721 latitude rows (33.6 %) have . What fraction of the Earth's area lies poleward of 60°?
The area north of latitude is proportional to , and the same holds in the south, so the fraction is . An unweighted mean counts the polar caps times too much.
Deterministic scores #
These are the definitions of WB2 §4.3.
- RMSE (eq. 2):
The time mean is inside the square root. (WeatherBench 1 took it outside; WB2 found the difference to be below 2 % on average.)
- ACC, the anomaly correlation coefficient (eqs. 4–5): with anomalies and ,
It asks whether the pattern of the anomalies is right, whatever its amplitude. The climatology is the ERA5 mean over 1990–2019 for each day of the year and time of day, smoothed over 61 days. ECMWF's rule of thumb (quoted in WB2): below an ACC of 0.6, the positions of large weather systems are no longer useful.
- Bias maps (the time mean of ), and SEEPS for precipitation (a score on three categories: dry, light, heavy).
- Energy spectra (WB2 §4.5): the power of the Fourier modes along latitude circles. A blurry forecast has too little power at high wavenumbers (small scales).
Theorem 1 (the MSE-optimal forecast is the conditional mean) #
Let be all the information available at the initialisation, let the future truth be random given , and let . For every forecast that is a function of :
So minimises the expected squared error, and no forecast can go below the floor .
Proof.
- Write .
- Square and take . Since is known given , the result is .
- , so the middle term vanishes. The last term is by definition.
Consequences.
- Blurring. As the lead time grows, grows, and is an average over many possible weather states. A front that may be here or 300 km further east is smeared over both places. A model trained with MSE learns this average: low RMSE, high ACC, smooth fields, too little small-scale energy. WB2 shows this blurring for the deterministic ML models.
- Double penalty. A sharp, realistic forecast , drawn from the same conditional distribution as but independent of it, has : twice the floor. It is penalised once for missing the feature where it happened, and once for putting it where it did not happen.
- So RMSE and ACC alone cannot rank a smooth model against a sharp one. Compare spectra, and compare ensembles with probabilistic scores.
Move the shift of the true feature (blue). Forecast A (orange, dashed) puts a sharp feature at the expected place. Forecast B (violet) is the conditional mean: the feature averaged over the possible positions, with uncertainty . Notice three things. For a clear miss, A has a larger RMSE than even "no feature". Averaged over the possible shifts, B always wins. In the spectra (second chart), A has exactly the spectrum of the truth, while B has too little power at high wavenumbers.
The truth at a point is , where is known at the start and is unpredictable. Which forecast has the smallest expected squared error?
By Theorem 1 the expected squared error is , smallest for . The realistic sample has expected squared error : the double penalty. It is the better picture of the weather but the worse forecast by MSE.
Probabilistic scores #
- CRPS of an ensemble. From lesson 07, with independent draws from . For an ensemble , WB2 (eq. 8) uses the fair estimator (Zamo and Naveau 2018) at each grid point, then the weighted mean over space and time:
The standard estimator divides the second sum by . It is the CRPS of the empirical distribution of the members (a CDF with steps).
- Why "fair". The diagonal terms of the double sum are 0. Each of the other pairs has expectation . So the fair estimator is unbiased for the CRPS of the distribution the members come from: a small ensemble is not punished for being small. The standard estimator keeps the zero diagonal in a sum divided by , so it is too large on average by .
- A degeneracy. For the fair CRPS is 0 whenever lies between the two members, however far apart they are. AIFS-CRPS (Lang et al. 2024) therefore trains with an "almost fair" CRPS, which removes most of the bias and avoids this degeneracy.
- Spread–skill ratio (WB2 eqs. 9–10): the spread is , with the ensemble variance at each point (with ). The skill is the RMSE of the ensemble mean, and the ratio is spread/skill. A ratio below 1 means the ensemble is under-dispersive (overconfident); above 1, over-dispersive. The rank histogram (the rank of among the members, bins) is the ensemble version of the PIT histogram of lesson 07.
Theorem 2 (spread and skill of a perfect ensemble) #
Let the truth and the members be independent draws, given , from the same distribution with mean and variance . Let be the ensemble mean. Then
while the member variance with has expectation .
Proof.
- . The two parts are independent and have mean 0.
- (a mean of independent draws) and . Variances of independent parts add: .
- The sample variance with is unbiased: its expectation is .
So skill² spread² on average, and even a perfect ensemble has a spread–skill ratio of about : for 10 members, for 50. WB2 eq. 9 has no correction for this; Fortin et al. (2014) multiply the spread by . A small shortfall below 1 is expected; a large one is a real problem.
Change the ensemble size and the spread factor . Each of 3000 cases has a predictable part and unit noise; the members are drawn with spread ( is the perfect ensemble). Left: the rank histogram. Right: the mean CRPS against , with the standard and the fair estimator (lines: expected values; dots: this sample). Try "perfect, M = 2": the fair CRPS stays at , the standard one is much higher, and spread/skill is about . Then try "too narrow".
Two members , outcome . What are the fair and the standard CRPS?
and . Fair: . Standard: . The standard estimator is larger: it punishes the small ensemble. (The fair CRPS would be 0 only if were between the members.)
A perfect 10-member ensemble is evaluated on many cases. What spread–skill ratio (WB2 eq. 9, no correction) do you expect?
By Theorem 2 the squared error of the mean is while the spread² is , so spread/skill . The mean of 10 members still has its own sampling error, which makes the skill (the RMSE) a little larger than the spread.
A fair comparison: the WeatherBench 2 protocol #
| Choice | WB2 rule | Why |
|---|---|---|
| Test period | all 00 and 12 UTC initialisations in 2020 (732 forecasts) | held out from the training data of the ML models in the benchmark |
| Ground truth | ERA5 for models started from ERA5; for the ECMWF physics forecasts, the operational analysis (in practice the forecast at lead time 0) | a model verified against a different analysis than the one it starts from has an error even at lead time 0 |
| Resolution | forecasts and truth regridded first-order conservatively to 1.5° () | scores change with resolution and with the regridding method |
| Time convention | by initialisation time | "2020" means forecasts started in 2020 |
| Metrics | RMSE, ACC, bias, SEEPS; CRPS and spread–skill for ensembles; spectra | each one sees a different failure |
Rules for your own results:
- Never train or tune on the test year. If your model has seen 2020, evaluate it on a later year, and evaluate the baselines on the same year.
- Same ground truth, grid and regridding for every model in one plot.
- Scores against lead time, not one number.
- Test differences with paired scores. Score both models on the same initialisations and study the difference per initialisation. Forecasts started on nearby days are correlated, so resample whole blocks of days (a block bootstrap; see the bootstrap lesson), not single days.
- Look beyond RMSE: spectra, bias maps, the CRPS for ensembles, case studies (a cyclone, a heat wave).
- Watch the units: WB2 stores geopotential in m² s⁻². Geopotential height (m) times m s⁻² gives geopotential.
Weather versus climate #
A weather model is judged on single forecasts up to two weeks. A climate model is judged on statistics over decades: long-term means, variability, extremes and trends. This changes the problem.
- Stability. A rollout of 100 years is about 146,000 steps of 6 hours. Small errors that do not matter at day 10 can make the model drift or blow up. Spherical layers (SFNO) and hybrid models help; ACE, an SFNO-based emulator of a physics atmosphere model, is stable for 100 years (Watt-Meyer et al. 2023), and NeuralGCM tracks global mean temperature over multiple decades with prescribed sea-surface temperatures.
- Conservation. Over long runs, small leaks of mass, moisture or energy add up. ACE nearly conserves column moisture without an explicit constraint; other models add constraints.
- Changing forcing. A climate projection asks what happens with more greenhouse gases than in any training year. That is out of distribution for a model trained on the past. Hybrid models keep the physics of the dynamical core; pure ML models must be tested on held-out forcing (for example a warmer or a historical sea-surface temperature data set they have not seen).
Beyond the atmosphere: ML in seismology #
The same ideas appear in seismology. Deep-learning phase pickers such as PhaseNet (Zhu and Beroza 2019) and EQTransformer (Mousavi et al. 2020) read three-component seismograms and output the probability of a P- or S-wave arrival at each time. They find many more small earthquakes than manual picking, and these denser catalogs show fault structures in more detail (Mousavi and Beroza 2022). The evaluation questions are the same as here: a strict hold-out of events and regions, proper scores for probabilistic outputs, and spectra to catch blurred waveforms. For imaging the Earth's interior, see lesson 04.
Answers to section 1.
- RMSE cannot decide it. By Theorem 1, the smooth model is closer to the conditional mean, which minimises RMSE; the realistic model pays the double penalty. Compare spectra, and compare ensembles with the CRPS and the spread–skill ratio.
- Rows with are per hemisphere, of , so 33.6 % of the points. They cover of the area. An unweighted mean counts the polar caps about 2.5 times too much.
- Smaller. By Theorem 2, the RMSE of the mean is and the spread is , so spread/skill .
4. Worked example #
(a) Area weights. Three bands of 60°: , , .
- : ; ; .
- Mean: . Weights: .
- Suppose the squared errors are 4, 1 and 4 K² in the three bands (4 points each).
- Unweighted: K.
- Weighted: K.
The unweighted score is pulled up by the polar bands, which cover only half of the area.
(b) Double penalty. A 1D strip of four cells; the truth has a feature in cell 2: .
- A sharp forecast one cell off, : two cells are wrong by 1, MSE .
- No feature at all, : MSE .
- A smeared forecast, : two cells are wrong by , MSE .
If the feature is equally likely in cells 2 and 3, the smeared forecast is the conditional mean. Its MSE is in both cases. The sharp forecast at cell 2 has MSE 0 or , so on average: twice as much. The smeared forecast wins (Theorem 1), although it never looks like a real outcome.
(c) CRPS of a small ensemble. Members , outcome .
- First term: .
- Pairs: ; each pair counts twice, so .
- Fair: .
- Standard: . This equals for the step CDF of the members: .
- The ensemble mean as a deterministic forecast: CRPS absolute error .
(d) Spread–skill of a perfect ensemble. : . : .
(e) Units. A Z500 RMSE of 35 m of geopotential height is m² s⁻² of geopotential.
5. In code #
NumPy checks the formulas on a toy world where everything is known. The truth is a predictable signal plus unpredictable noise of variance 1, so the conditional mean is the signal, and a perfect ensemble draws its members exactly like the truth.
import numpy as np
# WeatherBench 2 latitude weights (eq. 1) on the 1.5-degree grid (240 x 121, poles included)
lat = np.linspace(-90, 90, 121)
edges = np.concatenate([[-90], (lat[:-1] + lat[1:]) / 2, [90]])
w = np.diff(np.sin(np.deg2rad(edges)))
w /= w.mean()
print(w[[0, 30, 60]].round(4)) # pole row, 45 S, equator: [0.0052 1.1199 1.5838]
# A toy world: truth = predictable signal + unpredictable noise (variance 1 each)
rng = np.random.default_rng(0)
T, I, J, M = 8, lat.size, 240, 10
signal = rng.standard_normal((T, I, J))
obs = signal + rng.standard_normal((T, I, J))
ens = signal[:, None] + rng.standard_normal((T, M, I, J)) # a perfect ensemble
wb = w[None, :, None]
def rmse(f, o): # WB2 eq. 2: time mean inside the square root
return np.sqrt(np.mean(wb * (f - o) ** 2))
def acc(f, o, c=0.0): # WB2 eqs. 4-5 (the climatology c is 0 here)
fa, oa = f - c, o - c
num = (wb * fa * oa).mean(axis=(1, 2))
den = np.sqrt((wb * fa**2).mean(axis=(1, 2)) * (wb * oa**2).mean(axis=(1, 2)))
return np.mean(num / den)
def crps(ens, o, fair=True): # WB2 eq. 8 (fair) or the 1/(2M^2) version
M = ens.shape[1]
skill = np.abs(ens - o[:, None]).mean(axis=1)
pair = sum(np.abs(ens[:, m:m + 1] - ens).sum(axis=1) for m in range(M))
return np.mean(wb * (skill - pair / (2 * M * ((M - 1) if fair else M))))
print(rmse(signal, obs).round(3), rmse(ens[:, 0], obs).round(3)) # 1.0 and 1.416: the double penalty
print(acc(signal, obs).round(3), acc(ens[:, 0], obs).round(3)) # 0.707 and 0.499
print(crps(ens, obs).round(3), crps(ens, obs, fair=False).round(3),
np.mean(wb * np.abs(signal - obs)).round(3)) # 0.564 0.621 0.798
spread = np.sqrt(np.mean(wb * ens.var(axis=1, ddof=1)))
print((spread / rmse(ens.mean(axis=1), obs)).round(3), np.sqrt(M / (M + 1)).round(3)) # 0.953 0.953
The numbers repeat section 3. The blurry conditional mean wins on RMSE and ACC. A single sharp member pays the double penalty ( instead of 1). The ensemble wins on the CRPS: , the CRPS of the true predictive distribution , against for the conditional mean. A perfect 10-member ensemble has spread/skill , not 1.
6. Where it shows up #
- Operational centres. As of 2026, AIFS Single and AIFS ENS run at ECMWF, built with the open-source framework Anemoi, which ECMWF develops with national weather services in Europe. GraphCast, GenCast and NeuralGCM come from Google. New models are reported with WB2-style scores on the WeatherBench 2 website.
- Climate emulation. ACE and NeuralGCM run multi-decade atmosphere simulations at a small fraction of the cost of a physics model. Climate evaluation looks at long-term means, trends and variability, not at day-5 RMSE.
- Regional and short-range models. The same encoder–processor–decoder design works on limited areas with a coarser global model at the boundary.
- Seismology. Deep-learning phase pickers (PhaseNet, EQTransformer) build earthquake catalogs. The evaluation logic of this lesson applies to ground-motion emulators too: proper scores (the CRPS of peak ground acceleration), spectra of generated waveforms to catch blurring, and a strict hold-out of events.
- Beyond weather. Any learned simulator that is rolled out (ocean models, turbulence, plasma) faces the same blurring, error growth and evaluation questions.
7. Common mistakes #
- Unweighted means on a latitude–longitude grid. The polar rows dominate. Use the area weights .
- Different resolutions or regridding. Bilinear and conservative regridding give different scores. Regrid every model, and the truth, the same way.
- The wrong ground truth. Verify each model against the analysis it was started from (ERA5 for ERA5-started models, the operational analysis for operational forecasts).
- Leakage. Training or tuning on the test year, or normalisation statistics computed on it.
- RMSE alone for a blurry model. A lower RMSE can mean a smoother forecast, not a better one. Add spectra; for ensembles, the CRPS and the spread–skill ratio.
- The standard CRPS for small ensembles. It punishes small . WB2 uses the fair estimator.
- Expecting spread/skill = 1 for a small ensemble. A perfect ensemble gives .
- Initialisation time versus valid time. WB2 selects forecasts by initialisation time.
- Comparing with WeatherBench 1 numbers. WB1 took the time mean outside the square root and used other grids and years.
- Units. Geopotential (m² s⁻²) and geopotential height (m) differ by .
8. Check yourself #
- A grid has 5 latitude bands of 36° each. Give the WB2 weights.
Answer
The edges are with sines . The differences are (sum 2, mean 0.4). Normalised: . - Why does an MSE-trained model blur more at day 10 than at day 2?
Answer
It learns the conditional mean (Theorem 1). The conditional variance grows with lead time, so the mean averages over more possible states. Small features whose position is uncertain are smoothed out. - Members , outcome . Compute the fair and the standard CRPS. Why is the fair one 0?
Answer
and . Fair: . Standard: . The fair CRPS is 0 because lies between the two members: the degeneracy that the "almost fair" CRPS of AIFS-CRPS avoids. - A 10-member ensemble has a spread–skill ratio of 0.7. What does it mean, and what value is
expected for a perfect 10-member ensemble?
Answer
The ensemble is under-dispersive: its spread is too small for its error, so it is overconfident. A perfect ensemble gives about . Remedies: CRPS training, stochastic perturbations, or inflation (lesson 06). - Your model was trained on ERA5 from 1979 to 2020, and you evaluate it on 2020 with WB2. What
is wrong, and how do you fix it?
Answer
Test-set leakage: 2020 is in the training data, so the scores are too optimistic and not comparable with the WB2 baselines. Retrain without 2020 (for example train to 2018, validate on 2019), or evaluate on a later held-out year and score the baselines on that year too. - Why does a single forecast level off at an RMSE of about at very long lead
times, but an ensemble mean at about ?
Answer
At very long lead times the single forecast is like an independent random state of the climate: for two independent states. The ensemble mean averages many such states and tends to the climatological mean, whose RMSE is .
What is the WeatherBench 2 latitude weight of row ?
divided by its mean over the rows; for interior rows it is proportional to .
State the decomposition behind "the MSE-optimal forecast is the conditional mean".
with .
What is the double penalty?
A sharp forecast with a misplaced feature is penalised twice by MSE: where the feature is and where it was forecast. On average it has twice the minimum error.
How do RMSE and ACC differ?
RMSE measures the size of the error. ACC is the weighted correlation of forecast and observed anomalies (relative to climatology): it measures whether the pattern is right, whatever the amplitude.
Write the fair CRPS of an ensemble for outcome .
.
Compute the fair and standard CRPS for members and .
Fair , standard .
What spread–skill ratio does a perfect 10-member ensemble have, and why?
About : the squared error of the mean is while the spread² is .
Why fine-tune a weather model on multi-step rollouts?
In training on one step the model never sees its own errors as inputs; a rollout loss (with gradients through all steps) teaches it to keep errors small over several steps.
What is ERA5, and what is it not?
ECMWF's reanalysis: one physics model kept close to observations by 4D-Var, hourly at 0.25° from 1940. It is the best estimate of the past atmosphere, but not observations.
Which year does WeatherBench 2 use for testing, and what follows for training?
All 00 and 12 UTC initialisations of 2020; a model trained or tuned on 2020 must be evaluated on another held-out year.
9. Interview angle #
- "How would you evaluate a new global ML weather model?" — The WB2 protocol: a held-out test year, 00 and 12 UTC initialisations, conservative regridding to a common grid, latitude-weighted RMSE and ACC per lead time against the right ground truth, spectra and bias maps, the CRPS and the spread–skill ratio for ensembles, and paired, block-bootstrapped differences.
- "Your model beats the physics model on RMSE at day 10. Is it better?" — Not necessarily. Check the verification target and the resolution, and check blurring with spectra. At day 10 the conditional mean is smooth; the fair comparison is an ensemble against the physics ensemble, with the CRPS.
- "Why the fair CRPS?" — It is unbiased for the CRPS of the distribution the members come from, so ensembles of different sizes can be compared.
- "Hybrid (NeuralGCM) or pure ML (GraphCast, AIFS)?" — Hybrid: physical structure, multi-decade climate runs, interpretable parts, but a more complex model and coarser grids so far. Pure ML: simple to scale and very accurate at medium range at 0.25°, but long-term stability, conservation and behaviour under new forcing are not guaranteed.
- "Why do deterministic ML forecasts look smooth?" — MSE training learns the conditional mean (Theorem 1). Remedies: generative or CRPS-trained ensembles, spectral losses, or reporting ensembles instead of single forecasts.
10. Practice #
The notebook for this lesson runs in Colab and in the browser. It has five exercises, each with a check cell and a folded solution:
- Compute the WB2 latitude weights from band edges, and the polar over-count of an unweighted mean.
- Write latitude-weighted RMSE and ACC; reproduce the toy-world numbers (1 and ; 0.707 and 0.5).
- Write the fair and the standard ensemble CRPS, and measure the bias of the standard one for small .
- Compute the spread–skill ratio of a perfect ensemble, with and without the correction.
- Fit a Lorenz-96 surrogate by one-step least squares on noisy data, then with a two-step rollout loss, and compare their error growth with lead time.
11. Watch and read #
- Rasp et al., WeatherBench 2: A benchmark for the next generation of data-driven global weather models, 2024: §4.1 (the test year), §4.2 (1.5° and conservative regridding), §4.3–4.4 (RMSE eq. 2, ACC eqs. 4–5, CRPS eq. 8, spread–skill eqs. 9–10), §4.5 (spectra); code at github.com/google-research/weatherbench2.
- Lam et al., GraphCast: Learning skillful medium-range global weather forecasting, Science 2023.
- Bi et al., Accurate medium-range global weather forecasting with 3D neural networks (Pangu-Weather), Nature 2023.
- Bonev et al., Spherical Fourier Neural Operators: Learning Stable Dynamics on the Sphere, ICML 2023.
- Kochkov et al., Neural general circulation models for weather and climate (NeuralGCM), Nature 2024; code at github.com/neuralgcm/neuralgcm.
- Price et al., Probabilistic weather forecasting with machine learning (GenCast), Nature 2024.
- Lang et al., AIFS – ECMWF's data-driven forecasting system, 2024, and AIFS-CRPS: Ensemble forecasting using a model trained with a loss function based on the Continuous Ranked Probability Score, 2024.
- Watt-Meyer et al., ACE: A fast, skillful learned global atmospheric model for climate prediction, 2023.
- Hersbach et al., The ERA5 global reanalysis, Q. J. R. Meteorol. Soc. 2020; the data are on the Copernicus Climate Data Store.
- Zamo and Naveau, Estimation of the Continuous Ranked Probability Score with limited information and applications to ensemble weather forecasts, Math. Geosci. 2018 (the fair CRPS); Fortin et al., Why should ensemble spread match the RMSE of the ensemble mean?, J. Hydrometeorol. 2014.
- Seismology: Zhu and Beroza, PhaseNet, GJI 2019; Mousavi et al., Earthquake transformer, Nat. Commun. 2020; Mousavi and Beroza, Deep-learning seismology, Science 2022.
Runs in your browser with nothing to install. The notebook repeats the key demos and has exercises with checks; solutions are inside, folded.
No Google account needed: Python runs inside your browser. The first start downloads about 40 MB; your changes are saved in this browser only.