Aardvark-Weather / README.md
yzt15806542928's picture
Upload folder using huggingface_hub
bd3493c verified
|
Raw
History Blame Contribute Delete
7.61 kB
---
license: other
language:
- en
- zh
tags:
- OneScience
- Earth Science
- Weather Forecasting
- Medium-Range Weather Forecasting
frameworks: PyTorch
datasets:
- OneScience/Aardvark-Weather
---
<p align="center">
<strong><span style="font-size: 30px;">Aardvark Weather</span></strong>
</p>
# 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.