It has been recently demonstrated that dynamical system models can be discovered through scientific machine learning techniques. In this data-driven process, measurements of the system are made. From this data, an optimization problem can be solved to isolate the most likely physical model (differential equations) that would deliver these physical measurements. This process is computationally challenging, both in the generation of data (which, in our case, comes from an expensive, high-fidelity numerical solver) and in solving this optimization problem. This project aims to accelerate both steps by using Julia, a high-performance language that maintains many benefits of a high-level interpreted language like Matlab or Python. In this project, the student will port existing Python code into Julia and provide time-to-solution performance statistics comparing the two. The student will also use Julia's library DiffEqFlux.jl for learning neural differential equations and Hamiltonian neural networks. The DiffEqFlux.jl library runs on both GPUs and CPUs, and the student will explore speedups that are achievable on NVIDIA's V100 and A100 GPUs.
Project Information Subsection
{Empty}
{Empty}
{Empty}
{Empty}
{Empty}
{Empty}
{Empty}
{Empty}
NE-MGHPCC
12/01/2021
No
Already behind3Start date is flexible
{Empty}
{Empty}
{Empty}
{Empty}
{Empty}
Milestone Title: Port to Julia Milestone Description: Solve ODEs in Julia and compare time-to-solution to python Completion Date Goal: 2022-01-14
Milestone Title: Neural ODES I Milestone Description: Setup neural ODE problem with the DiffEqFlux.jl library, try simple learning problem for a single trajectory Completion Date Goal: 2022-02-14
Milestone Title: Neural ODES II Milestone Description: Setup neural ODE problem with the DiffEqFlux.jl library, try learning problem for a multiple trajectories Completion Date Goal: 2022-03-14
Milestone Title: GPUs Milestone Description: Solve optimization problem on a CPU, NVIDIA V100 GPU, and NVIDIA A100 GPU. Comparison of performance Completion Date Goal: 2022-03-31
{Empty}
{Empty}
{Empty}
The student will learn how to program in the high-performance computing language Julia, using scientific machine learning libraries, and accelerating machine learning with single and multiple GPUs.
{Empty}
{Empty}
The student will need access to one and multiple GPUs. At UMassD we have a shared GPU resource they can use. However, for exploring multiple GPUs we might need to consider resources through cyberteams.