Jan Hueckelheim


Sessions

02-23
16:30
30min
Autodiff semantics and the level of abstraction
Jan Hueckelheim

Autodiff may in some cases compute unexpected results that could be interpreted as incorrect derivatives. These pitfalls occur systematically across multiple tools and approaches, making automated detection difficult.
We show that these problems are caused if autodiff is applied after approximating a function in a way that changes its derivatives, often while lowering the program to a different level of abstraction. We illustrate this problem with known examples such as discretizations, polynomial approximations, and lookup tables. We also discuss the challenge that Enzyme faces unlike most other autodiff tools, because it differentiates code at a different level of abstraction than what programmers write.

Technical Talk
ECNT 312
02-22
15:15
15min
Numba-Enzyme: A Differentiable JIT-ed Python
Ludger Paehler, Jan Hueckelheim, Nikolaus A. Adams, Lukas Heinrich

In this short technical talk we will present a first prototype, as well as a forward-looking roadmap for Numba-Enzyme, a gradient-providing Just-in-time (JIT) compiler for Python relying on Numba to JIT Python, and Enzyme to provide the gradients for respective kernels. Including recent advances in Enzyme for forward-mode, we will prevent the JIT-pipeline for forward-mode differentiation, and reverse-mode differentiation as well as presenting first performance comparisons to C++ differentiated code with Enzyme, as well as gradient computation in JAX. We will conclude by providing an outlook on future extensions to expose Enzyme's vectorization, as well as kernel composability between Numba-Enzyme, and JAX to enable users to leverage the strengths of both ecosystems.

Technical Talk
ECNT 312