File size: 7,124 Bytes
b437af8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
---
license: apache-2.0
language:
- en
tags:
- OneScience
- Earth Science
- Heliophysics
- Sun-Earth Space Forecasting
- Spatiotemporal Foundation Model
- Spectral Gating
- Long-Short Attention
frameworks: PyTorch
datasets:
- SDO/AIA
- SDO/HMI
---

<p align="center">
  <strong><span style="font-size: 30px;">Surya</span></strong>
</p>

# Model Introduction

Surya is a spatiotemporal foundation model for heliophysics and space weather research. It learns solar dynamics from multi-instrument SDO observations. The model combines spectral gating with long-short attention to predict future solar images from two historical time steps and supports autoregressive multi-step forecasting.

Paper: Surya: Foundation Model for Heliophysics  
https://ntrs.nasa.gov/citations/20250008498

# Model Description

Surya was proposed by institutions including NASA, IBM Research, and the University of Alabama in Huntsville. The model uses eight AIA channels and five HMI products from SDO as training data. It is suitable for one-step prediction and autoregressive multi-step forecasting of solar images.

# Use Cases

| Scenario | Description |
| :---: | :--- |
| Solar dynamics forecasting | Predict future multichannel solar images from two historical time steps. |
| Space weather research | Analyze solar activity and errors at different forecast lead times. |
| SDO multi-instrument modeling | Jointly process multichannel observations from AIA and HMI. |
| Solar flare forecasting | Fine-tune model representations to predict M-class and X-class solar flares within future time periods. |
| Solar active region segmentation | Fine-tune on magnetograms to segment solar active regions and polarity inversion lines. |
| Local quick validation | Use synthetic data to validate training, inference, evaluation, and visualization. |
| Multi-GPU training | Launch distributed data-parallel training with `torchrun`. |

# Usage Guide

## 1. OneCode Usage

Experience intelligent one-click AI4S programming through the OneCode online environment:

[Click to Experience Intelligent One-Click AI4S Programming](https://web-2069360198568017922-iaaj.ksai.scnet.cn:58043/home)

## 2. Manual Installation and Usage

**Hardware Requirements**

- A GPU or DCU is recommended.
- CPU can be used for pipeline validation with the current default small configuration.
- Training the original paper configuration with `4096x4096` resolution and 366 million parameters requires large-scale multi-GPU computing resources.

### Download the Model Package

```bash
hf download OneScience-Group/Surya --local-dir ./Surya
cd Surya
```

### Install 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
```

### Training Data Introduction

The paper uses SDO data from 2010 to 2024, including AIA 94, 131, 171, 193, 211, 304, 335, and 1600 Å, as well as HMI magnetic-field and Doppler-velocity products. The data are standardized to a 12-minute interval and spatially registered. The original training data are approximately 257 TB.

This model package uses synthetic data by default:

```bash
python scripts/fake_data.py
```

Each NPZ file contains at least `inputs`, `targets`, and `activity`. `inputs` has shape `[N, 2, 13, H, W]`, `targets` has shape `[N, S, 13, H, W]`, and `activity` stores the solar activity intensity at each forecast time step. When using real data, prepare files with the same fields and modify `conf/config.yaml`.

When using real data, do not run `fake_data.py`. Save temporally aligned, spatially registered, channel-organized, and signum-log normalized data to `data/`, replacing the synthetic data files:

```text
data/train.npz
data/test.npz
```

Each NPZ file contains at least:

```text
inputs:   float32 [N,2,13,H,W]
targets:  float32 [N,S,13,H,W]
activity: float32 [N,S]
```

The 13 channels correspond in order to eight AIA channels and five HMI products, and `S` is consistent with `forecast_steps` in `conf/config.yaml`. Modify `conf/config.yaml` according to the image size, number of forecast steps, channel statistics, and data paths of the real data. After data preparation, continue to use the unified training, inference, and evaluation commands below; use script arguments to override the default paths if other file locations are required.

### Training

Single GPU:

```bash
python scripts/train.py
```

Multiple GPUs:

```bash
torchrun --nproc_per_node=8 --nnodes=1 --rdzv_id=1000 --rdzv_backend=c10d --max_restarts=0 --master_addr="localhost" --master_port=29500 scripts/train.py
```

Training outputs:

```text
result/checkpoints/surya.pt
result/training/metrics.json
```

The training outputs include a model checkpoint for subsequent multi-step forecasting and training metrics that reflect different training stages, overall loss, and learning-rate changes, facilitating training-state preservation and model optimization analysis. Results on synthetic data are only for code-flow validation and do not represent paper results.

### Training Weights

This repository provides weights trained on SDO/AIA and SDO/HMI solar observations in the `weight/` folder. The weight files will be uploaded soon and are expected to be available in the near future.

### Inference

```bash
python scripts/inference.py
```

Inference results are output to:

```text
result/output/forecast.npz
```

### Evaluation and Visualization

```bash
python scripts/result.py
```

Evaluation and visualization outputs are written to:

```text
result/evaluation/metrics.json
result/evaluation/rollout_forecast_skill.png
result/evaluation/solar_dynamics_forecast.png
result/evaluation/solar_activity_evolution.png
result/evaluation/sdo_channel_error.png
result/evaluation/persistence_skill.png
```

The evaluation results comprehensively measure multi-step forecast errors, forecast skill relative to a persistence baseline, performance across AIA/HMI channels, and changes in solar activity intensity. Forecast images and lead-time curves show the evolution of solar dynamics and the long-term forecast stability of the model. The results follow the autoregressive forecasting protocol from the paper; results on synthetic data are only for validating the Surya workflow and do not represent performance on the paper's downstream tasks.

# Official OneScience Resources

| 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 and License

This repository is a reproduction of the original Surya paper.