Git Product home page Git Product logo

Comments (1)

ChrisRackauckas avatar ChrisRackauckas commented on August 23, 2024 4

The problem is that the most efficient way to do this is to use forward-mode inside of the loss function and then reverse over that. Using ForwardDiff in here kind of works, but it requires a few workaround and hard to generalize. But Zygote got a forward mode: FluxML/Zygote.jl#503 . It needs a few more things to be fully compatible with standard NNs people want to use for physics-informed neural networks though: FluxML/Zygote.jl#654 . But we are well aware of this, and @Keno has been working on a major improvement to the AD system which make this a lot better, and @DhairyaLGandhi is aware of this use case.

That said, the reason why it's not a huge issue is that the computational complexity of numerical and forward mode is the same, with forward mode just decreasing the number of primal calculations and allowing a bit more SIMD/CSE in some cases. You never see forward mode more than 4x better than the fastest numerical differentiation schemes, usually more around 2x. What's essential for performance is the reverse mode of the loss function, which is already there, since that has a massive complexity change. This is why I haven't made a big push to get "something for now and better for later", and instead am just waiting for the big nested AD changes coming later this year since the actual difference to a user will be rather slim (much slimmer than you might suspect), so it's not worth making a fuss about until special compiler tools allow for faster high order derivatives (which something like PyTorch doesn't do, so that would be something to write home about).

Pinging @KirillZubov since I know he was curious about this detail as well.

But indeed, this is an issue so thanks for opening it so we can formally track it. We'll start updating the public on this more often since there's a lot going on here.

from neuralpde.jl.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.