๐ฆ๏ธ GCC Weather Forecast Transformer
A specialized Transformer-based model designed for short-horizon meteorological forecasting in the Gulf Cooperation Council (GCC) region. Trained on NVIDIA DGX Spark infrastructure with Grace Blackwell GPU, this model leverages high-resolution historical data to predict immediate future weather conditions for Dubai and Riyadh.
๐ฎ Live Demo
๐ Try the model here: GCC Weather Forecast Transformer Space
- Real-time Inference: Generates forecasts using live data fetched on-demand.
- Supported Cities:
- Dubai, United Arab Emirates ๐ฆ๐ช
- Riyadh, Saudi Arabia ๐ธ๐ฆ
โก Technical Summary
| Attribute | Specification |
|---|---|
| Architecture | Transformer Encoder (Sequence-to-Vector) |
| Input Context | 72 Hours (Sliding Window) |
| Forecast Horizon | 1 Hour Ahead |
| Variables | Temperature, Humidity, Pressure (MSL), Wind Speed |
| Training Hardware | NVIDIA DGX Spark (Grace Blackwell / A100 optimized) |
| Data Source | Open-Meteo Historical Archive |
๐ Quick Start (Python)
You can download and use this model directly in your Python environment.
from huggingface_hub import hf_hub_download
import torch
import pickle
import sys
# 1. Download Model Artifacts
repo_id = "assix-research/gcc-weather-forecast-transformer"
model_path = hf_hub_download(repo_id=repo_id, filename="weather_transformer.pt")
scaler_path = hf_hub_download(repo_id=repo_id, filename="feature_scaler.pkl")
code_path = hf_hub_download(repo_id=repo_id, filename="model.py")
# 2. Load Architecture Dynamically
import importlib.util
spec = importlib.util.spec_from_file_location("weather_model", code_path)
weather_model = importlib.util.module_from_spec(spec)
spec.loader.exec_module(weather_model)
# 3. Initialize & Load Weights
model = weather_model.WeatherTransformer(input_dim=4, seq_len=72)
model.load_state_dict(torch.load(model_path))
model.eval()
print("โ
Model loaded successfully!")
๐ง Model Architecture
The core is a compact Transformer Encoder optimized for structured time-series data. Unlike LSTM or RNN baselines, the Transformer mechanism allows the model to attend to the entire 72-hour history simultaneously, capturing long-range dependencies (e.g., diurnal cycles and pressure fronts). Hyperparameters
Embedding Dimension (dmodelโ): 256
Attention Heads: 8 (Multi-Head Self-Attention)
Layers: 4 Encoder Blocks
Feedforward Network: 512 dimensions
Dropout: 0.1
Positional Encoding: Sinusoidal injection to preserve temporal order.
Inputs & Outputs
Input X: Tensor of shape (Batch, 72, 4).
Features: temperature_2m, relative_humidity_2m, pressure_msl, wind_speed_10m.
Output y: Tensor of shape (Batch, 4).
Predicted values for the very next hour.
๐ ๏ธ Data Pipeline
The system operates on a rigorous pipeline ensuring data consistency between training and inference.
Ingestion:
Fetches hourly historical data from the Open-Meteo API.
Locations: Dubai (25.2ยฐN, 55.2ยฐE) and Riyadh (24.7ยฐN, 46.6ยฐE).
Preprocessing:
Time Alignment: All timestamps standardized to UTC.
Normalization: Scikit-Learn StandardScaler (Z-score normalization) fit on the training corpus.
Inference:
The model accepts normalized tensors.
Outputs are inverse-transformed back to physical units (ยฐC, %, hPa, km/h) for display.
๐จโ๐ป Attribution & Credits
- Developed by: Assix Research (2026)
- Compute: Trained on NVIDIA DGX Spark infrastructure.
- Data Provider: Open-Meteo