Comments (2)
Thanks for the summary. I will respond to each point below.
- Regarding
ADTypes.jl
,AbstractDifferentiation.jl
predates that package. But we can of course support their AD types with an extension if needed or vice versa. - The
@primitive
macro is a feature but it is not essential to use. You can use method implementation to define the behaviour for a new AD backend. - The fallback is no longer based on Jacobian.
- Regarding the use of closures, their use may be reduced and improved in AD.jl. But we need specific examples where closures gave a sub-optimal performance or type stability issues. Also for most backends now, we encourage using the native implementation of each AD package for any exported AD.jl function. This means that closure fallbacks are only useful when the backend package doesn't provide an implementation for such a function. In this case, we can strive to improve the closure implementation. Specific issues and PRs are welcome.
- Regarding being first order only, this is a strict limitation of DI.jl.
- Regarding, having one vector in and one out, there is no reason why we need to support multiple inputs and multiple outputs in AD.jl if the backend package doesn't. We can start with a single input and single output version. In fact, the ForwardDiff extension assumes a single input and single output. Same response for the types.
- Regarding caching and mutating functions, I am open to proposals. Perhaps the implementation in DI.jl can be used to design a caching and mutating API for AD.jl.
- Regarding Enzyme support, if DI.jl can support Enzyme then I am open to contributing the features needed for that support back to AD.jl
from abstractdifferentiation.jl.
I just updated the comparison to include the new features we added these past few weeks (mutating functions, second order, testing and benchmarking utilities)
from abstractdifferentiation.jl.
Related Issues (20)
- Define a function for v' J v
- Expose tests through public API in src HOT 2
- Add docs for how to implement API as an AD HOT 2
- API Docs for end-users HOT 5
- `pushforward_function` and `pullback_function` are confused by tuples vs single input
- Only support tuples and not single inputs/outputs HOT 7
- Use DocStringExtensions.jl
- Fix type instabilities HOT 7
- Add JET tests for linting and type instabilities
- AbstractDifferentiation stable docs 404 HOT 1
- Lazy jacobians could implement more of the LinearAlgebra interface
- New version timeline HOT 11
- Inconsistency in value_and_pushforward_function vs value_and_pullback_function outputs HOT 6
- Regression in type inferrability HOT 5
- Get rid of ugly macro? HOT 6
- `value_and_pullback_function` doesn't do what its docstring says HOT 3
- Configurable ForwardDiff tag
- Maybe AbstractDifferentiation should shrink to a collection of names? HOT 1
- Handling of thunks and tangents HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from abstractdifferentiation.jl.