Graph Machine Learning
AnemoI
English
hcookie129 maplumridge commited on
Commit
ad645ef
·
0 Parent(s):

AIFS Single v2: ECMWF's data-driven weather forecasting model

Browse files

ECMWF's Artificial Intelligence Forecasting System (AIFS) Single v2,
implemented operationally on 12 May 2026, superseding v1.1. Generates
single 15-day (6-hourly) global forecasts four times per day.

Built on a GNN encoder/decoder with sliding window transformer processor,
trained on ERA5 (1979-2022) and fine-tuned on operational analysis data
(2018-2024). Trained on 16 GH200 GPUs using the Anemoi framework.

Key features in v2:
- First operational data-driven wave forecasts (11 wave variables)
- New snow variable (fraction of snow cover)
- Improved stratosphere representation (10hPa pressure level)
- Improved vertical velocities (W changed to diagnostic field)
- Extended fine-tuning with 2 additional years of data

Includes pretrained checkpoint (994MB), inference notebook, and
uv lock files for reproducible environments.

Co-authored-by: Meghan Plumridge <maplumridge@users.noreply.huggingface.co>

.gitattributes ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.grib filter=lfs diff=lfs merge=lfs -text
9
+ *.h5 filter=lfs diff=lfs merge=lfs -text
10
+ *.joblib filter=lfs diff=lfs merge=lfs -text
11
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
12
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
13
+ *.model filter=lfs diff=lfs merge=lfs -text
14
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
15
+ *.npy filter=lfs diff=lfs merge=lfs -text
16
+ *.npz filter=lfs diff=lfs merge=lfs -text
17
+ *.onnx filter=lfs diff=lfs merge=lfs -text
18
+ *.ot filter=lfs diff=lfs merge=lfs -text
19
+ *.parquet filter=lfs diff=lfs merge=lfs -text
20
+ *.pb filter=lfs diff=lfs merge=lfs -text
21
+ *.pickle filter=lfs diff=lfs merge=lfs -text
22
+ *.pkl filter=lfs diff=lfs merge=lfs -text
23
+ *.pt filter=lfs diff=lfs merge=lfs -text
24
+ *.pth filter=lfs diff=lfs merge=lfs -text
25
+ *.rar filter=lfs diff=lfs merge=lfs -text
26
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
27
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
29
+ *.tar filter=lfs diff=lfs merge=lfs -text
30
+ *.tflite filter=lfs diff=lfs merge=lfs -text
31
+ *.tgz filter=lfs diff=lfs merge=lfs -text
32
+ *.wasm filter=lfs diff=lfs merge=lfs -text
33
+ *.xz filter=lfs diff=lfs merge=lfs -text
34
+ *.zip filter=lfs diff=lfs merge=lfs -text
35
+ *.zst filter=lfs diff=lfs merge=lfs -text
36
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
37
+ assets/aifs_diagram.png filter=lfs diff=lfs merge=lfs -text
38
+ assets/decoder_graph.jpeg filter=lfs diff=lfs merge=lfs -text
39
+ assets/encoder_graph.jpeg filter=lfs diff=lfs merge=lfs -text
.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ .venv
.pre-commit-config.yaml ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v6.0.0
4
+ hooks:
5
+ - id: check-yaml # Check YAML files for syntax errors only
6
+ args: [--unsafe, --allow-multiple-documents]
7
+ - id: debug-statements # Check for debugger imports and py37+ breakpoint()
8
+ - id: end-of-file-fixer # Ensure files end in a newline
9
+ - id: trailing-whitespace # Trailing whitespace checker
10
+ - id: check-merge-conflict # Check for files that contain merge conflict
11
+ - repo: https://github.com/pre-commit/pygrep-hooks
12
+ rev: v1.10.0 # Use the ref you want to point at
13
+ hooks:
14
+ - id: python-use-type-annotations # Check for missing type annotations
15
+ - id: python-check-blanket-noqa # Check for # noqa: all
16
+ - id: python-no-log-warn # Check for log.warn
17
+ - repo: https://github.com/psf/black-pre-commit-mirror
18
+ rev: 26.1.0
19
+ hooks:
20
+ - id: black
21
+ args: [--line-length=120]
22
+ - repo: https://github.com/pycqa/isort
23
+ rev: 8.0.1
24
+ hooks:
25
+ - id: isort
26
+ args:
27
+ - -l 120
28
+ - --force-single-line-imports
29
+ - --profile black
30
+ - --project anemoi
31
+ - repo: https://github.com/astral-sh/ruff-pre-commit
32
+ rev: v0.15.4
33
+ hooks:
34
+ - id: ruff
35
+ args:
36
+ - --line-length=120
37
+ - --fix
38
+ - --exit-non-zero-on-fix
39
+ - --exclude=docs/**/*_.py
40
+ - repo: https://github.com/sphinx-contrib/sphinx-lint
41
+ rev: v1.0.2
42
+ hooks:
43
+ - id: sphinx-lint
44
+ - repo: https://github.com/tox-dev/pyproject-fmt
45
+ rev: "v2.16.2"
46
+ hooks:
47
+ - id: pyproject-fmt
48
+ args: ["--max-supported-python", "3.12"]
README.md ADDED
@@ -0,0 +1,291 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: cc-by-4.0
3
+ metrics:
4
+ - mse
5
+ pipeline_tag: graph-ml
6
+ language:
7
+ - en
8
+ library_name: anemoi
9
+ ---
10
+
11
+ # AIFS Single v2
12
+
13
+ <!-- Provide a quick summary of what the model is/does. -->
14
+
15
+ [![License](https://img.shields.io/badge/license-CC--BY--4.0-blue.svg)](https://creativecommons.org/licenses/by/4.0/)
16
+ [![Framework](https://img.shields.io/badge/framework-Anemoi-orange)](https://anemoi.readthedocs.io/)
17
+ [![Task](https://img.shields.io/badge/task-Weather%20Forecasting-green)]()
18
+ [![Model](https://img.shields.io/badge/model-GNN%20%2B%20Transformer-purple)]()
19
+
20
+ The AIFS is ECMWF's **Artificial Intelligence Forecasting System**.
21
+ It consists of two data-driven medium-range forecast models:
22
+ - AIFS Single v2 (described here)
23
+ - AIFS ENS v2 (described on the [following page](https://huggingface.co/ecmwf/aifs-ens-2.0))
24
+
25
+ **AIFS Single v2** was implemented on **12 May 2026** and supersedes version [1.1](https://huggingface.co/ecmwf/aifs-single-1.1).
26
+ It is run operationally by ECMWF, generating a single 15-day (6-hourly) global forecast four times per day.
27
+
28
+ ## Table of contents
29
+
30
+ - [What's new in v2](#whats-new-in-v2)
31
+ - [Quickstart](#quickstart)
32
+ - [Model overview](#model-overview)
33
+ - [Data details](#data-details)
34
+ - [Training details](#training-details)
35
+ - [Evaluation](#evaluation)
36
+ - [Known limitations](#known-limitations)
37
+ - [Technical specifications](#technical-specifications)
38
+ - [Citation](#citation)
39
+
40
+ ---
41
+
42
+ ## What's new in v2
43
+ The release of AIFS v2 introduces:
44
+ - A new wave component, including 11 wave variables, marking **ECMWF's first operational data-driven wave forecasts**.
45
+ - The addition of a new snow variable to the existing land component.
46
+ - Improved vertical velocities, by changing parameter W from a prognostic to a diagnostic field.
47
+ - An improved representation of the stratosphere, with the addition of pressure level fields at 10hPa.
48
+ - An improved training regime, using 2 years of additional training data compared to AIFS Single [v1.1](https://huggingface.co/ecmwf/aifs-single-1.1).
49
+
50
+ For full details of the changes introduced with this upgrade, see the [implementation page](https://confluence.ecmwf.int/display/FCST/Implementation+of+AIFS+Single+v2).
51
+
52
+ ---
53
+
54
+ ## Quickstart
55
+ ### Access AIFS Single v2 model data
56
+ ECMWF generates operational forecasts from AIFS Single v2 four times per day (at 00, 06, 12 & 18 UTC).
57
+ Users can access the forecast data free-of-charge through various [open data platforms](https://www.ecmwf.int/en/forecasts/datasets/open-data).
58
+
59
+ ### Generate a forecast with AIFS Single v2
60
+ To generate a forecast using the AIFS Single v2 model, follow the [notebook example](run_AIFS_v2.0.ipynb).
61
+
62
+ The notebook demonstrates:
63
+ - installing packages and imports
64
+ - retrieving initial conditions from ECMWF Open Data
65
+ - loading the pretrained checkpoint
66
+ - running inference with [anemoi-inference](https://github.com/ecmwf/anemoi-inference)
67
+ - visualising the forecast
68
+
69
+ [anemoi-inference](https://github.com/ecmwf/anemoi-inference) also provides a command line interface:
70
+ ```bash
71
+ anemoi-inference run inference.yaml
72
+ ```
73
+
74
+ or, if using uv from this repository:
75
+ ```bash
76
+ uv run --extra inference anemoi-inference run inference.yaml
77
+ ```
78
+
79
+ ---
80
+
81
+ ## Model overview
82
+
83
+ ### Model description
84
+
85
+ <!-- Provide a longer summary of what this model is. -->
86
+
87
+ AIFS Single v2 is based on a graph neural network (GNN) encoder and decoder, and a sliding window transformer processor.
88
+
89
+ <div style="display: flex; justify-content: center;">
90
+ <img src="assets/encoder_graph.jpeg" alt="Encoder graph" style="width: 50%;"/>
91
+ <img src="assets/decoder_graph.jpeg" alt="Decoder graph" style="width: 50%;"/>
92
+ </div>
93
+
94
+ The model has a flexible and modular design and supports several levels of parallelism to enable training on
95
+ high resolution input data. AIFS forecast skill is assessed by comparing its forecasts to numerical weather prediciton (NWP) analyses
96
+ and direct observational data.
97
+
98
+ - **Developed by:** ECMWF
99
+ - **Model type:** Encoder-processor-decoder model
100
+ - **License:** Inference model weights are published under a Creative Commons Attribution 4.0 International (CC BY 4.0).
101
+ To view a copy of this licence, visit https://creativecommons.org/licenses/by/4.0/.
102
+ The [demonstration notebook](run_AIFS_v2.0.ipynb) and other script files are published under an Apache 2.0 licence.
103
+ To view a copy of this license, visit https://www.apache.org/licenses/LICENSE-2.0.txt.
104
+
105
+ ### Model resolution
106
+ AIFS Single v2 introduces a **new pressure level** to the stratospheric component.
107
+ | Model | Vertical resolution [pressure levels] (hPa) |
108
+ |:---|:---|
109
+ | AIFS-single v2.0 | 10 (new), 50, 100, 150, 200, 250, 300, 400, 500, 600, 700, 850, 925, 1000 |
110
+
111
+ There are no changes in horiztonal resolution compared to previous version AIFS Single v1.1.
112
+ | Component | Horizontal Resolution [kms] | Vertical Resolution [levels] |
113
+ |---|:---:|:---:|
114
+ | Atmosphere | ~ 31 | 13 |
115
+
116
+ ### Model Sources
117
+
118
+ <!-- Provide the basic links for the model. -->
119
+
120
+ - **Repository:** [Anemoi](https://anemoi.readthedocs.io/en/latest/) is an open-source framework for
121
+ creating data-driven weather forecasting systems. Anemoi is co-developed by ECMWF and national meteorological
122
+ services across Europe.
123
+ - **Papers:**
124
+ - [AIFS: ECMWF's data-driven forecasting system (2024)](https://arxiv.org/abs/2406.01465)
125
+ - [An update to ECMWF's machine-learned weather forecast model AIFS (2025)](https://arxiv.org/abs/2509.18994)
126
+ - [Representing the Surface Ocean in ECMWF's data-driven forecasting system AIFS (2026)](https://arxiv.org/abs/2604.25559)
127
+ ---
128
+
129
+ ## Data details
130
+
131
+ ### Training data
132
+ The data used for **pre-training** AIFS Single v2 remains the same as for the previous model version ([v1.1](https://huggingface.co/ecmwf/aifs-single-1.1)):
133
+ - Pre-training was performed on ERA5 data covering the years 1979–2022 over 260,000 training steps.
134
+
135
+ The data used for **fine-tuning** AIFS Single v2 has been updated:
136
+ - Fine-tuning was performed on 2 years of additional data compared to [AIFS Single v1.1](https://huggingface.co/ecmwf/aifs-single-1.1).
137
+ - In particular, fine-tuning was performed on ECMWF operational analysis data and
138
+ IFS 50r1 esuite analysis data, covering the years 2018-2024 over 7,900 training steps.
139
+ <div style="display: flex; justify-content: center;">
140
+ <img src="assets/single_v2_training.png" alt="AIFS Single v2 fine-tuning" style="width: 80%;"/>
141
+ </div>
142
+
143
+ >*Note: The IFS 50r1 esuite analysis data used for fine-tuning is not available to users. It consists of prototype data from early versions of IFS Cycle 50r1.*
144
+
145
+ As in previous versions of AIFS Single, IFS fields are interpolated from their native O1280 resolution
146
+ (approximately 0.1°) using MARS default interpolation tools down to N320 (approximately 0.25°) for
147
+ fine-tuning and initialisation of the model during inference.
148
+
149
+ ### Data parameters
150
+
151
+ #### New parameters
152
+
153
+ AIFS Single v2 introduces 12 new parameters, which were used for model training and are output by the
154
+ model during a forecast.
155
+
156
+ | Short Name | Name | Units |
157
+ |:----------:|:----:|:-----:|
158
+ | h1012 | Significant wave height of all waves with periods within the inclusive range from 10 to 12 seconds | \(m\) |
159
+ | h1214 | Significant wave height of all waves with periods within the inclusive range from 12 to 14 seconds | \(m\) |
160
+ | h1417 | Significant wave height of all waves with periods within the inclusive range from 14 to 17 seconds | \(m\) |
161
+ | h1721 | Significant wave height of all waves with periods within the inclusive range from 17 to 21 seconds | \(m\) |
162
+ | h2125 | Significant wave height of all waves with periods within the inclusive range from 21 to 25 seconds | \(m\) |
163
+ | h2530 | Significant wave height of all waves with periods within the inclusive range from 25 to 30 seconds | \(m\) |
164
+ | wmb | Model bathymetry | \(m\) |
165
+ | swh | Significant wave height | \(m\) |
166
+ | mwd | Mean wave direction | \(Degree true\) |
167
+ | mwp | Mean wave period | \(s\) |
168
+ | cdww | Coefficient of drag with waves | \(dimensionless\) |
169
+ | fscov | Fraction of snow cover | \(Proportion\) |
170
+
171
+ ---
172
+
173
+ ## Training Details
174
+
175
+ ### Training Data
176
+
177
+ <!-- This should link to a Dataset Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. -->
178
+ AIFS Single v2 is trained on ECMWF’s ERA5 re-analysis and ECMWF’s operational numerical weather prediction (NWP) analyses as
179
+ described in the [training data](#training-data) section.
180
+
181
+ AIFS Single v2 is trained to produce 6-hour forecasts. It receives as input a representation of the atmospheric states
182
+ at \\(t_{−6h}\\), \\(t_{0}\\), and then forecasts the state at time \\(t_{+6h}\\).
183
+
184
+ <div style="display: flex; justify-content: center;">
185
+ <img src="assets/aifs_diagram.png" alt="AIFS 2m Temperature" style="width: 80%;"/>
186
+ </div>
187
+
188
+ The table below shows all parameters used and output by AIFS Single v2. New parameters and levels are marked **bold**.
189
+
190
+ | Field | Level type | Input/Output |
191
+ |---|---|---|
192
+ | Geopotential (Z), horizontal and vertical wind components (U, V), temperature (T) | Pressure levels: **10**, 50, 100, 150, 200, 250, 300, 400, 500, 600, 700, 850, 925, 1000 | Both ("Prognostic") |
193
+ | Specific humidity (Q) | Pressure levels: 100, 150, 200, 250, 300, 400, 500, 600, 700, 850, 925, 1000 | Both ("Prognostic") |
194
+ | Vertical velocity (W) | Pressure levels: **10**, 50, 100, 150, 200, 250, 300, 400, 500, 600, 700, 850, 925, 1000 | Output ("Diagnostic") |
195
+ | Specific humidity (Q) | Pressure level: 50 | Output ("Diagnostic") |
196
+ | Surface pressure (SP), mean sea-level pressure (MSL), sea-surface temperature (SST), skin temperature (SKT), 2m temperature (2T), 2m dewpoint temperature (2D), 10m horizontal wind components (10U, 10V), total column water (TCW), **mean wave period (MWP)**, **mean wave direction (MWD)**, **coefficient of drag with waves (CDWW)**, **significant wave height (SWH)**, significant wave height of all waves with periods within the inclusive range from: <br><br> - **10 to 12 seconds (H1012)** <br> - **12 to 14 seconds (H1214)** <br> - **14 to 17 seconds (H1417)** <br> - **17 to 21 seconds (H1721)** <br> - **21 to 25 seconds (H2125)** <br> - **25 to 30 seconds (H2530)** | Surface | Both ("Prognostic") |
197
+ | Volumetric soil moisture (VSW) and soil temperature (SOT), both at soil depth 1 and 2 | Soil layer | Both ("Prognostic") |
198
+ | 100m horizontal wind components (100U, 100V), surface short-wave (solar) radiation downwards (SSRD), surface long-wave (thermal) radiation downwards (STRD), cloud variables (TCC, HCC, MCC, LCC), runoff water equivalent (ROWE) and snow fall (SF), total precipitation (TP), convective precipitation (CP), **fraction of snow cover (FSCOV)** | Surface | Output ("Diagnostic") |
199
+ | Standard deviation of sub-gridscale orography (SDOR), slope of sub-gridscale orography (SLOR), land-sea mask (LSM), Geopotential (Z), insolation, latitude/longitude, time of day/day of year | Surface | Input ("Forcings") |
200
+
201
+ ### Training Procedure
202
+
203
+ This upgrade does not introduce any changes to the model architecture; the model remains the same as the existing operational model
204
+ [v1.1](https://huggingface.co/ecmwf/aifs-single-1.1). Technical details about the model architecture are detailed in the arXiv
205
+ preprints [here](https://arxiv.org/abs/2509.18994) and [here](https://arxiv.org/abs/2406.01465).
206
+
207
+ #### Speeds, Sizes, Times
208
+
209
+ <!-- This section provides information about throughput, start/end time, checkpoint size if relevant, etc. -->
210
+
211
+ Data parallelism is used for training, with a batch size of 16. One model instance is split across one 120GB GH200
212
+ GPUs. Training is done using mixed precision (Micikevicius et al. [2018]), and the entire process
213
+ takes about 4 days, with 16 GPUs in total. The checkpoint size is 994MB and as mentioned above, it does not include the optimizer
214
+ state.
215
+
216
+ ---
217
+
218
+ ## Evaluation
219
+
220
+ <!-- This section describes the evaluation protocols and provides the results. -->
221
+ Interactive scorecards presenting the performance of AIFS Single v2 between January-March 2026 are now available.
222
+ The scorecards compare performance when initialised from 49r1 and 50r1 IFS initial conditions: 
223
+
224
+ - [AIFS Single v2 (initialised from 50r1) compared with AIFS Single v1.1](initialised from 49r1)(https://sites.ecmwf.int/aifs/scorecards/AIFS-Single-v2%20vs%20AIFS-Single-v1.1.html)
225
+ - [AIFS Single v2 compared with AIFS Single v1.1 (both initialised from 50r1)](https://sites.ecmwf.int/aifs/scorecards/AIFS-Single-v2%20vs%20AIFS-Single-v1.1%20from%2050r1.html)
226
+
227
+ ---
228
+
229
+ ## Known limitations
230
+
231
+ Please refer to https://confluence.ecmwf.int/display/FCST/Known+AIFS+Forecasting+Issues.
232
+
233
+ ---
234
+
235
+ ## Technical specifications
236
+
237
+ ### Hardware
238
+
239
+ <!-- {{ hardware_requirements | default("[More Information Needed]", true)}} -->
240
+
241
+ AIFS Single v2 was trained on 16 GH200 GPUs (120GB).
242
+
243
+ ### Software
244
+
245
+ The model was developed and trained using the [Anemoi framework](https://anemoi.readthedocs.io/en/latest/).
246
+ The Anemoi framework provides a complete toolkit to develop data-driven weather models –
247
+ from data preparation through to inference. The development is primarily driven by a number
248
+ of European Meterological Organisations but open to contributions from any organisation or any individual.
249
+ The framework is composed of several packages which target the different components necessary to
250
+ construct data-driven weather models. To aid development and deployment, each package collects metadata
251
+ that can be used by the subsequent packages. The framework builds upon on established Python tools
252
+ including PyTorch, Lighting, Hydra, Zarr, Xarray and earthkit.
253
+
254
+ ---
255
+
256
+ ## Citation
257
+
258
+ <!-- If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section. -->
259
+
260
+ If you use this model in your work, please cite it as follows:
261
+
262
+ **BibTeX:**
263
+
264
+ ```bibtex
265
+ @article{lang2024aifs,
266
+ title={AIFS-ECMWF's data-driven forecasting system},
267
+ author={Lang, Simon and Alexe, Mihai and Chantry, Matthew and Dramsch, Jesper and Pinault, Florian and Raoult, Baudouin and Clare, Mariana CA and Lessig, Christian and Maier-Gerber, Michael and Magnusson, Linus and others},
268
+ journal={arXiv preprint arXiv:2406.01465},
269
+ year={2024}
270
+ }
271
+ ```
272
+
273
+ **APA:**
274
+
275
+ ```apa
276
+ Lang, S., Alexe, M., Chantry, M., Dramsch, J., Pinault, F., Raoult, B., ... & Rabier, F. (2024). AIFS-ECMWF's data-driven forecasting system. arXiv preprint arXiv:2406.01465.
277
+
278
+ ```
279
+
280
+ ---
281
+
282
+ ## More information
283
+ All papers:
284
+ - [AIFS: ECMWF's data-driven forecasting system (2024)](https://arxiv.org/abs/2406.01465)
285
+ - [An update to ECMWF's machine-learned weather forecast model AIFS (2025)](https://arxiv.org/abs/2509.18994)
286
+ - [Representing the Surface Ocean in ECMWF's data-driven forecasting system AIFS (2026)](https://arxiv.org/abs/2604.25559)
287
+
288
+ Blog posts:
289
+ - [Integrating snow fields into AIFS v2 (2026)](https://www.ecmwf.int/en/newsletter/186/news/integrating-snow-fields-aifs-v2)
290
+ - [Let it snow! How machine learning will forecast snow in the AIFS (2025)](https://www.ecmwf.int/en/about/media-centre/aifs-blog/2025/let-it-snow-machine-learning-snow-forecast)
291
+ - [Representing ocean wind waves in ECMWF's AIFS (2025)](https://www.ecmwf.int/en/about/media-centre/aifs-blog/2025/representing-ocean-wind-waves-ecmwfs-aifs)
aifs-single-mse-2.0.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4e23ef40157b9e99b5228e5dcffb0d0d5a789f019ffcc89033ee9caae5d7ff6b
3
+ size 994330548
assets/aifs_diagram.png ADDED

Git LFS Details

  • SHA256: 8c37f8858399f9fef6918fdb9517f18ffb6bc1ed0a2fc45476b4f775f48bfb0d
  • Pointer size: 131 Bytes
  • Size of remote file: 470 kB
assets/decoder_graph.jpeg ADDED

Git LFS Details

  • SHA256: a306a3f914ed55b70bb2d8fe89b7070857e963115f1bfa8d58f6d8910b820b3c
  • Pointer size: 131 Bytes
  • Size of remote file: 215 kB
assets/encoder_graph.jpeg ADDED

Git LFS Details

  • SHA256: fe96aa418e231a623dba209aa048248b6506d8c3106df39ac82e3bef2098ba1f
  • Pointer size: 131 Bytes
  • Size of remote file: 168 kB
assets/single_v2_training.png ADDED
inference.yaml ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ description: |
2
+ AIFS-single 2.0
3
+
4
+ checkpoint: aifs-single-mse-2.0.ckpt
5
+
6
+ input: opendata
7
+
8
+ pre_processors:
9
+ - forward-transform-filter: cos_sin_mean_wave_direction
10
+ - forward-transform-filter: # Mask fix
11
+ filter: apply-mask
12
+ param:
13
+ - sd
14
+ - swvl1
15
+ - swvl2
16
+ path: lsm.grib
17
+ mask_value: 0
18
+
19
+ post_processors:
20
+ - backward-transform-filter: cos_sin_mean_wave_direction
21
+ - accumulate_from_start_of_forecast
22
+
23
+ patch_metadata:
24
+ dataset:
25
+ constant_fields: [z, sdor, slor, lsm]
26
+
27
+ use_grib_paramid: true
28
+ allow_nans: true
29
+ typed_variables:
30
+ mwd:
31
+ mars:
32
+ param: mwd
33
+ stream: wave
34
+ levtype: sfc
35
+ snowc: # Encoding fix
36
+ mars:
37
+ param: fscov
38
+ stream: oper
39
+ levtype: sfc
40
+ # fscov: # required for step0 copy
41
+ # mars:
42
+ # param: fscov
43
+ # stream: oper
44
+ # levtype: sfc
45
+
46
+ output:
47
+ grib:
48
+ path: output.grib
49
+ encoding:
50
+ class: ai
51
+ type: fc
52
+ model: aifs-single
53
+ generatingProcessIdentifier: 5
lsm.grib ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6660ca07729fd8f2ac3fb8bfeee66e7513a355ca90d287f39b5987832c44a891
3
+ size 1627680
pyproject.toml ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [project]
2
+ name = "aifs-single"
3
+ version = "2.0"
4
+ requires-python = ">=3.11,<3.14"
5
+ classifiers = [
6
+ "Programming Language :: Python :: 3 :: Only",
7
+ "Programming Language :: Python :: 3.11",
8
+ "Programming Language :: Python :: 3.12",
9
+ "Programming Language :: Python :: 3.13",
10
+ ]
11
+ dependencies = [
12
+ "anemoi-graphs==0.6.4",
13
+ "anemoi-models==0.9.3",
14
+ "anemoi-transform==0.1.16.post2",
15
+ "anemoi-utils==0.4.35",
16
+ "earthkit-data<1",
17
+ "earthkit-plots<1",
18
+ "flash-attn==2.7.4",
19
+ "torch==2.7",
20
+ "torch-geometric==2.6.1",
21
+ ]
22
+ optional-dependencies.inference = [
23
+ "anemoi-inference[huggingface]==0.8.3",
24
+ "anemoi-plugins-ecmwf-inference[opendata]==0.2.1",
25
+ "earthkit-regrid==0.5.1",
26
+ "ecmwf-opendata==0.3.29",
27
+ ]
28
+ optional-dependencies.jupyter = [
29
+ "ipykernel>=7.2",
30
+ ]
31
+ optional-dependencies.training = [
32
+ "anemoi-training==0.6.3",
33
+ ]
34
+
35
+ [tool.uv]
36
+ sources.flash-attn = [
37
+ { url = "https://github.com/cathalobrien/get-flash-attn/releases/download/v0.1-alpha/flash_attn-2.8.3+cu12torch2.7cxx11abiFALSE-cp312-cp312-linux_x86_64.whl", marker = "platform_machine == 'x86_64' and sys_platform != 'win32'" },
38
+ { url = "https://github.com/cathalobrien/get-flash-attn/releases/download/v0.1-alpha/flash_attn-2.8.3+cu12torch2.7cxx11abiFALSE-cp312-cp312-linux_aarch64.whl", marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" },
39
+ ]
40
+ environments = [
41
+ "sys_platform == 'linux' and (platform_machine == 'x86_64' or platform_machine == 'aarch64')",
42
+ ]
run_AIFS_v2.0.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
uv.lock ADDED
The diff for this file is too large to render. See raw diff