This project is in collaboration with Open Climate Fix, and will be co-supervised by Prof. Robert Mullins from the University of Cambridge and Jacob Bieker from Open Climate Fix.
Decades of steady improvements in the quantity and types of observational data, better modeling techniques, and more computational power have resulted in increasingly accurate weather forecasts and growing adoption of Numerical weather prediction in real-world applications. There is also now a rising interests of using Machine Learning models to help on the weather prediction problem.
Recent work (Forecasting Global Weather with GNNs) has demonstrated a new possibility of weather forecasting using graph neural networks. The use of message-passing GNNs helps to handle the spherical geometry of the earth in a more straightforward manner.
Open Climate Fix has been working on collecting large-scale weather data and building open weather models. They have recently also provided an open-source implementation of this weather GNN model.
Forecasting Global Weather with Graph Neural Networks
openclimatefix (Open Climate Fix)
GitHub - openclimatefix/graph_weather: PyTorch implementation of Ryan Keisler's 2022 "Forecasting Global Weather with Graph Neural Networks" paper (https://arxiv.org/abs/2202.07575)
MetNet: A Neural Weather Model for Precipitation Forecasting
GraphCast: Learning skillful medium-range global weather forecasting
We previously had a summer intern that has implemented various GNN architectures for the problem of weather forecasting, in this project, the student would reuse the code as a baseline implementation.
The concept revolves around visualizing the Earth as an interconnected 3D mesh, where adjacent locations are linked by edges. In this structure, each node represents a specific location on the Earth, holding encoded information such as humidity, wind speed, and other parameters within a 1D vector. The task is to predict the temperature for each node. The student would have to:
Re-implement the GNN baseline.
Explore other advanced GNN architectures, an exhaustive list of the architectures can be found in the following link.
Try to build a GNN with ‘meta-layers’. Each meta-layer can be a set of different best-performing GNN layers, averaged together in a form of:
$y = \frac{1}{M}\sum_{m=0}^{M}f_{m}(x)$, where each $f_m$ can be a different GNN layer.