Nilang.jl – A Reversible Julia DSL
11–20 of 31 posts
Re: Nilang.jl – A Reversible Julia DSL
#12It would be good to see a ResNet training benchmark comparison with PyTorch as an example if this is really true.
Re: Nilang.jl – A Reversible Julia DSL
#13Incredible. Given a (one-to-one) Julia function `f`, this package generates `~f`, the inverse of f. Clever use of automatic differentiation. Paper: https://arxiv.org/abs/2003.04617
Forgive my ignorance, but what applications would this be used in where just maintaining copies of the initial parameters to f() wouldn’t work?
I think in the future we will see a trend of expressing most of DL model as reversible computation, with minimal irreversible module in the end and in the beginning.
Re: Nilang.jl – A Reversible Julia DSL
#14Incredible. Given a (one-to-one) Julia function `f`, this package generates `~f`, the inverse of f. Clever use of automatic differentiation. Paper: https://arxiv.org/abs/2003.04617
Is this in essence the same as the relation between a differential equation and it’s adjoint equation, and how one could use the asking method to perform back propagation? (Eg: ref. Neural ODEs)
Re: Nilang.jl – A Reversible Julia DSL
#15How does this compare to zygote ?
Zygote calculates derivatives using source-to-source automatic differentiation.
This calculates function inverses (so to stretch the analogy a bit, it's kinda like "source-to-source automatic inversion")
Re: Nilang.jl – A Reversible Julia DSL
#16Wait a second, does it yield an exact inverse or a numerical approximation?
Re: Nilang.jl – A Reversible Julia DSL
#17How does this compare to zygote ?
Various benchmarks (including those in the paper) show NiLang is much better than Zygote to differentiate scalar functions. And Zygote is much faster than TF and PyTorch.
2. Tensor level
Zygote, TF and PyTorch are much better than NiLang, because NiLang's matrix multiplication is not fully optimized, it is much slower than BLAS. (One can wrap BLAS into NiLang, but that does not measure NiLang's programming language level AD performance anymore)
Re: Nilang.jl – A Reversible Julia DSL
#18Incredible. Given a (one-to-one) Julia function `f`, this package generates `~f`, the inverse of f. Clever use of automatic differentiation. Paper: https://arxiv.org/abs/2003.04617
Re: Nilang.jl – A Reversible Julia DSL
#19Earlier quoted context omitted.
Forgive my ignorance, but what applications would this be used in where just maintaining copies of the initial parameters to f() wouldn’t work?
I think the space requirements are different. Even if you only care about previous applications of f. Keeping snapshots of every input isn't always feasible.