Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d2b8ae962d | |||
| d9f2964faf | |||
| 62acbda2c4 | |||
| cf3547114d | |||
| 0387b09086 | |||
| 84a1e2448d | |||
| 597f90e3d8 | |||
| 27d322a56a | |||
| b7a32defaf | |||
| d289a9a310 |
@@ -8,6 +8,8 @@ by Kaifeng Bi, Lingxi Xie, Hengheng Zhang, Xin Chen, Xiaotao Gu and Qi Tian
|
|||||||
|
|
||||||
Resources including pseudocode, pre-trained models, and inference code are released.
|
Resources including pseudocode, pre-trained models, and inference code are released.
|
||||||
|
|
||||||
|
The slides used in a series of recent talks are attached here. [Baidu Netdisk](https://pan.baidu.com/s/14ZGywcr4XAK5dk75-8PUqA?pwd=9sco), extraction code: 9sco
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
The downloaded files shall be organized as the following hierarchy:
|
The downloaded files shall be organized as the following hierarchy:
|
||||||
@@ -18,10 +20,10 @@ The downloaded files shall be organized as the following hierarchy:
|
|||||||
│ │ ├── input_surface.npy
|
│ │ ├── input_surface.npy
|
||||||
│ │ ├── input_upper.npy
|
│ │ ├── input_upper.npy
|
||||||
│ ├── output_data
|
│ ├── output_data
|
||||||
│ ├── model_jit_cpu_1.onnx
|
│ ├── pangu_weather_1.onnx
|
||||||
│ ├── model_jit_cpu_3.onnx
|
│ ├── pangu_weather_3.onnx
|
||||||
│ ├── model_jit_cpu_6.onnx
|
│ ├── pangu_weather_6.onnx
|
||||||
│ ├── model_jit_cpu_24.onnx
|
│ ├── pangu_weather_24.onnx
|
||||||
│ ├── inference_cpu.py
|
│ ├── inference_cpu.py
|
||||||
│ ├── inference_gpu.py
|
│ ├── inference_gpu.py
|
||||||
│ ├── inference_iterative.py
|
│ ├── inference_iterative.py
|
||||||
@@ -41,15 +43,15 @@ pip install -r requirement_gpu.txt
|
|||||||
|
|
||||||
#### Downloading trained models
|
#### Downloading trained models
|
||||||
|
|
||||||
Please download the four pre-trained models (~1.1GB each) from the Google drive:
|
Please download the four pre-trained models (~1.1GB each) from Google drive or Baidu netdisk:
|
||||||
|
|
||||||
The 1-hour model: [model_jit_cpu_1.onnx](https://drive.google.com/file/d/1fg5jkiN_5dHzKb-5H9Aw4MOmfILmeY-S/view?usp=share_link)
|
The 1-hour model (pangu_weather_1.onnx): [Google drive](https://drive.google.com/file/d/1fg5jkiN_5dHzKb-5H9Aw4MOmfILmeY-S/view?usp=share_link)/[Baidu netdisk](https://pan.baidu.com/s/1M7SAigVsCSH8hpw6DE8TDQ?pwd=ie0h)
|
||||||
|
|
||||||
The 3-hour model: [model_jit_cpu_3.onnx](https://drive.google.com/file/d/1EdoLlAXqE9iZLt9Ej9i-JW9LTJ9Jtewt/view?usp=share_link)
|
The 3-hour model (pangu_weather_3.onnx): [Google drive](https://drive.google.com/file/d/1EdoLlAXqE9iZLt9Ej9i-JW9LTJ9Jtewt/view?usp=share_link)/[Baidu netdisk](https://pan.baidu.com/s/197fZsoiCqZYzKwM7tyRrfg?pwd=gmcl)
|
||||||
|
|
||||||
The 6-hour model: [model_jit_cpu_6.onnx](https://drive.google.com/file/d/1a4XTktkZa5GCtjQxDJb_fNaqTAUiEJu4/view?usp=share_link)
|
The 6-hour model (pangu_weather_6.onnx): [Google drive](https://drive.google.com/file/d/1a4XTktkZa5GCtjQxDJb_fNaqTAUiEJu4/view?usp=share_link)/[Baidu netdisk](https://pan.baidu.com/s/1q7IB7tNjqIwoGC7KVMPn4w?pwd=vxq3)
|
||||||
|
|
||||||
The 24-hour model: [model_jit_cpu_24.onnx](https://drive.google.com/file/d/1lweQlxcn9fG0zKNW8ne1Khr9ehRTI6HP/view?usp=share_link)
|
The 24-hour model (pangu_weather_24.onnx): [Google drive](https://drive.google.com/file/d/1lweQlxcn9fG0zKNW8ne1Khr9ehRTI6HP/view?usp=share_link)/[Baidu netdisk](https://pan.baidu.com/s/179q2gkz2BrsOR6g3yfTVQg?pwd=eajy)
|
||||||
|
|
||||||
These models are stored using the ONNX format, and thus can be used via different languages such as Python, C++, C#, Java, etc.
|
These models are stored using the ONNX format, and thus can be used via different languages such as Python, C++, C#, Java, etc.
|
||||||
|
|
||||||
@@ -69,11 +71,11 @@ We support ERA5 initial fields and ECMWF initial fields (e.g., the initial field
|
|||||||
|
|
||||||
We temporarily do not support other kinds of initial fields due to the possibly dramatic differences in the fields when Z<0.
|
We temporarily do not support other kinds of initial fields due to the possibly dramatic differences in the fields when Z<0.
|
||||||
|
|
||||||
We provide an example of transferred input files, `input_surface.npy` and `input_upper.npy`, which correspond to the ERA5 initial fields of at 12:00UTC, 2018/09/27. Please download them using Google drive:
|
We provide an example of transferred input files, `input_surface.npy` and `input_upper.npy`, which correspond to the ERA5 initial fields of at 12:00UTC, 2018/09/27. Please download them from Google drive or Baidu netdisk:
|
||||||
|
|
||||||
[`input_surface.npy`](https://drive.google.com/file/d/1pj8QEVNpC1FyJfUabDpV4oU3NpSe0BkD/view?usp=share_link)
|
`input_surface.npy`: [Google drive](https://drive.google.com/file/d/1pj8QEVNpC1FyJfUabDpV4oU3NpSe0BkD/view?usp=share_link)/[Baidu netdisk](https://pan.baidu.com/s/1i4o5i8guAqmOus6PWncAlA?pwd=4z9s)
|
||||||
|
|
||||||
[`input_upper.npy`](https://drive.google.com/file/d/1--7xEBJt79E3oixizr8oFmK_haDE77SS/view?usp=share_link)
|
`input_upper.npy`: [Google drive](https://drive.google.com/file/d/1--7xEBJt79E3oixizr8oFmK_haDE77SS/view?usp=share_link)/[Baidu netdisk](https://pan.baidu.com/s/1mS8X5MqEdbVfF2u2Us62FQ?pwd=sgx6)
|
||||||
|
|
||||||
#### Inference
|
#### Inference
|
||||||
|
|
||||||
@@ -94,7 +96,11 @@ Note that one needs to download about 60TB of ERA5 data and prepare for computat
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Pangu-Weather is released by Huawei Cloud. **The commercial use of these models is forbidden.**
|
Pangu-Weather is released by Huawei Cloud.
|
||||||
|
|
||||||
|
The trained parameters of Pangu-Weather are made available under the terms of the BY-NC-SA 4.0 license. You can find details [here](https://creativecommons.org/licenses/by-nc-sa/4.0/).
|
||||||
|
|
||||||
|
**The commercial use of these models is forbidden.**
|
||||||
|
|
||||||
Also, please note that all models were trained using the ERA5 dataset provided by ECMWF. Please do follow [their policy](https://apps.ecmwf.int/datasets/licences/copernicus/).
|
Also, please note that all models were trained using the ERA5 dataset provided by ECMWF. Please do follow [their policy](https://apps.ecmwf.int/datasets/licences/copernicus/).
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -21,7 +21,7 @@ options.intra_op_num_threads = 1
|
|||||||
cuda_provider_options = {'arena_extend_strategy':'kSameAsRequested',}
|
cuda_provider_options = {'arena_extend_strategy':'kSameAsRequested',}
|
||||||
|
|
||||||
# Initialize onnxruntime session for Pangu-Weather Models
|
# Initialize onnxruntime session for Pangu-Weather Models
|
||||||
ort_session_24 = ort.InferenceSession('pangu_weather_24.onnx', sess_options=options, provider=['CPUExecutionProvider'])
|
ort_session_24 = ort.InferenceSession('pangu_weather_24.onnx', sess_options=options, providers=['CPUExecutionProvider'])
|
||||||
|
|
||||||
# Load the upper-air numpy arrays
|
# Load the upper-air numpy arrays
|
||||||
input = np.load(os.path.join(input_data_dir, 'input_upper.npy')).astype(np.float32)
|
input = np.load(os.path.join(input_data_dir, 'input_upper.npy')).astype(np.float32)
|
||||||
|
|||||||
+1
-1
@@ -21,7 +21,7 @@ options.intra_op_num_threads = 1
|
|||||||
cuda_provider_options = {'arena_extend_strategy':'kSameAsRequested',}
|
cuda_provider_options = {'arena_extend_strategy':'kSameAsRequested',}
|
||||||
|
|
||||||
# Initialize onnxruntime session for Pangu-Weather Models
|
# Initialize onnxruntime session for Pangu-Weather Models
|
||||||
ort_session_24 = ort.InferenceSession('pangu_weather_24.onnx', sess_options=options, provider=[('CUDAExecutionProvider', cuda_provider_options)])
|
ort_session_24 = ort.InferenceSession('pangu_weather_24.onnx', sess_options=options, providers=[('CUDAExecutionProvider', cuda_provider_options)])
|
||||||
|
|
||||||
# Load the upper-air numpy arrays
|
# Load the upper-air numpy arrays
|
||||||
input = np.load(os.path.join(input_data_dir, 'input_upper.npy')).astype(np.float32)
|
input = np.load(os.path.join(input_data_dir, 'input_upper.npy')).astype(np.float32)
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ options.intra_op_num_threads = 1
|
|||||||
cuda_provider_options = {'arena_extend_strategy':'kSameAsRequested',}
|
cuda_provider_options = {'arena_extend_strategy':'kSameAsRequested',}
|
||||||
|
|
||||||
# Initialize onnxruntime session for Pangu-Weather Models
|
# Initialize onnxruntime session for Pangu-Weather Models
|
||||||
ort_session_24 = ort.InferenceSession('pangu_weather_24.onnx', sess_options=options, provider=[('CUDAExecutionProvider', cuda_provider_options)])
|
ort_session_24 = ort.InferenceSession('pangu_weather_24.onnx', sess_options=options, providers=[('CUDAExecutionProvider', cuda_provider_options)])
|
||||||
ort_session_6 = ort.InferenceSession('pangu_weather_6.onnx', sess_options=options, provider=[('CUDAExecutionProvider', cuda_provider_options)])
|
ort_session_6 = ort.InferenceSession('pangu_weather_6.onnx', sess_options=options, providers=[('CUDAExecutionProvider', cuda_provider_options)])
|
||||||
|
|
||||||
# Load the upper-air numpy arrays
|
# Load the upper-air numpy arrays
|
||||||
input = np.load(os.path.join(input_data_dir, 'input_upper.npy')).astype(np.float32)
|
input = np.load(os.path.join(input_data_dir, 'input_upper.npy')).astype(np.float32)
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ from Your_AI_Library import Linear, Conv3d, Conv2d, ConvTranspose3d, ConvTranspo
|
|||||||
# GeLU: the GeLU activation function, see Pytorch API or Tensorflow API
|
# GeLU: the GeLU activation function, see Pytorch API or Tensorflow API
|
||||||
# DropOut: the dropout function, available in all deep learning libraries
|
# DropOut: the dropout function, available in all deep learning libraries
|
||||||
# DropPath: the DropPath function, see the implementation of vision-transformer, see timm pakage of Pytorch
|
# DropPath: the DropPath function, see the implementation of vision-transformer, see timm pakage of Pytorch
|
||||||
|
# A possible implementation of DropPath: from timm.models.layers import DropPath
|
||||||
# LayerNorm: the layer normalization function, see Pytorch API or Tensorflow API
|
# LayerNorm: the layer normalization function, see Pytorch API or Tensorflow API
|
||||||
# Softmax: softmax function, see Pytorch API or Tensorflow API
|
# Softmax: softmax function, see Pytorch API or Tensorflow API
|
||||||
from Your_AI_Library import GeLU, DropOut, DropPath, LayerNorm, SoftMax
|
from Your_AI_Library import GeLU, DropOut, DropPath, LayerNorm, SoftMax
|
||||||
|
|||||||
Reference in New Issue
Block a user