How is this different from JAX?
A Differentiable Programming System to Bridge ML and Scientific Computing
51–60 of 75 posts
Re: A Differentiable Programming System to Bridge ML and Scientific Computing
#52Does this support user defined data structures? This is a thing holding me back in Stan and other frameworks with AD (they only want scalars or arrays)
https://github.com/FluxML/Zygote.jl
"Without compromising on performance, Zygote supports the full flexibility and dynamism of the Julia language, including control flow, recursion, closures, structs, dictionaries, and more."
Re: A Differentiable Programming System to Bridge ML and Scientific Computing
#53Cool and amazing. This thing should be used to enrich base Julia, not simply be an extension.
Julia is designed in such a way that third party 'extensions' (packages) are first class citizens. Very little actually needs to be in Base or the standard library. When one types `using Zygote` you're not using a programming language with a siloed AD exension. You've radically extenended julia into a differentiable programming language. The beauty of Zygote.jl being a package is that we don't force one AD approach o…
Re: A Differentiable Programming System to Bridge ML and Scientific Computing
#54This is huge and I have high hopes for zygote,jl. Observation/request: For higher-order derivatives (Hessian, Laplacian, etc), AD libraries typically provide API shortcuts. I have found it difficult to control or predict the memory footprint and the time complexity of these API shortcuts. Laplacian is case in point: it is sometimes computed by first computing the Hessian by forward-over-reverse and then taking the tr…
Unfortunately, this isn't super easy since the time complexity heavily depends on what optimizations the compiler will apply and how the higher order AD is exactly implemented (there's many ways to do so that all give you the same answer and you probably want the system to pick the best for you). What we could do fairly easily however is to have a compiler introspection tool that runs through the computation, but doe…
Anyway, great work and I look forward to what happens next!
Re: A Differentiable Programming System to Bridge ML and Scientific Computing
#55Does this support user defined data structures? This is a thing holding me back in Stan and other frameworks with AD (they only want scalars or arrays)
This is why julia is so powerful for so many different use-cases, when I make my own special custom array, number, string or whatever type, it's a first class citizen and with enough optimization will be just as fast, extensible and generic as whatever was provided by base.
Re: A Differentiable Programming System to Bridge ML and Scientific Computing
#56Earlier quoted context omitted.
Would also be curious to understand how this compares. They seem to account for recursion and if-branches as well.
They're not really all that close. For instance that Autograd library requires that you use its own version of numpy instead of the regular version because it can't differentiate C. Because most non-trivial python code is actually written in C, there's almost no performant programs you can just differentiate out of the box unless autograd itself has a fork of that package. My understanding is that the python Autograd…
Re: A Differentiable Programming System to Bridge ML and Scientific Computing
#57Earlier quoted context omitted.
Would also be curious to understand how this compares. They seem to account for recursion and if-branches as well.
They're not really all that close. For instance that Autograd library requires that you use its own version of numpy instead of the regular version because it can't differentiate C. Because most non-trivial python code is actually written in C, there's almost no performant programs you can just differentiate out of the box unless autograd itself has a fork of that package. My understanding is that the python Autograd…
Re: A Differentiable Programming System to Bridge ML and Scientific Computing
#58Does this support user defined data structures? This is a thing holding me back in Stan and other frameworks with AD (they only want scalars or arrays)
Yes https://github.com/FluxML/Zygote.jl "Without compromising on performance, Zygote supports the full flexibility and dynamism of the Julia language, including control flow, recursion, closures, structs, dictionaries, and more."
Re: A Differentiable Programming System to Bridge ML and Scientific Computing
#59Earlier quoted context omitted.
Keno: first of all, let me give a big public thank you to you and your colleagues. (For those here who don't know, Keno is listed as one of the authors of the paper, and works closely with Mike Innes, lead author and also lead developer of Zygote. Mike is also an active member of HN.) Second, let me bring up what I think is a significant issue. My perception is that most deep learning researchers and practitioners --…
Zygote is an orthogonal piece of technology on this front and relies on a good optimizing compiler behind it to target actual hardware. Its focus is primarily on expressability. We've been talking about automatic kernel generation for a while (and when I saw kernel generation what I mean is basically search for access patterns), but note that it's not quite as bad a problem in julia, because you can use higher order…
Re: A Differentiable Programming System to Bridge ML and Scientific Computing
#60Me reading the paper: “oh”