Paulo is an Electronics and Computer Engineer with a passion for coding and for music which always sparked an interest in DSP and Machine Learning. Having worked with Elixir for nearly 5 years now, being able to contribute to the Machine Learning and Numerical Calculus front of Elixir and the BEAM is a dream come true.
Elixir’s Nx library implements its features through a configurable backend structure, in which inputs are dispatched to their respective implementations at runtime.
In this talk, we’re going to review Nx’s Backends and how they play with performance and automatic differentiation.
For this, we’re going to study how Nx compiles and executes a given code sample and how using defn, Nx’s numerical function definitions, can enable Axon (a deep learning library) to work.
The main objective of this talk is to shed some light in one of the more technical and internal aspects of Elixir’s Nx. There are some articles here and there talking about this, but as part of the Nx team I hope to provide some more information about how the library works. This would also be one of the first talks on the subject.
Although the talk is mainly about an Elixir library, I think all BEAM users which have an interest in machine learning would be interested in it, especially since it’s a direct product of the EEF Machine Learning Working Group. It can also be interesting for people which come from an ML background but don’t know much about the BEAM.