Downscaler for AI weather forecasts over France
A small ensemble downscaler that adds local detail to a coarse weather forecast. It takes 2 m temperature on a quarter-degree grid, together with fine-scale terrain, and produces temperature on the CERRA (5.5 km) grid. Trained on ERA5 (0.25 degrees) paired with CERRA (5.5 km), it never sees forecasts during training, so it can be applied to any forecast model that supplies the same coarse field.
| Task | downscaling 2 m temperature from a coarse forecast to the CERRA (5.5 km) grid |
| Region | France |
| Loss | crps |
| Parameters | about 2.1 M |
| Inputs | 11 channels, see below |
Results
On the validation year, against CERRA (5.5 km) over land, the model reaches 1.08 K RMSE where plain interpolation reaches 1.61 K.
Applied to ecmwf/aifs-ens-1.0 forecasts and verified against station observations, it lowers RMSE from 2.73 to 2.46 K (-10%), CRPS from 1.55 to 1.37 K (-11%), and raises the spread-skill ratio from 0.57 to 0.76.
Measured against CERRA (5.5 km) itself, the model removes 74% of the error that separating the coarse field from the target could remove, leaving 0.13 K between it and the target's own distance from the stations.
Inputs
All channels are on the fine grid and normalised with statistics stored in the checkpoint:
- the coarse field interpolated onto the fine grid
- fine-scale terrain height, and its difference from the coarse model's surface
- land fraction, and an index of maritime influence
- latitude and longitude
- time of day and day of year, as sine and cosine pairs
Trained with the crps loss, the model also takes 2 noise channels, so repeated passes give different plausible fields that together form an ensemble.
Usage
from weather_pipeline.downscaler import Downscaler
model = Downscaler.load("model.pt")
fine = model.predict(coarse_kelvin, valid_times, members=4)
coarse_kelvin has shape (time, y, x) and must already sit on the fine grid;
the checkpoint carries the terrain, the normalisation statistics and the grid
coordinates, so nothing else is needed. The result has shape
(time, members, y, x) in kelvin.
Training
Training data: EmmaScharfmann/france-downscaling-pairs. The target is CERRA (5.5 km) and the coarse input is ERA5 (0.25 degrees) interpolated onto the target grid. The loss is computed over land only, since the target treats sea surface temperature differently from land.
Limitations
- The model has no wind, humidity or cloud inputs. It can learn corrections that are a fixed function of place and time of day, so it captures terrain effects well and flow-dependent effects such as foehn or sea breezes only on average.
- Most of the correction is not predictable from these inputs. A climatology of the correction conditioned on month and hour explains only 10 to 30% of its variance, which bounds what any model with this input set can achieve.
- It reproduces the target's view of the world, including its biases. Scores against independent station observations are the honest measure.
- The ensemble is under-dispersed against stations, partly because station verification includes the mismatch between a grid cell and a thermometer that no member can contain.
- It is regional. Applying it outside France is untested.
Licence and attribution
The weights are derived from the sources below and inherit their terms.
- CERRA regional reanalysis, Copernicus Climate Change Service (C3S). Generated using Copernicus Climate Change Service information.
- ERA5 reanalysis, Copernicus Climate Change Service (C3S). Generated using Copernicus Climate Change Service information.
- AIFS-ENS forecasts, ECMWF, released under CC-BY-4.0.
- Station observations, Météo-France, Etalab Open Licence 2.0.
Neither Copernicus, ECMWF nor Météo-France endorses this work.