Yesterday I saw the announcement in the Twitter about the joint initiative to improve interoperability in Machine Learning between various toolkits and libraries in 3 languages - Julia, Python, and R - SciML.
I suggested them to take a look also to Owl/Owlbarn. Posting here in case Owl folks might be interested.
SciML is an open source software organization created to unify the packages for scientific machine learning. This includes the development of modular scientific simulation support software, such as differential equation solvers, along with the methodologies for inverse problems and automated model discovery. By providing a diverse set of tools with a common interface, we provide a modular, easily-extendable, and highly performant ecosystem for handling a wide variety of scientific simulations.
From what’s on the website, this nice initiative seems to be mainly intended to make the Julia computational libraries around JuliaDiffEq usable from Python and R. The owl community would probably have to contribute its own bindings to these Julia libraries, since the much smaller user base of owl is probably not an attractive target for the authors of the more mainstream scientific packages?
On a more technical point, I wonder how/if algorithmic differentiation in owl would interoperate with AD in Julia. Also, can the idea to evaluate a computation graph generated in owl in TensorFlow be ported to use evaluation in Julia? Would that even make sense?
If on the one hand having to call many other libraries defeats one of the design goals of owl (which was born as an organically grown scientific computing suite), I think that having interoperability with Julia, Python and R would be an excellent thing.
We already saw the benefits of being able to call Python and R in the past: I used a lot matplotlib from inside Jupyter notebooks executing Owl code in an OCaml kernel for example. Adding a fast growing numerical ecosystem like Julia’s sounds very attractive to me: we would be able to access very high quality libraries and choose each time the best tool for the job, have easier times with benchmarks, and have less pressure to focus on many improvements at once (which has its pros and cons).
Also, having a common interface among the many scientific computing libraries, will help users move between them and experiment.
@n4323 concerning how the AD engines would operate, I have no idea The recent owl-symbolic library allows one to export Owl’s computation graphs to ONNX format to be then executed on the engine of your choice, so that would not be a problem.