--- license: other language: - en - zh tags: - OneScience - Earth Science - Weather Forecasting - Medium-Range Weather Forecasting frameworks: PyTorch datasets: - OneScience/Aardvark-Weather ---

Aardvark Weather

# Model Overview Aardvark Weather is an end-to-end multimodal weather forecasting model that generates global gridded forecasts and station-level predictions through an observation encoder, a global forecast processor, and a station decoder. Paper: *End-to-end data-driven weather prediction* https://www.nature.com/articles/s41586-025-08897-0 # Model Description This model package reuses the official code and weights to provide the following run pipeline: ```text Official Multimodal Sample -> Encoder -> Day-1 Processor -> TAS Decoder -> 1-day global forecast and station 2-meter temperature ``` # Use Cases | Scenario | Description | | :---: | :--- | | Official Model Verification | Inspect official samples, configuration, and checkpoints. | | Global Weather Forecasting | Output a global 1.5° gridded state of 24 variables. | | Station Temperature Forecasting | Output 2-meter temperature at 8,719 stations. | # Usage ## 1. OneCode [Click to experience intelligent one-click AI4S programming](https://web-2069360198568017922-iaaj.ksai.scnet.cn:58043/home) ## 2. Manual Installation & Usage **Hardware Requirements** - Inference with the official weights requires an NVIDIA GPU. - CPU can be used for resource and checkpoint inspection; running full inference on CPU is not recommended. ### Download the Model Package ```bash hf download --model OneScience-Group/Aardvark-Weather --local-dir ./Aardvark-Weather cd Aardvark-Weather ``` ### Set Up the Runtime Environment **DCU Environment** ```bash conda create -n onescience311 python=3.11 -y conda activate onescience311 pip install onescience[earth-dcu] -i http://mirrors.onescience.ai:3141/pypi/simple/ --trusted-host mirrors.onescience.ai ``` **GPU Environment** ```bash conda create -n onescience311 python=3.11 -y libstdcxx-ng=12 libgcc-ng=12 gcc_linux-64=12 gxx_linux-64=12 conda activate onescience311 pip install onescience[earth-gpu] -i http://mirrors.onescience.ai:3141/pypi/simple/ --trusted-host mirrors.onescience.ai ``` If the environment lacks Aardvark dependencies, refer to `official-src/environment.yml` for additional installation. The current adaptation is compatible with the `Block` parameter of the newer `timm` package. ### Data & Weights The model package already includes the resources required for 1-day temperature inference: ```text weights/sample_data/sample_data_final.pkl weights/trained_model/encoder/epoch_96 weights/trained_model/processor/forecast_1/epoch_0 weights/trained_model/decoder/tas/lt_1/epoch_18 official-src/data/grid_lon_lat/ official-src/data/norm_factors/ ``` To re-download from source: ```text Official Code: https://github.com/anna-allen/aardvark-weather-public Official Weights: https://huggingface.co/datasets/av555/aardvark-weather ``` ### Training The training entry point provides a complete pipeline with epochs, validation, early stopping, learning rate scheduling, best/latest checkpointing, and resumption. By default, the Encoder and Day-1 Processor are frozen and only the TAS Decoder is trained: ```bash python scripts/train.py ``` Paper-style end-to-end joint fine-tuning: ```bash python scripts/train.py --train-modules all --epochs 10 --train-steps 100 ``` Resuming training: ```bash python scripts/train.py --resume weight/training/last.pth ``` The default configuration resides in `conf/config.yaml`. `--data` can point to an official-schema pickle file or a directory containing multiple `.pkl` files; multiple files are partitioned into train and validation sets in a deterministic manner. `--batch-size` concatenates multiple tasks along the existing batch dimension of the official task. When only the single official sample is included, training and validation reuse the same task — this allows end-to-end validation of the training software pipeline but does not constitute an independent validation set, nor can it provide the data diversity required to reproduce paper-level accuracy. Training artifacts: ```text weight/training/best.pth weight/training/last.pth weight/training/history.json weight/training/train.json ``` ### Inference ```bash python scripts/inference.py ``` Using weights obtained from training: ```bash python scripts/inference.py --checkpoint weight/training/best.pth ``` Inference loads the official sample and the Day-1 `tas` weights by default. Results are saved to: ```text result/inference_one_day.json result/prediction.pt result/target.pt ``` ### Result Inspection ```bash python scripts/result.py ``` Verified output shapes: ```text initial_state: [1, 121, 240, 24] global_forecast: [1, 121, 240, 24] station_tas: [1, 8719] ``` Current results constitute a connectivity/end-to-end verification and do not reproduce the paper's RMSE/MAE metrics. The result script additionally produces `result/metrics.json` and `result/comparison.png`. The `normalized_mae` and `normalized_rmse` are computed in the normalized space of the official sample and should not be directly compared to the paper's physical-unit metrics. ### Paper vs. Current Implementation I/O | Item | Paper | Current Package | | --- | --- | --- | | Input | Multimodal satellite, station, ship, and radiosonde observations | Bundled official sample pickle with a field structure consistent with the official Encoder | | Global State | `24 × 121 × 240`, 1.5° | Day-1 supported; output `[1,121,240,24]` | | Station Output | 2 m temperature and 10 m wind, up to Day-10 | Day-1 TAS only; `[1,8719]` | | Training | Staged pre-training followed by ~25,000 steps of end-to-end fine-tuning | Configurable full training loop; supports Decoder-only or full-model joint fine-tuning | | Evaluation | Grid-point weighted RMSE and station MAE in physical units | MAE/RMSE in normalized sample space | All commands should be run from the project root; `scripts/inference.py --root` converts to an absolute path. The official model internally depends on CUDA, so CPU is currently unavailable for inference. Training data must adhere to the official multimodal task dictionary schema; the current directory does not synthesize satellite or station observations — the bundled official sample serves as the default training-pipeline validator. The model package retains only official resources under `weights/` and does not carry local training artifacts under `weight/` or generated outputs under `result/`. Paper-level training still requires preparing observation data spanning the full date range and converting it into the same `.pkl` task contract. ### Real Data Using real dates requires preparing ASCAT, AMSU-A/B, HIRS, IASI, GridSat, HadISD, ICOADS, IGRA, ERA5, topography, climatology, and their corresponding normalization statistics. # OneScience Official Information | Platform | OneScience Main Repository | Skills Repository | | --- | --- | --- | | Gitee | https://gitee.com/onescience-ai/onescience | https://gitee.com/onescience-ai/oneskills | | GitHub | https://github.com/onescience-ai/OneScience | https://github.com/onescience-ai/oneskills | # Citation & License - Official Code: https://github.com/anna-allen/aardvark-weather-public - This directory is an independent adaptation of the official Aardvark Weather model. - Code, weights, and data are subject to their respective official licenses and data terms.