GithubHelp home page GithubHelp logo

23nmi_peds_git's Introduction

PEDS

DOI

PEDS is a Julia package containing methodologies for Scientific Machine Learning surrogate models called Physics-Enhanced Deep Surrogates (PEDS) that is capable of saving at least two orders of magnitude in data needed to achieve a sufficient accuracy for design.

Overview

PEDS showcases examples of surrogates for the reaction-diffusion equations, the diffusion equation and Maxwell's equations. For clarity and simplicity, three notebooks illustrate the five surrogates from the manuscript, that can run on a laptop. However, the result from the manuscript were obtained by training on a High-Performance Computing (HPC) cluster with 320 CPUs, using the same code. The package can be run on all major platforms (e.g. BSD, GNU/Linux, OS X, Windows). Example scripts to run the code on HPC are given in the notebook.

Content

The folder data/ contains datasets to reproduce the findings for the five surrogate models with about 1000 data points (with 10000 data points to generate training, validation, and test sets). The name convention is X_#MODELNAME#_small.csv and y_#MODELNAME#_small.csv.

Traditional to Julia packages, the source code for PEDS is in a folder called src/, the most important julia file is PEDS.jl which calls all the other files.

There are three illustrative notebooks in demos/ folder:

  1. Example_reaction-diffusion_16.ipynb contains the code for the surrogate of the reaction-diffusion equation with 16 pores. The same code can be use for a diffusion equation with 16 pores by replacing the training dataset, because they use the same approximate solver.
  2. Example_diffusion_25.ipynb contains the code for the surrogate of the diffusion equation with 25 pores. The same code can be use for a reaction-diffusion equation with 25 pores by replacing the training dataset, because they use the same approximate solver.
  3. Example_Maxwell.ipynb contains the code to train and evaluate the surrogate model for Maxwell's equation.

For all the notebook, the code from the notebook can be copied into a julia train_PEDS.jl and run on a HPC cluster using the command

mpiexec -n 320 julia train_PEDS.jl

System Requirements

Hardware requirements

PEDS package can train and run on a standard computer with enough RAM to support the in-memory operations. However, for approximate solvers that are more time-intensive, the present code would take advantage of parallelization on multiple CPUs with High Performance Computing.

Software requirements

OS Requirements

This package is supported for macOS and Linux. The package has been tested on the following systems:

  • macOS: Mojave (10.14.1)
  • Linux: Ubuntu 16.04

Julia Dependencies

PEDS mainly depends on the Julia language (version 1.6 or later).

The packages, that were used to run the code, and their commit hashes are:

[deps]
BSON = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0"
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2"
ChangePrecision = "3cb15238-376d-56a3-8042-d33272777c9a"
DelimitedFiles = "8bb1440f-4735-579b-a4ab-409b98df4dab"
Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c"
IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195"
NNlib = "872c559c-99b0-510c-b3b7-b6c96a88d5cd"
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f"

Installation Guide:

Install from Github

git clone [email protected]:rpestour/PEDS.git
cd PEDS

Setting up the development environment:

  • Install Julia language from julialang.org. The installation may take a few minutes. Then install the dependencies using ] add #PACKAGENAME#

  • To run demo notebooks:

    • cd demos
    • jupyter notebook --ip 0.0.0.0 --no-browser --allow-root
    • Then copy the url it generates, it looks something like this: http://(0de284ecf0cd or 127.0.0.1):8888/?token=e5a2541812d85e20026b1d04983dc8380055f2d16c28a6ad
    • Edit this: (0de284ecf0cd or 127.0.0.1) to: 127.0.0.1, in the above link and open it in your browser
    • Then open Example_diffusion_25.ipynb, Example_Maxwell.ipynb, or Example_reaction-diffusion_16.ipynb

Instruction for use

By design of PEDS, the model depends on the engineering problem because the relevant approximate solver layer needs to be encoded in the deep surrogate. So the present code would not work with other data in a straighforward way.

License

MIT License

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.