Skip to content

Commit f250ec7

Browse files
authored
Merge pull request #171 from pnnl/develop
Develop merge into master for v1.5.1
2 parents f7408a0 + 4f8bece commit f250ec7

35 files changed

+12036
-1967
lines changed

README.md

Lines changed: 40 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<img src="figs/Neuromancer.png" width="250">
44
</p>
55

6-
# NeuroMANCER v1.5.0
6+
# NeuroMANCER v1.5.1
77

88
**Neural Modules with Adaptive Nonlinear Constraints and Efficient Regularizations (NeuroMANCER)**
99
is an open-source differentiable programming (DP) library for solving parametric constrained optimization problems,
@@ -17,20 +17,37 @@ differentiable models and algorithms embedded with prior knowledge and physics.
1717
![PyPI - Version](https://img.shields.io/pypi/v/neuromancer)
1818

1919

20-
### New in v1.5.0
20+
### New in v1.5.1
21+
#### Lightning Enhancements
2122
![Lightning](https://img.shields.io/badge/-Lightning-792ee5?logo=pytorchlightning&logoColor=white)
22-
Now supports integration with PyTorch Lightning (https://lightning.ai/docs/pytorch/stable/), bringing:
23-
* User workflow simplifications: zero boilerplate code and increased modularity
24-
* Ability for user to define custom training logic easily
25-
* Easy support for distributed GPU training
26-
* Weights and Biases hyperparameter tuning
23+
Further integration enhancements with PyTorch Lightning (https://lightning.ai/docs/pytorch/stable/). We now support all Lightning hooks, which are modular logic blocks that make defining custom training/validation/etc logic very easy and user-friendly.
2724

28-
Please refer to the Lightning folder and its [README](examples/lightning_integration_examples/README.md).
25+
We have also released a *Lightning Studio* course on **Differentiable Predictive Control**: <a target="_blank" href="https://lightning.ai/rahulbirmiwal/studios/differential-predictive-control-with-neuromancer">
26+
<img src="https://pl-bolts-doc-images.s3.us-east-2.amazonaws.com/app-2/studio-badge.svg" alt="Open In Studio" style="width:100px; height:auto;"/>
27+
</a>!
28+
29+
Lightning Studios are powerful, AI development platforms. They essentially act as extremely user-friendly virtual machines, but accessible through your browser! Please see https://lightning.ai/studios for more information.
30+
31+
32+
#### TorchSDE Integration
33+
* We have begun integration with the TorchSDE library (https://github.com/google-research/torchsde/tree/master) TorchSDE provides stochastic differential equation solvers with GPU spport and efficient backpropagation.
34+
* Neuromancer already has robust and extensive library for Neural ODEs and ODE solvers. We extend that functionality to the stochastic case by incorporating TorchSDE solvers. To motivate and teach the user how one progresses from neural ODEs to "neural SDEs" we have written a lengthy notebook -- [sde_walkthrough.ipynb](examples/SDEs/sde_walkthrough.ipynb)
35+
36+
#### Stacked Physics-Informed Neural Networks
37+
* Neuromancer now supports Stacked Physics-Informed Neural Networks. This architecture, based on the work of [Howard et al. (2023)](https://arxiv.org/abs/2311.06483), consists of stacking multifidelity networks via composition, allowing a progressive improvement of learned solutions. This formulation is especially useful for highly oscillatory problems. We illustrate an example of its usage with the solution of a damped harmonic oscillator using PINN: [Part_5_Pendulum_Stacked.ipynb](examples/PDEs/Part_5_Pendulum_Stacked.ipynb)
38+
39+
#### SINDy
40+
41+
* Sparse Identification of Nonlinear Dynamics (SINDy) is a powerful method which uses sparse regression to identify a small number of active terms in dynamic systems, allowing for interpretable and efficient modeling of complex, nonlinear dynamics. We now enable users to leverage this technique for sparse physics-informed system identification. Checkout the notebook here [Part_9_SINDy.ipynb](examples/ODEs/Part_9_SINDy.ipynb)
2942

3043
**New Colab Examples:**
31-
> [Various domain examples, such as system identification of building thermal dynamics, in NeuroMANCER](#domain-examples)
44+
> [Custom Training Via Lightning Hooks ](#lightning-integration-examples)
3245
33-
> [PyTorch lightning integration Examples ](#lightning-integration-examples)
46+
> [Latent Stochastic Differential Equations ](#stochastic-differential-equation-examples)
47+
48+
> [Stacked Physics-Informed Neural Networks ](examples/PDEs/Part_5_Pendulum_Stacked.ipynb)
49+
50+
> [Part 9: Sparse Identification of Nonlinear Dynamics (SINDy) ](#ordinary-differential-equation-examples)
3451
3552

3653
## Features and Examples
@@ -96,11 +113,17 @@ Part 5: Using Cvxpylayers for differentiable projection onto the polytopic feasi
96113
+ <a target="_blank" href="https://colab.research.google.com/github/pnnl/neuromancer/blob/master/examples/ODEs/Part_8_nonauto_DeepKoopman.ipynb">
97114
<img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a> Part 8: control-oriented Deep Koopman operator
98115

116+
+ <a target="_blank" href="https://colab.research.google.com/github/pnnl/neuromancer/blob/master/examples/ODEs/Part_9_SINDy.ipynb">
117+
<img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a> Part 9: Sparse Identification of Nonlinear Dynamics (SINDy)
118+
99119

100-
### Physics-Informed Neural Networks (PINNs) for Partial Differential Equations (PDEs)
120+
### Physics-Informed Neural Networks (PINNs) for Partial Differential Equations (PDEs) and Ordinary Differential Equations (ODEs)
101121
+ <a target="_blank" href="https://colab.research.google.com/github/pnnl/neuromancer/blob/master/examples/PDEs/Part_1_PINN_DiffusionEquation.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a> Part 1: Diffusion Equation
102122
+ <a target="_blank" href="https://colab.research.google.com/github/pnnl/neuromancer/blob/master/examples/PDEs/Part_2_PINN_BurgersEquation.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a> Part 2: Burgers' Equation
103123
+ <a target="_blank" href="https://colab.research.google.com/github/pnnl/neuromancer/blob/master/examples/PDEs/Part_3_PINN_BurgersEquation_inverse.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a> Part 3: Burgers' Equation w/ Parameter Estimation (Inverse Problem)
124+
+ <a target="_blank" href="https://colab.research.google.com/github/pnnl/neuromancer/blob/master/examples/PDEs/Part_4_PINN_LaplaceEquationSteadyState.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a> Part 4: Laplace's Equation (steady-state)
125+
+ <a target="_blank" href="https://colab.research.google.com/github/pnnl/neuromancer/blob/master/examples/PDEs/Part_5_Pendulum_Stacked.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a> Part 5: Damped Pendulum (stacked PINN)
126+
+ <a target="_blank" href="https://colab.research.google.com/github/pnnl/neuromancer/blob/master/examples/PDEs/Part_6_PINN_NavierStokesCavitySteady_KAN.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a> Part 6: Navier-Stokes equation (lid-driven cavity flow, steady-state, KAN)
104127

105128
### Control
106129

@@ -153,6 +176,12 @@ Part 5: Using Cvxpylayers for differentiable projection onto the polytopic feasi
153176
+ <a target="_blank" href="https://colab.research.google.com/github/pnnl/neuromancer/blob/master/examples/lightning_integration_examples/other_examples/lightning_custom_training_example.ipynb">
154177
<img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a> Part 4: Defining Custom Training Logic via Lightning Modularized Code.
155178

179+
180+
### Stochastic Differential Equation Examples
181+
+ <a target="_blank" href="https://colab.research.google.com/github/pnnl/neuromancer/blob/master/examples/SDEs/sde_walkthrough.ipynb">
182+
<img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a> LatentSDEs: "System Identification" of Stochastic Processes using Neuromancer x TorchSDE
183+
184+
156185
## Documentation
157186
The documentation for the library can be found [online](https://pnnl.github.io/neuromancer/).
158187
There is also an [introduction video](https://www.youtube.com/watch?v=YkFKz-DgC98) covering

RELEASE_NOTES.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11

22
## Release notes
33

4+
### Version 1.5.1 Release Notes
5+
+ Enhancement: Now supports integration of all Lightning hooks into the Neuromancer Lightning trainer. Please refer to Lightning examples README for more information
6+
+ Deprecated WandB hyperparameter tuning via `LitTrainer` for now
7+
+ New feature: TorchSDE integration with Neuromancer core library, namely `torchsde.sdeint()`. Motivating example for system ID on stochastic process found in examples/sdes/sde_walkthrough.ipynb
8+
+ New feature: Stacked physics-informed neural networks
9+
+ New feature: SINDy -- sparse system identification of nonlinear dynamical systems
10+
411
### Version 1.5.0 Release Notes
512
+ New Feature: PyTorch Lightning Integration with NeuroMANCER core library. All these features are opt-in.
613
+ Code simplifications: zero boilerplate code, increased modularity

examples/ODEs/Part_1_NODE_lightning.ipynb

Lines changed: 0 additions & 980 deletions
This file was deleted.

examples/ODEs/Part_9_SINDy.ipynb

Lines changed: 1521 additions & 0 deletions
Large diffs are not rendered by default.

examples/ODEs/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ showcasing system identification capabilities for ordinary differential equation
2727
+ <a target="_blank" href="https://colab.research.google.com/github/pnnl/neuromancer/blob/master/examples/ODEs/Part_8_nonauto_DeepKoopman.ipynb">
2828
<img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a> Part 8: control-oriented Deep Koopman operator
2929

30+
+ <a target="_blank" href="https://colab.research.google.com/github/pnnl/neuromancer/blob/master/examples/ODEs/Part_9_SINDy.ipynb">
31+
<img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a> Part 9: Sparse Identification of Nonlinear Dynamics (SINDy)
32+
3033

3134
## System Identification
3235

examples/ODEs/figs/sindy.jpeg

158 KB
Loading

0 commit comments

Comments
 (0)