We're on a mission to unify all ML frameworks
pip install ivy-core, join our community, and lets unify!
Get Started!Take any code that you'd like to include. For example, an existing TensorFlow model, and some useful functions from both PyTorch and NumPy libraries
Choose any framework for writing your higher level pipeline, including data loading, distributed training, analytics, logging, visualization etc.
Choose any backend framework which should be used under the hood, for running this entire pipeline
Choose the most appropriate device or combination of devices for your needs.
Your ML pipeline is written in PyTorch
DeepMind releases an awesome model on GitHub, written in JAX. We'll use PerceiverIO as an example
You'd like to try this out in your pipeline
Implement the model in PyTorch yourself, spending time and energy ensuring every detail is correct
Otherwise, wait for a PyTorch version to appear on GitHub, among the many re-implementation attempts that appear (a, b, c, d, e, f)
Despite best efforts, there are subtle bugs and deviations from the original
Instantly transpile the JAX model to PyTorch
This creates an identical PyTorch equivalent of the original model
You have written a PyTorch library, and released this on GitHub
JAX, TensorFlow and other ML developers cannot use your library
Your library is only useful to a subset of all ML developers
Limit your audience to users of your chosen framework, in this case PyTorch
Wait for others in the community to create similar spin-off tools for the other frameworks, which address the needs of these users independently
Open up your library to all ML developers simultaneously, without any code changes
Add examples, showing how Ivy can transpile any function in your library to any target framework
You want to create a new suite of ML tools, and open-source these for the community
You could write these tools in one framework, but this would limit your users, preventing many in the ML community from using it
Duplicate all of the work, re-implementing the entire library or creating similar variants in multiple frameworks independently
For example, Lucid→Lucent, Speech Commands→Honk, torchvision→flaxvision, Graph Nets→Jraph, TensorFlow Probability→Distrax and Sonnet→Haiku
Write your library in Ivy
Users will be able to use your library with any framework, including ones not yet invented
All code can be stepped through line-by-line, which is not the case when transpiling individual functions from pre-existing non-Ivy libraries
You want to provide tools for the higher level ML pipeline: data loading, distributed training, experiment tracking, logging, visualization etc.
Writing these tools using a single framework would make the pipeline incompatible with all other frameworks
Patch things together as best you can, with framework-specific subfolders, so that the codebase supports multiple frameworks where possible
For example: RLlib, transformers, einops, DGL, Horovod, Determined, PennyLane, TensorLy, cvxpylayers
Write your pipeline tools in Ivy
Developers can use your pipeline with any framework, including ones not yet invented
Anyone can step through your pipeline line-by-line when using it, regardless of framework
All are welcome to join our discord, raise issues, make pull requests or apply to join our team!
This applies to veteran developers and also to total beginners, everyone is welcome on board!