Mini-Course on: Physics Informed Machine Learning with Pytorch and Julia

Physics Informed Machine Learning with Pytorch and Julia

Abstract: In this workshop series, we would like to introduce the participants to two powerful tools for physics-informed machine learning, the Pytorch package and the Julia programming language. We will give an overview of the operating principles of both tools, including their core features and relative strengths, by examining concrete Physics-Informed Machine Learning applications. The workshop will be given using multi-modal presentation via lecture slides, example Jupyter notebooks, and code walkthroughs.

Instructors: Arvind Mohan and Nicholas Lubbers, Computational, Computer, and Statistical Division, Los Alamos National Laboratory

Location: In person as indicated in the Schedule below, and on zoom at https://arizona.zoom.us/s/83738249833  passcode: applied

Schedule:   Link to documents

Day 1
April 22, 2024
Time: 4:00pm
Location: ENR2 Room S395

The killer feature: Automatic Differentiation

Recording Day 1

Day 2
April 23, 2024
Time: 4:00pm
Location: Math Bldg Room 402
Automatic Differentiation in Julia

Recording Day 2

Day 3
April 24, 2024
Time: 4:00pm
Location: ENR2 Room S395
Physical Symmetries and Atomistic Machine Learning

Recording Day 3

Day 4
April 25, 2024
Time: 4:00pm
Location: Math Bldg Room 402
PDE learning and Scientific  with Julia

Recording Day 4

Day 5
April 26, 2024
Time: 4:00pm
Location: ENR2 Room S395

Review and Best Practices 

Recording Day 5

Syllabus:   Link to documents

Day 1: The killer feature: Automatic Differentiation

           0 - Theory of automatic differentiation 

           1 - Example Notebooks: Introduction to Pytorch

           2 - Example Notebooks:  Tape-based Automatic Differentiation

Day 2: Automatic Differentiation in Julia

            1 - The many algorithmic approaches to AD

            2 - Example Notebooks: The Automatic Differentiation Ecosystem in Julia

Day 3: Physical Symmetries and Atomistic Machine Learning

            0 - Symmetry, Invariance, and Equivariance with Graph Neural Networks

            1 - Example Notebooks: Learning Potential Energy Surfaces 

            2 - Code walkthrough: Writing custom GPU kernels with Numba

            3 - Code walkthrough: Cross-language integration: Pytorch to C++ and Julia

Day 4: PDE learning and Scientific  with Julia 

           1 - Scientific Computing Integration with AD in Julia and Custom Adjoints

            2 - Example Notebooks: GPU Computing in Julia

            3 - Example Notebooks: Neural PDE Learning in Julia

            4 - Example Notebooks: Data Processing and Cross language Integration

Day 5: Review and Best Practices 

             1 - Best Practices and Gotchas: Julia 

             2 - Best Practices and Gotchas: Pytorch      

             3 (or 2?) - Pytorch or Julia? Help me choose!