A Differentiable Programming System to Bridge Machine Learning and Scientific Computing

07/17/2019
by   Mike Innes, et al.
0

Scientific computing is increasingly incorporating the advancements in machine learning and the ability to work with large amounts of data. At the same time, machine learning models are becoming increasingly sophisticated and exhibit many features often seen in scientific computing, stressing the capabilities of machine learning frameworks. Just as the disciplines of scientific computing and machine learning have shared common underlying infrastructure in the form of numerical linear algebra, we now have the opportunity to further share new computational infrastructure, and thus ideas, in the form of Differentiable Programming. We describe Zygote, a Differentiable Programming system that is able to take gradients of general program structures. We implement this system in the Julia programming language. Our system supports almost all language constructs (control flow, recursion, mutation, etc.) and compiles high-performance code without requiring any user intervention or refactoring to stage computations. This enables an expressive programming model for deep learning, but more importantly, it enables us to incorporate a large ecosystem of libraries in our models in a straightforward way. We discuss our approach to automatic differentiation, including its support for advanced techniques such as mixed-mode, complex and checkpointed differentiation, and present several examples of differentiating programs.

READ FULL TEXT
research
07/17/2019

Zygote: A Differentiable Programming System to Bridge Machine Learning and Scientific Computing

Scientific computing is increasingly incorporating the advancements in m...
research
11/11/2019

A Simple Differentiable Programming Language

Automatic differentiation plays a prominent role in scientific computing...
research
11/01/2018

Fashionable Modelling with Flux

Machine learning as a discipline has seen an incredible surge of interes...
research
12/20/2021

NetKet 3: Machine Learning Toolbox for Many-Body Quantum Systems

We introduce version 3 of NetKet, the machine learning toolbox for many-...
research
10/22/2021

DQC: a Python program package for Differentiable Quantum Chemistry

Automatic differentiation represents a paradigm shift in scientific prog...
research
11/10/2021

Gradients are Not All You Need

Differentiable programming techniques are widely used in the community a...
research
06/22/2021

Graph coarsening: From scientific computing to machine learning

The general method of graph coarsening or graph reduction has been a rem...

Please sign up or login with your details

Forgot password? Click here to reset