مستودع التعليمات البرمجية لـ Neurips 2022 Paper Pdebench: معيار واسع للتعلم الآلي العلمي
؟ جائزة Simtech Best Paper 2023 ؟
يوفر PDEBENCH مجموعة متنوعة وشاملة من المعايير للتعلم الآلي العلمي ، بما في ذلك المشكلات الجسدية الصعبة والواقعية. يتكون هذا المستودع من الكود المستخدم لإنشاء مجموعات البيانات ، لتحميل وتنزيل مجموعات البيانات من مستودع البيانات ، وكذلك لتدريب وتقييم نماذج التعلم الآلي المختلفة كخطوط أساسية. يتميز PDEBENCH بمجموعة واسعة من PDEs من المعايير الحالية وتتضمن مشاكل واقعية وصعبة (سواء إلى الأمام أو العكسية) ، ومجموعات بيانات أكبر للاستخدام تشتمل على شروط أولية وحدودية مختلفة ، ومعلمات PDE. علاوة على ذلك ، تم إنشاء PDEBENCH لجعل رمز المصدر قابلاً للتمديد وندعو المشاركة النشطة من مجتمع SCIML لتحسين المعيار وتوسيع نطاقه.
تم إنشاؤه وصيانته بواسطة makoto takamoto <[email protected], [email protected]>
، تيموثي براديتيا <[email protected]>
، raphael leiterz ، dan mackinlay ، francesco alesiani.
كما نقدم مجموعات البيانات ونماذج التعلم الآلي المسبق.
مجموعات بيانات PDEBENCH: https://darus.uni-stuttgart.de/dataset.xhtml؟persistentid=doi:10.18419/Darus-2986
نماذج pdebench مسبقًا: https://darus.uni-stuttgart.de/dataset.xhtml؟persistentid=doi:10.18419/darus-2987
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 راجع العوامل السابقة/#Linux - CUDA 11.7.
بالنسبة إلى Jax ، التي تبعد حوالي 6 أضعاف المحاكاة من Pytorch في اختباراتنا ، انظر Jax#pip-inst stallation-gpu-cuda-bist-bip-pip
إذا كنت ترغب في ذلك ، يمكنك أيضًا تثبيت التبعيات باستخدام Anaconda ، فنحن نقترح استخدام Mambafaforge كتوزيع. وإلا فقد تضطر إلى تمكين قناة كوندا فورج للأوامر التالية.
بدءا من بيئة جديدة:
conda create -n myenv python=3.9
conda activate myenv
تثبيت التبعيات للتدريب على النماذج:
conda install deepxde hydra-core h5py -c conda-forge
وفقًا لتوافر الأجهزة الخاص بك ، إما تثبيت Pytorch مع دعم 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
تبعيات اختيارية لتوليد البيانات:
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
لإنشاء بيانات المياه الضحلة ثنائية الأبعاد.gen_ns_incomp.py
لإنشاء بيانات Navier-Stokes غير قابلة للضغط 2D.plot.py
لرسم البيانات التي تم إنشاؤها.uploader.py
لتحميل البيانات التي تم إنشاؤها إلى مستودع البيانات..env
هي بيانات البيئة لتخزين url url ورمز API لتحميل البيانات التي تم إنشاؤها. لاحظ أن اسم الملف يجب أن يكون .env
(أي إزالة example
من اسم الملف)configs
على ملفات YAML التي تخزن التكوين للمحاكاة. إن الحجج الخاصة بالمحاكاة هي تفسير خاص بالمشكلة ويمكن العثور على تفسير مفصل في نصوص المحاكاة.src
على البرامج النصية للمحاكاة لمشاكل مختلفة: sim_diff_react-py
لعلاج الانتشار ثنائي الأبعاد ، sim_diff_sorp.py
لامتصاص 1D ، و swe
لمعادلة المياه الضحلة.واردة رموز توليد البيانات في data_gen_nle:
utils.py
util ملف لتوليد البيانات ، وخاصة شروط الحدود والشروط الأولية.
دليل AdvectionEq
مع رموز المصدر لإنشاء عينات تدريب معادلة 1D
دليل BurgersEq
مع رموز المصدر لإنشاء عينات تدريب معادلة 1D Burgers
دليل 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
الذي يفترض أن يتم تنفيذه في كل دليل.
يتم توفير أمثلة لتوليد PDEs الأخرى في run_trainset.sh
في كل دلائل PDE. يتم تخزين ملفات التكوين لـ Hydra في دليل config
في دليل كل PDE.
1D Advection/Burgers/Reaction-Diffusion/2d Darcyflow/Compressible Navier-Stokes معادلات حفظ البيانات كصفيف numpy. لذلك ، لقراءة هذه البيانات عبر dataloaders لدينا ، يجب تنفيذ/دمج البيانات. يمكن القيام بذلك باستخدام data_gen_NLE/Data_Merge.py
الذي يقع ملف التكوين على: data_gen/data_gen_NLE/config/config.yaml
. بعد تعيين المعلمات بشكل صحيح في ملف التكوين (النوع: اسم PDES ، DIM: عدد الأبعاد المكانية ، BD: حالة الحدود) ، يمكن الحصول على ملف HDF5 المقابل على النحو التالي:
python3 Data_Merge.py
يمكنك تعيين القيم الافتراضية لمواقع البيانات لهذا المشروع عن طريق وضع vars التكوين مثل هذا في ملف .env
:
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
هو البرنامج النصي لتحويل ملف المخلل المحفوظ من البرنامج النصي لحساب المقاييس إلى تنسيق DataFrame Pandas وحفظه كملف CSV. بالإضافة إلى ذلك ، يرسم أيضًا مخطط شريط لمقارنة النتائج بين النماذج المختلفة.analyse_result_inverse.py
هو البرنامج النصي لتحويل ملف المخلل المحفوظ من البرنامج النصي لحساب المقاييس إلى تنسيق Pandas DataFrame وحفظه كملف CSV. يستخدم هذا البرنامج النصي للمشاكل العكسية. بالإضافة إلى ذلك ، يرسم أيضًا مخطط شريط لمقارنة النتائج بين النماذج المختلفة.fno
على البرامج النصية لتنفيذ FNO. يتم تكييفها جزئيًا من مستودع FNO.unet
على البرامج النصية لتنفيذ U-NET. يتم تكييفها جزئيًا من مستودع U-NET.pinn
على البرامج النصية لتنفيذ Pinn. هذه تستخدم مكتبة Deepxde.inverse
على نموذج للنموذج العكسي على أساس التدرج.config
على ملفات YAML لإدخال تدريب النموذج. يتم توفير القوالب الافتراضية للمعادلات المختلفة في دليل args. يحتاج المستخدم فقط إلى نسخها ولصقها إلى الكلمة الرئيسية Args في ملف config.yaml.يمكن العثور على مثال لتشغيل تدريب النموذج الأمامي في Run_Forward_1d.sh ، ويمكن العثور على مثال لتشغيل التدريب العكسي في Run_inverse.sh.
نحن نقدم مجموعات البيانات القياسية التي استخدمناها في الورقة من خلال مستودع بيانات Darus الخاص بنا. يمكن العثور على تكوين توليد البيانات في الورقة. بالإضافة إلى ذلك ، تتوفر النماذج المسبقة أيضًا لتنزيلها من مستودع Darus PretRained PretRained Models. لاستخدام النماذج المسبقة ، يمكن للمستخدمين تحديد الوسيطة 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},
}
معهد ماساتشوستس للتكنولوجيا مرخصة ، باستثناء ما هو مذكور خلاف ذلك. انظر ملف LICENSE.txt
.