File size: 4,536 Bytes
39f83b7 | 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 | ---
license: mit
language:
- en
library_name: pytorch
tags:
- OneScience
- fluid-dynamics
- turbulence
- fourier-neural-operator
- physics-informed
datasets:
- OneScience-Group/fno
---
<p align="center">
<strong><span style="font-size: 30px;">Spectral-Refiner</span></strong>
</p>
# Model Introduction
Spectral-Refiner is a physics-residual fine-tuning method for spatiotemporal Fourier neural operators. This project reproduces the two-dimensional forced-turbulence experiment from Table 2 of the paper: an SFNO is first trained on `64 x 64` vorticity trajectories, then its spectral output layer is fine-tuned at `256 x 256` resolution using the \(H^{-1}\) negative Sobolev norm of the Navier–Stokes PDE residual.
Paper: [Spectral-Refiner: Accurate Fine-Tuning of Spatiotemporal Fourier Neural Operator for Turbulent Flows](https://arxiv.org/abs/2405.17211)
# Model Description
The model takes the first 10 time steps of a two-dimensional vorticity field and predicts the next 40. The base SFNO has four spatiotemporal spectral layers, `12 x 12` spatial modes, 5 temporal modes, and width 20. Spectral-Refiner freezes the base network, expands the output spectral layer to `64 x 64 x 6`, and fine-tunes it for 50 steps with an \(H^{-1}\) PDE-residual objective. This project is an independent OneScience reproduction.
## Intended Uses
| Use case | Description |
| :--- | :--- |
| 2D turbulence prediction | Predict future spatiotemporal evolution from historical vorticity fields. |
| PDE surrogate | Accelerate periodic fluid problems with a Fourier neural operator. |
| Physics-residual fine-tuning | Constrain the predicted PDE residual with a negative Sobolev norm. |
# Usage
## 1. OneCode
[Launch the OneCode AI-for-Science environment](https://web-2069360198568017922-iaaj.ksai.scnet.cn:58043/home)
## 2. Manual Setup
**Hardware requirements**
- A GPU or DCU is recommended for full training and inference.
- A CPU can run imports and the `--smoke` connectivity test.
- The reported validation used PyTorch 2.5.1 on one DCU.
### Download the model repository from Hugging Face
```bash
pip install -U huggingface_hub
hf download OneScience-Group/Spectral-Refiner --local-dir ./Spectral-Refiner
cd Spectral-Refiner
```
### Install the runtime environment
**DCU environment**
```bash
conda create -n onescience311 python=3.11 -y
conda activate onescience311
pip install onescience[cfd-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[cfd-gpu] -i http://mirrors.onescience.ai:3141/pypi/simple/ --trusted-host mirrors.onescience.ai
```
### Download the training dataset from Hugging Face
```bash
hf download OneScience-Group/fno \
--repo-type dataset \
--local-dir ./data
```
The required files are:
```text
data/
├── fnodata_extra_64x64_N1280_v1e-3_T50_steps100_alpha2.5_tau7.pt
└── fnodata_extra_fp64_256x256_N16_v1e-3_T50_steps100_alpha2.5_tau7.pt
```
Set `data.train_file` and `data.test_file` in `config/config.yaml` to these files. The default experiment uses 1,152 low-resolution trajectories for training and 128 for validation, mapping 10 input steps to 40 output steps. The high-resolution data is used for evaluation and \(H^{-1}\) spectral fine-tuning on the `256 x 256` grid.
### Train
```bash
python scripts/train.py --config config/config.yaml
```
`weight/best_model.pt` stores the base SFNO, Spectral-Refiner output layer, configuration, and weight-selection metric.
### Inference
```bash
python scripts/inference.py
```
Predictions are saved to `results/predictions.pt`.
### Evaluation
```bash
python scripts/result.py
```
Metrics are printed and saved to `results/metrics.json`.
# OneScience
| Platform | OneScience repository | OneSkills 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
- Paper: [Spectral-Refiner, arXiv:2405.17211](https://arxiv.org/abs/2405.17211).
- Public implementation: [scaomath/torch-cfd](https://github.com/scaomath/torch-cfd).
- This repository uses the Hugging Face-compatible MIT identifier (`mit`). Dataset files and other third-party assets retain their original licenses and terms.
|