Summary
Add a gno_predictor model to Neural-LAM as a new StepPredictor for
operator-style weather prediction on node and graph data.
Duplicate search
I searched existing mllam/neural-lam issues for GNO,
Graph Neural Operator, and neural operator, and found no duplicates.
Motivation
Neural-LAM already represents weather states as node tensors and supports
graph-based predictors, so a Graph Neural Operator is a natural fit.
Unlike a CNN predictor, a GNO can work directly on node/graph data without
requiring a regular (x, y) grid reshape.
This could provide an operator-learning baseline for limited-area weather
prediction and make it easier to compare message-passing GNNs with
mesh/discretization-aware neural operator layers.
Research background
- Li et al., "Neural Operator: Graph Kernel Network for Partial Differential
Equations" formulates operator learning with graph-kernel integral layers
computed by message passing.
https://arxiv.org/abs/2003.03485
- Li et al., "Multipole Graph Neural Operator for Parametric Partial
Differential Equations" adds multi-level graph structure to capture
long-range interactions with linear complexity.
https://arxiv.org/abs/2006.09535
- Kovachki et al., "Neural Operator: Learning Maps Between Function Spaces"
frames neural operators as maps between function spaces and includes graph
neural operators as one parameterization.
https://arxiv.org/abs/2108.08481
Proposed implementation
Add a new predictor package:
neural_lam/models/step_predictors/gno/
__init__.py
gno_layers.py
gno_predictor.py
Register it as:
"gno_predictor": GNOPredictor
The predictor should follow the existing StepPredictor interface:
prev_state, prev_prev_state, forcing, static features
-> graph neural operator layers
-> standardized one-step state delta
-> diff-stat rescaling
-> get_clamped_new_state
-> ARForecaster rollout
Suggested scope
Minimal usage example
from neural_lam.models import ARForecaster, MODELS
predictor = MODELS["gno_predictor"](
datastore=datastore,
hidden_dim=64,
processor_layers=4,
num_past_forcing_steps=1,
num_future_forcing_steps=1,
output_std=False,
output_clamping_lower=config.training.output_clamping.lower,
output_clamping_upper=config.training.output_clamping.upper,
)
forecaster = ARForecaster(predictor, datastore)
Validation checklist
Notes
This should be a separate feature from the current CNN predictor work.
Summary
Add a
gno_predictormodel to Neural-LAM as a newStepPredictorforoperator-style weather prediction on node and graph data.
Duplicate search
I searched existing
mllam/neural-lamissues forGNO,Graph Neural Operator, andneural operator, and found no duplicates.Motivation
Neural-LAM already represents weather states as node tensors and supports
graph-based predictors, so a Graph Neural Operator is a natural fit.
Unlike a CNN predictor, a GNO can work directly on node/graph data without
requiring a regular
(x, y)grid reshape.This could provide an operator-learning baseline for limited-area weather
prediction and make it easier to compare message-passing GNNs with
mesh/discretization-aware neural operator layers.
Research background
Equations" formulates operator learning with graph-kernel integral layers
computed by message passing.
https://arxiv.org/abs/2003.03485
Differential Equations" adds multi-level graph structure to capture
long-range interactions with linear complexity.
https://arxiv.org/abs/2006.09535
frames neural operators as maps between function spaces and includes graph
neural operators as one parameterization.
https://arxiv.org/abs/2108.08481
Proposed implementation
Add a new predictor package:
Register it as:
The predictor should follow the existing
StepPredictorinterface:Suggested scope
GNOLayerwith coordinate/edge-conditioned kernel messages.GNOPredictor(StepPredictor).output_stdwith positivesoftplusstandard deviations.ARForecaster.gno_predictorinMODELS.choice, and aggregation.
output_std, no-static-feature behavior,invalid inputs, and autoregressive rollout.
Minimal usage example
Validation checklist
GraphLAMandCNNPredictor.GNOLayerandGNOPredictor.DummyDatastore.CHANGELOG.mdentry underAdded.Notes
This should be a separate feature from the current CNN predictor work.