WeatherNext2 vs WeatherNext Cyclones: Key Differences in Model Checkpoints Explained
Both checkpoints share the same mesh-based transformer backbone, but WeatherNext Cyclones adds 13 cyclone-specific output variables and a points-to-mesh GNN sub-module for tropical cyclone forecasting.
WeatherNext2 and WeatherNext Cyclones are two specialized checkpoints built atop DeepMind's Weather-Next architecture—a mesh-based transformer that predicts atmospheric fields from input variables. While they leverage identical core parameters, these checkpoints diverge in their target variables, model heads, and training data to serve distinct forecasting needs.
Target Variables: 31 Standard Fields vs 44 Total Fields
The most visible difference lies in what each model predicts:
-
WeatherNext2 (
weathernext/weathernext2/configs/WeatherNext2.json): Outputs 31 standard atmospheric variables including temperature, geopotential, wind components (u/v), specific humidity, and 6-hour total precipitation. Thetarget_variablestuple contains no cyclone-specific entries. -
WeatherNext Cyclones (
weathernext/weathernext2/configs/WeatherNextCyclones.json): Outputs the same 31 atmospheric variables plus 13 cyclone-specific fields. These include:cyclone_exists_gaussian_unit_mode— cyclone presence probabilitycyclone_all_wind_disc— wind field disc representationcyclone_usa_r34_ne_radius_disc— radius of 34-knot winds (northeast quadrant)- Additional quadrant-specific wind radii and intensity indicators
Lines ~400–440 of WeatherNextCyclones.json append these cyclone fields to the base target_variables tuple.
Architecture: Single Latent-Dense Block vs Points-to-Mesh GNN
Beyond output labels, the cyclones checkpoint introduces specialized neural network components:
| Component | WeatherNext2 | WeatherNext Cyclones |
|---|---|---|
| Core predictor | noisy_function_kwargs.latent_dense_kwargs → output-dense block |
Same base, plus noisy_function_kwargs.points_to_mesh_model_ctor |
| Cyclone geometry encoding | None | Points-to-mesh GNN with edge encoder and spatial edge-feature generators |
| Implementation files | Standard weathernext/weathernext2/ modules |
weathernext/cyclones/cyclone_utils.py for mesh-compatible cyclone data conversion |
The points-to-mesh GNN explicitly encodes cyclone-specific geometry—converting point-based cyclone track data into the model's native mesh representation.
Training Data: ERA5 Only vs ERA5 + IBTrACS Cyclone Catalogue
Data sources determine what each model learns to predict:
-
WeatherNext2: Trained exclusively on global ERA-Interim/ERA5 reanalysis covering standard atmospheric fields.
-
WeatherNext Cyclones: Trained on the same atmospheric data augmented with the IBTrACS cyclone catalogue. The
weathernext/cyclones/ibtracs_processing_utils.pymodule parses IBTrACS NetCDF files, extracts historical cyclone tracks, and converts them into the model's training label format.
This dual-source training enables the cyclones checkpoint to learn relationships between large-scale atmospheric conditions and tropical cyclone evolution.
Loading and Inspecting Checkpoints in Code
Both checkpoints use the same loader API from weathernext/utils/checkpoint.py:
from weathernext.utils import checkpoint
# Load WeatherNext2 (standard atmospheric forecast)
ckpt2 = checkpoint.load_checkpoint(
"gs://weather-next/checkpoints/WeatherNext2.ckpt")
# Load WeatherNext Cyclones (cyclone-aware forecast)
ckpt_cyclones = checkpoint.load_checkpoint(
"gs://weather-next/checkpoints/WeatherNextCyclones.ckpt")
Inspecting target variable differences
def list_targets(cfg):
return [v["value"] for v in cfg["objects"]["tuple_2"]["items"]]
# Compare output sets
targets2 = list_targets(ckpt2.config)
targets_cyc = list_targets(ckpt_cyclones.config)
print(f"WeatherNext2: {len(targets2)} variables")
print(f"WeatherNext Cyclones: {len(targets_cyc)} variables")
print(f"Added cyclone fields: {set(targets_cyc) - set(targets2)}")
Running Cyclone-Specific Forecasts
To leverage the cyclone outputs, use the direct_tracker inference pipeline:
from weathernext.cyclones import direct_tracker
# initial_state must include atmospheric inputs + cyclone conditioning
forecast = direct_tracker.run_forecast(
checkpoint=ckpt_cyclones,
initial_state=initial_state,
lead_time_hours=72 # 3-day cyclone track forecast
)
The direct_tracker module (weathernext/cyclones/direct_tracker.py) coordinates the forward pass through both the atmospheric transformer and the cyclone-specific output heads.
Key Source Files Reference
| File Path | Purpose |
|---|---|
weathernext/weathernext2/configs/WeatherNext2.json |
Base configuration for standard atmospheric forecasting |
weathernext/weathernext2/configs/WeatherNextCyclones.json |
Extended configuration with cyclone targets and GNN sub-modules |
weathernext/cyclones/cyclone_utils.py |
Cyclone-to-mesh data conversion utilities |
weathernext/cyclones/ibtracs_processing_utils.py |
IBTrACS catalogue parsing and label generation |
weathernext/cyclones/direct_tracker.py |
Inference wrapper for cyclone forecasting |
weathernext/utils/checkpoint.py |
Unified checkpoint loading for both model variants |
Model Size and Computational Equivalence
Despite their functional differences, parameter counts and FLOPs are essentially identical between the two checkpoints. The cyclone-specific additions (points-to-mesh GNN, expanded output head) contribute negligible overhead relative to the core transformer backbone. Both checkpoints use the same mesh resolution, attention mechanisms, and latent representations—differing only in the final output layer structure and training supervision signals.
Summary
-
WeatherNext2 is a pure atmospheric forecast model with 31 standard output variables, suitable for general weather prediction tasks.
-
WeatherNext Cyclones extends the same architecture with 13 additional cyclone-specific outputs and a points-to-mesh GNN, enabling explicit tropical cyclone track and intensity forecasting.
-
Shared infrastructure—checkpoint loading, core transformer weights, and inference APIs—makes switching between variants straightforward.
-
Training data differentiation (ERA5 only vs ERA5 + IBTrACS) is the fundamental distinction that enables cyclone-aware predictions without altering base model capacity.
Frequently Asked Questions
Can I use WeatherNext2 checkpoint to predict cyclone tracks?
No. The WeatherNext2 checkpoint lacks both the cyclone-specific output variables and the points-to-mesh GNN sub-module required to encode cyclone geometry. While the base transformer might implicitly capture some cyclone-related patterns in its atmospheric outputs, explicit cyclone forecasting requires the WeatherNext Cyclones checkpoint with its specialized training on IBTrACS data.
Do I need different input data formats for each checkpoint?
Both checkpoints accept the same core atmospheric input variables from ERA5. However, WeatherNext Cyclones optionally accepts additional cyclone conditioning information (e.g., current IBTrACS position) through the initial_state passed to direct_tracker.run_forecast(). For pure atmospheric forecasting without cyclone initialization, inputs remain identical.
Is the cyclone GNN active during standard atmospheric inference?
The points-to-mesh GNN only participates in forward passes when cyclone-specific targets are requested. When loading WeatherNext Cyclones for standard 31-variable atmospheric prediction, the additional cyclone heads are not computed. The architecture uses conditional computation paths based on the requested output subset.
How do I convert between checkpoint formats?
Direct conversion is not supported—the checkpoints differ in their output layer dimensions and GNN sub-module parameters. However, both share frozen transformer backbone weights, so transfer learning or fine-tuning from WeatherNext2 to cyclone prediction would require re-initializing and re-training the output heads with IBTrACS supervision, essentially reproducing the WeatherNext Cyclones training pipeline.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →