Repositori kode untuk neurips 2022 kertas pdebench: tolok ukur luas untuk pembelajaran mesin ilmiah
? Simtech Best Paper Award 2023 ?
Pdebench menyediakan rangkaian tolok ukur yang beragam dan komprehensif untuk pembelajaran mesin ilmiah, termasuk masalah fisik yang menantang dan realistis. Repositori ini terdiri dari kode yang digunakan untuk menghasilkan dataset, untuk mengunggah dan mengunduh dataset dari repositori data, serta untuk melatih dan mengevaluasi model pembelajaran mesin yang berbeda sebagai garis dasar. Pdebench memiliki fitur PDE yang jauh lebih luas daripada tolok ukur yang ada dan mencakup masalah yang realistis dan sulit (baik maju maupun terbalik), kumpulan data siap pakai yang lebih besar yang terdiri dari berbagai kondisi awal dan batas, dan parameter PDE. Selain itu, Pdebench dibuat untuk membuat kode sumber diperluas dan kami mengundang partisipasi aktif dari komunitas SCIML untuk meningkatkan dan memperluas tolok ukur.
Dibuat dan dikelola oleh Makoto Takamoto <[email protected], [email protected]>
, Timothy Praditia <[email protected]>
timothy.praditia
Kami juga menyediakan kumpulan data dan model pembelajaran mesin pretrained.
Dataset Pdebench: https://darus.uni-stuttgart.de/dataset.xhtml?PerSistentId=doi:10.18419/darus-2986
Model Pdebench Pre-Trained: https://darus.uni-stuttgart.de/dataset.xhtml?PerSistentId=doi:10.18419/darus-2987
Dois
Secara lokal:
pip install --upgrade pip wheel
pip install .
Dari pypi:
pip install pdebench
Untuk memasukkan dependensi untuk pembuatan data:
pip install " pdebench[datagen310] "
pip install " .[datagen310] " # locally
atau
pip install " pdebench[datagen39] "
pip install " .[datagen39] " # locally
Untuk dukungan GPU ada instruksi khusus platform:
Untuk Pytorch, versi terbaru yang kami dukung adalah v1.13.1 Lihat sebelumnya -versi/#Linux - CUDA 11.7.
Untuk Jax, yang sekitar 6 kali lebih cepat untuk simulasi daripada Pytorch dalam tes kami, lihat JAX#PIP-INSTALLASI-GPU-CUDA-INSTALLED-VIA-PIP
Jika Anda suka, Anda juga dapat menginstal dependensi menggunakan Anaconda, kami sarankan untuk menggunakan Mambaforge sebagai distribusi. Kalau tidak, Anda mungkin harus mengaktifkan saluran conda-forge untuk perintah berikut.
Mulai dari lingkungan yang segar:
conda create -n myenv python=3.9
conda activate myenv
Pasang dependensi untuk pelatihan model:
conda install deepxde hydra-core h5py -c conda-forge
Menurut ketersediaan perangkat keras Anda, baik instal Pytorch dengan dukungan CUDA:
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
Ketergantungan opsional untuk pembuatan data:
conda install clawpack jax jaxlib python-dotenv
Dalam tes kami, kami menggunakan Pytorch sebagai backend untuk DeepXDE. Harap ikuti dokumentasi untuk mengaktifkan ini.
Kode pembuatan data terkandung dalam data_gen:
gen_diff_react.py
untuk menghasilkan data reaksi difusi 2D.gen_diff_sorp.py
untuk menghasilkan data disorpsi difusi 1D.gen_radial_dam_break.py
untuk menghasilkan data air dangkal 2D.gen_ns_incomp.py
untuk menghasilkan data Navier-Stokes yang tidak dapat dikompres 2D yang tidak dapat dimampatkan.plot.py
untuk memplot data yang dihasilkan.uploader.py
untuk mengunggah data yang dihasilkan ke repositori data..env
adalah data lingkungan untuk menyimpan token URL dan API Dataverse untuk mengunggah data yang dihasilkan. Perhatikan bahwa nama file harus secara ketat .env
(yaitu menghapus example
dari nama file)configs
berisi file YAML yang menyimpan konfigurasi untuk simulasi. Argumen untuk simulasi adalah penjelasan spesifik masalah dan terperinci dapat ditemukan dalam skrip simulasi.src
berisi skrip simulasi untuk masalah yang berbeda: sim_diff_react-py
untuk reaksi difusi 2D, sim_diff_sorp.py
untuk 1D-sorpsi difusi, dan swe
untuk persamaan air dangkal.Kode pembuatan data terkandung dalam data_gen_nle:
file utils.py
util untuk pembuatan data, terutama kondisi batas dan kondisi awal.
Direktori AdvectionEq
dengan kode sumber untuk menghasilkan sampel pelatihan persamaan adveksi 1D
Direktori BurgersEq
dengan kode sumber untuk menghasilkan sampel pelatihan persamaan burger 1D
Direktori CompressibleFluid
dengan kode sumber untuk menghasilkan sampel pelatihan persamaan Navier-Stokes yang dapat dikompresikan
ReactionDiffusionEq
dengan kode sumber untuk menghasilkan sampel pelatihan persamaan difusi reaksi 1D ( Catatan: Data Darcyflow dapat dihasilkan oleh run_darcyflow2d.sh di folder ini. ) save
direktori menyimpan sampel pelatihan yang dihasilkan
Contoh khas untuk menghasilkan sampel pelatihan (persamaan adveksi 1D): (dalam data_gen/data_gen_NLE/AdvectionEq/
)
python3 advection_multi_solution_Hydra.py +multi=beta1e0.yaml
yang diasumsikan dilakukan di setiap direktori.
Contoh untuk menghasilkan PDE lain disediakan di run_trainset.sh
di setiap direktori PDE. File konfigurasi untuk hydra disimpan dalam direktori config
di setiap direktori PDE.
1D Advection/Burgers/Reaction-Diffusion/2D Darcyflow/Compressible Navier-Stokes Persamaan Menghemat Data sebagai Array Numpy. Jadi, untuk membaca data tersebut melalui Dataloaders kami, transformasi/penggabungan data harus dilakukan. Ini dapat dilakukan dengan menggunakan data_gen_NLE/Data_Merge.py
yang file konfigurasi berada di: data_gen/data_gen_NLE/config/config.yaml
. Setelah mengatur parameter dengan benar dalam file konfigurasi (ketik: nama PDE, DIM: Jumlah dimensi spasial, BD: kondisi batas), file HDF5 yang sesuai dapat diperoleh sebagai:
python3 Data_Merge.py
Anda dapat mengatur nilai default untuk lokasi data untuk proyek ini dengan menempatkan vars config seperti ini di file .env
:
WORKING_DIR=~/Data/Working
ARCHIVE_DATA_DIR=~/Data/Archive
Ada contoh dalam example.env
.
Script unduhan disediakan di data_download. Ada dua opsi untuk mengunduh data.
download_direct.py
( disarankan )download_easydataverse.py
(mungkin lambat dan Anda bisa menghadapi kesalahan/masalah; karenanya, tidak disarankan!)config
yang berisi file YAML yang menyimpan konfigurasi. File apa pun dalam dataset pencocokan args.filename
akan diunduh ke args.data_folder
. Dalam karya ini, kami menyediakan tiga model ML yang berbeda untuk dilatih dan dievaluasi terhadap dataset benchmark, yaitu FNO, U-Net, dan Pinn. Kode untuk implementasi model dasar terkandung dalam model:
train_models_forward.py
adalah skrip utama untuk melatih dan mengevaluasi model. Ini akan memanggil skrip khusus model berdasarkan argumen input.train_models_inverse.py
adalah skrip utama untuk melatih dan mengevaluasi model untuk masalah terbalik. Ini akan memanggil skrip khusus model berdasarkan argumen input.metrics.py
adalah skrip untuk mengevaluasi model yang terlatih berdasarkan berbagai metrik evaluasi yang dijelaskan dalam makalah kami. Selain itu, ini juga memplot prediksi dan data target.analyse_result_forward.py
adalah skrip untuk mengonversi file acar yang disimpan dari skrip perhitungan metrik menjadi format panda DataFrame dan menyimpannya sebagai file CSV. Selain itu juga memplot grafik batang untuk membandingkan hasil antara model yang berbeda.analyse_result_inverse.py
adalah skrip untuk mengonversi file acar yang disimpan dari skrip perhitungan metrik menjadi format pandas dataFrame dan menyimpannya sebagai file CSV. Skrip ini digunakan untuk masalah terbalik. Selain itu juga memplot grafik batang untuk membandingkan hasil antara model yang berbeda.fno
berisi skrip implementasi FNO. Ini sebagian diadaptasi dari repositori FNO.unet
berisi skrip implementasi U-NET. Ini sebagian diadaptasi dari repositori U-Net.pinn
berisi skrip implementasi pinn. Ini menggunakan perpustakaan DeepXDe.inverse
berisi model untuk model terbalik berdasarkan gradien.config
berisi file YAML untuk input pelatihan model. Template default untuk persamaan yang berbeda disediakan di direktori ARGS. Pengguna hanya perlu menyalin dan menempelkannya ke kata kunci ARGS di file config.yaml.Contoh untuk menjalankan pelatihan model maju dapat ditemukan di run_forward_1d.sh, dan contoh untuk menjalankan pelatihan model terbalik dapat ditemukan di run_inverse.sh.
Kami menyediakan kumpulan data patokan yang kami gunakan di koran melalui repositori data DARUS kami. Konfigurasi pembuatan data dapat ditemukan di koran. Selain itu, model pretrained juga tersedia untuk diunduh dari repositori Darus model pretrained Pdebench. Untuk menggunakan model pretrained, pengguna dapat menentukan argumen continue_training: True
di file config.
Di bawah ini adalah ilustrasi struktur direktori 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
Harap kutip makalah berikut jika Anda menggunakan kumpulan data PDEBENCH dan/atau kode sumber dalam penelitian Anda.
@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 berlisensi, kecuali jika dinyatakan sebaliknya. Lihat file LICENSE.txt
.