神經2022紙pdebench的代碼存儲庫:科學機器學習的廣泛基準
? Simtech Best Paper Award 2023 ?
Pdebench為科學機器學習提供了多種基準,包括具有挑戰性和現實的身體問題。該存儲庫由用於生成數據集的代碼組成,從數據存儲庫中上傳和下載數據集,以及訓練和評估不同的機器學習模型作為基線。 PDEBENCH具有比現有基準的更大範圍的PDE,並且包括現實且困難的問題(前進和逆向),包括各種初始和邊界條件的較大的現成數據集以及PDE參數。此外,創建了PDEBENCH是為了使源代碼可擴展,我們邀請SCIML社區的積極參與以改進和擴展基準。
由Takamoto Makoto <[email protected], [email protected]>
創建和<[email protected]>
我們還提供數據集和驗證的機器學習模型。
pdebench數據集:https://darus.uni-stuttgart.de/dataset.xhtml?persistentId=doi:10.18419/darus-2986
PDEBENCH預培訓模型:https://darus.uni-stuttgart.de/dataset.xhtml?
dois
本地:
pip install --upgrade pip wheel
pip install .
來自PYPI:
pip install pdebench
包括數據生成的依賴項:
pip install " pdebench[datagen310] "
pip install " .[datagen310] " # locally
或者
pip install " pdebench[datagen39] "
pip install " .[datagen39] " # locally
對於GPU支持,還有其他特定於平台的說明:
對於Pytorch,我們支持的最新版本是v1.13.1請參見以前的ver -versions/#linux -cuda 11.7。
對於我們的測試中的JAX比Pytorch快的速度約6倍,請參見JAX#pip-nastallation-gpu-cuda installed-via-pip
如果您還可以使用Anaconda安裝依賴項,我們建議將Mambaforge用作分發。否則,您可能必須啟用Conda-Forge頻道以獲取以下命令。
從新鮮的環境開始:
conda create -n myenv python=3.9
conda activate myenv
安裝模型培訓的依賴項:
conda install deepxde hydra-core h5py -c conda-forge
根據您的硬件可用性,要么安裝帶有CUDA支持的Pytorch:
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 cpuonly -c pytorch
數據生成的可選依賴性:
conda install clawpack jax jaxlib python-dotenv
在我們的測試中,我們使用Pytorch作為DeepXde的後端。請關注文檔以啟用此功能。
數據生成代碼包含在data_gen中:
gen_diff_react.py
生成2D擴散反應數據。gen_diff_sorp.py
生成1D擴散吸附數據。gen_radial_dam_break.py
生成2D淺水數據。gen_ns_incomp.py
生成2D不均勻的Navier-Stokes數據。plot.py
繪製生成的數據。uploader.py
將生成的數據上傳到數據存儲庫。.env
請注意,文件名應嚴格為.env
(即從文件名中刪除example
)configs
Directory包含存儲模擬配置的YAML文件。模擬的論點是特定於問題的,可以在模擬腳本中找到詳細的解釋。src
Directory包含有關不同問題的仿真腳本:用於2D擴散反應的sim_diff_react-py
, sim_diff_sorp.py
用於1D擴散 - 吸附,而swe
為淺水方程。數據生成代碼包含在data_gen_nle中:
utils.py
Util文件用於數據生成,主要是邊界條件和初始條件。
AdvectionEq
目錄和源代碼以生成1D對流方程訓練樣本
BurgersEq
目錄帶有源代碼,以生成1D漢堡方程培訓樣品
帶有源代碼的CompressibleFluid
目錄,以生成可壓縮的Navier-Stokes方程訓練樣本
ReactionDiffusionEq
目錄與源代碼生成1D反應擴散方程訓練樣本(注意:Darcyflow數據可以通過此文件夾中的Run_darcyflow2d.sh生成。 ) save
目錄保存生成的培訓樣品
生成訓練樣本的典型示例(1D對流方程):(在data_gen/data_gen_NLE/AdvectionEq/
)
python3 advection_multi_solution_Hydra.py +multi=beta1e0.yaml
假定在每個目錄中執行。
每個PDE目錄中的run_trainset.sh
中提供了生成其他PDE的示例。 Hydra的配置文件存儲在每個PDE目錄中的config
目錄中。
1D對流/漢堡/反應 - 擴散/2D Darcyflow/可壓縮的Navier-Stokes方程將數據保存為Numpy陣列。因此,要通過我們的數據加載程序讀取這些數據,應執行數據轉換/合併。可以使用data_gen_NLE/Data_Merge.py
的配置文件位於: data_gen/data_gen_NLE/config/config.yaml
。正確設置配置文件中的參數(類型:PDES的名稱,DIM:空間維度的數量,BD:邊界條件),可以將相應的HDF5文件作為:
python3 Data_Merge.py
您可以通過在.env
文件中放置這樣的config vars來設置該項目的數據位置的默認值:
WORKING_DIR=~/Data/Working
ARCHIVE_DATA_DIR=~/Data/Archive
example.env
中有一個示例。
Data_download中提供了下載腳本。有兩個選擇可以下載數據。
download_direct.py
(推薦)download_easydataverse.py
(可能很慢,您可能會遇到錯誤/問題;因此,不建議!)config
配置的YAML文件的配置文件中的配置文件。數據集匹配args.filename
中的任何文件都將下載到args.data_folder
中。 在這項工作中,我們提供了三種不同的ML模型,以針對FNO,U-NET和PINN的基準數據集進行訓練和評估。基線模型實現的代碼包含在模型中:
train_models_forward.py
是訓練和評估模型的主要腳本。它將根據輸入參數調用特定於模型的腳本。train_models_inverse.py
是訓練和評估逆問題模型的主要腳本。它將根據輸入參數調用特定於模型的腳本。metrics.py
是根據本文中描述的各種評估指標評估訓練模型的腳本。此外,它還繪製了預測和目標數據。analyse_result_forward.py
是將保存的泡菜文件從指標計算腳本轉換為pandas dataframe格式並將其保存為CSV文件的腳本。此外,它還繪製條形圖以比較不同模型之間的結果。analyse_result_inverse.py
是將保存的泡菜文件從指標計算腳本轉換為pandas dataframe格式並將其保存為CSV文件的腳本。該腳本用於反問題。此外,它還繪製條形圖以比較不同模型之間的結果。fno
包含FNO實現的腳本。這些部分是由FNO存儲庫改編的。unet
包含U-NET實現的腳本。這些部分是根據U-NET存儲庫改編的。pinn
包含Pinn實現的腳本。這些利用了Deepxde庫。inverse
包含基於梯度的逆模型的模型。config
包含用於模型培訓輸入的YAML文件。 ARGS目錄中提供了不同方程式的默認模板。用戶只需要將它們複製並粘貼到config.yaml文件中的args關鍵字。可以在run_forward_1d.sh中找到運行正向模型訓練的示例,可以在run_inverse.sh中找到運行反向模型訓練的示例。
我們通過DARUS數據存儲庫在論文中使用的基準數據集。數據生成配置可以在論文中找到。此外,預處理的型號也可從Pdebench預驗證的Darus存儲庫中下載。要使用驗證的模型,用戶可以指定參數continue_training: True
。
以下是PDEBENCH目錄結構的例證。
pdebench
|_? models
|_? pinn # Model: Physics-Informed Neural Network
|_? train.py
|_? utils.py
|_? pde_definitions.py
|_? fno # Model: Fourier Neural Operator
|_? train.py
|_? utils.py
|_? fno.py
|_? unet # Model: U-Net
|_? train.py
|_? utils.py
|_? unet.py
|_? inverse # Model: Gradient-Based Inverse Method
|_? train.py
|_? utils.py
|_? inverse.py
|_? config # Config: All config files reside here
|_? train_models_inverse.py
|_? run_forward_1D.sh
|_? analyse_result_inverse.py
|_? train_models_forward.py
|_? run_inverse.sh
|_? metrics.py
|_? analyse_result_forward.py
|_? data_download # Data: Scripts to download data from DaRUS
|_? config
|_? download_direct.py
|_? download_easydataverse.py
|_? visualize_pdes.py
|_? README.md
|_? download_metadata.csv
|_? data_gen # Data: Scripts to generate data
|_? configs
|_? data_gen_NLE
|_? src
|_? notebooks
|_? gen_diff_sorp.py
|_? plot.py
|_? example.env
|_? gen_ns_incomp.py
|_? gen_diff_react.py
|_? uploader.py
|_? gen_radial_dam_break.py
|_? __init__.py
如果您在研究中使用PDEBench數據集和/或源代碼,請引用以下論文。
@inproceedings{PDEBench2022,
author = {Takamoto, Makoto and Praditia, Timothy and Leiteritz, Raphael and MacKinlay, Dan and Alesiani, Francesco and Pflüger, Dirk and Niepert, Mathias},
title = {{PDEBench: An Extensive Benchmark for Scientific Machine Learning}},
year = {2022},
booktitle = {36th Conference on Neural Information Processing Systems (NeurIPS 2022) Track on Datasets and Benchmarks},
url = {https://arxiv.org/abs/2210.07182}
}
@data{darus-2986_2022,
author = {Takamoto, Makoto and Praditia, Timothy and Leiteritz, Raphael and MacKinlay, Dan and Alesiani, Francesco and Pflüger, Dirk and Niepert, Mathias},
publisher = {DaRUS},
title = {{PDEBench Datasets}},
year = {2022},
doi = {10.18419/darus-2986},
url = {https://doi.org/10.18419/darus-2986}
}
@article{cape-takamoto:2023,
author = {Makoto Takamoto and
Francesco Alesiani and
Mathias Niepert},
title = {Learning Neural {PDE} Solvers with Parameter-Guided Channel Attention},
journal = {CoRR},
volume = {abs/2304.14118},
year = {2023},
url = {https://doi.org/10.48550/arXiv.2304.14118},
doi = {10.48550/arXiv.2304.14118},
eprinttype = {arXiv},
eprint = {2304.14118},
}
@inproceedings{vcnef-vectorized-conditional-neural-fields-hagnberger:2024,
author = {Hagnberger, Jan and Kalimuthu, Marimuthu and Musekamp, Daniel and Niepert, Mathias},
title = {{Vectorized Conditional Neural Fields: A Framework for Solving Time-dependent Parametric Partial Differential Equations}},
year = {2024},
booktitle = {Proceedings of the 41st International Conference on Machine Learning (ICML 2024)}
}
@article{active-learn-neuralpde-benchmark-musekamp:2024,
author = {Daniel Musekamp and
Marimuthu Kalimuthu and
David Holzm{"{u}}ller and
Makoto Takamoto and
Mathias Niepert},
title = {Active Learning for Neural {PDE} Solvers},
journal = {CoRR},
volume = {abs/2408.01536},
year = {2024},
url = {https://doi.org/10.48550/arXiv.2408.01536},
doi = {10.48550/ARXIV.2408.01536},
eprinttype = {arXiv},
eprint = {2408.01536},
}
MIT許可,除非另有說明。請參閱LICENSE.txt
文件。