All Projects → ivy-dl → Ivy

ivy-dl / Ivy

Licence: apache-2.0
The templated deep learning framework, enabling framework-agnostic functions, layers and libraries.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Ivy

robot
Functions and classes for gradient-based robot motion planning, written in Ivy.
Stars: ✭ 29 (-75.42%)
Mutual labels:  mxnet, numpy
Rendu
A simple realtime graphics playground for experimentations.
Stars: ✭ 343 (+190.68%)
Mutual labels:  gpu, template
XLearning-GPU
qihoo360 xlearning with GPU support; AI on Hadoop
Stars: ✭ 22 (-81.36%)
Mutual labels:  mxnet, gpu
Touch Bar Istats
Show CPU/GPU/MEM temperature on Touch Bar with BetterTouchTool!
Stars: ✭ 141 (+19.49%)
Mutual labels:  gpu, template
Drlkit
A High Level Python Deep Reinforcement Learning library. Great for beginners, prototyping and quickly comparing algorithms
Stars: ✭ 29 (-75.42%)
Mutual labels:  gpu, numpy
Bohrium
Automatic parallelization of Python/NumPy, C, and C++ codes on Linux and MacOSX
Stars: ✭ 209 (+77.12%)
Mutual labels:  gpu, numpy
Dali
A GPU-accelerated library containing highly optimized building blocks and an execution engine for data processing to accelerate deep learning training and inference applications.
Stars: ✭ 3,624 (+2971.19%)
Mutual labels:  gpu, mxnet
Gdrl
Grokking Deep Reinforcement Learning
Stars: ✭ 304 (+157.63%)
Mutual labels:  gpu, numpy
Chainer
A flexible framework of neural networks for deep learning
Stars: ✭ 5,656 (+4693.22%)
Mutual labels:  gpu, numpy
Cupy
NumPy & SciPy for GPU
Stars: ✭ 5,625 (+4666.95%)
Mutual labels:  gpu, numpy
Gluon Nlp
NLP made easy
Stars: ✭ 2,344 (+1886.44%)
Mutual labels:  mxnet, numpy
Pynvvl
A Python wrapper of NVIDIA Video Loader (NVVL) with CuPy for fast video loading with Python
Stars: ✭ 95 (-19.49%)
Mutual labels:  gpu, numpy
Mobulaop
A Simple & Flexible Cross Framework Operators Toolkit
Stars: ✭ 161 (+36.44%)
Mutual labels:  mxnet, numpy
python cv AI ML
用python做计算机视觉,人工智能,机器学习,深度学习等
Stars: ✭ 73 (-38.14%)
Mutual labels:  mxnet, numpy
Megengine
MegEngine 是一个快速、可拓展、易于使用且支持自动求导的深度学习框架
Stars: ✭ 4,081 (+3358.47%)
Mutual labels:  gpu, numpy
Tensorly
TensorLy: Tensor Learning in Python.
Stars: ✭ 977 (+727.97%)
Mutual labels:  mxnet, numpy
Pytorch
Tensors and Dynamic neural networks in Python with strong GPU acceleration
Stars: ✭ 52,811 (+44655.08%)
Mutual labels:  gpu, numpy
Dunai
Classic and Arrowized Functional Reactive Programming, Reactive Programming, and Stream programming, all via Monadic Stream Functions
Stars: ✭ 115 (-2.54%)
Mutual labels:  abstraction
Beautycamera
美颜相机,具有人脸检测、磨皮美白人脸、滤镜、调节图片、摄像功能
Stars: ✭ 117 (-0.85%)
Mutual labels:  numpy
Tfg Voice Conversion
Deep Learning-based Voice Conversion system
Stars: ✭ 115 (-2.54%)
Mutual labels:  numpy

.. raw:: html

<p align="center">
    <img width="75%" style="display: block;" src='docs/partial_source/logos/logo.png'>
</p>

.. raw:: html

<br/>
<a href="https://pypi.org/project/ivy-core">
    <img style="float: left; padding-right: 4px; padding-bottom: 4px;" src="https://badge.fury.io/py/ivy-core.svg">
</a>
<a href="https://www.apache.org/licenses/LICENSE-2.0">
    <img style="float: left; padding-right: 4px; padding-bottom: 4px;" src="https://img.shields.io/pypi/l/ivy-core">
</a>
<a href="https://github.com/ivy-dl/ivy/actions?query=workflow%3Adocs">
    <img style="float: left; padding-right: 4px; padding-bottom: 4px;" src="https://img.shields.io/github/workflow/status/ivy-dl/ivy/docs?label=docs">
</a>
<a href="https://github.com/ivy-dl/ivy/actions?query=workflow%3Anightly-tests">
    <img style="float: left; padding-right: 4px; padding-bottom: 4px;" src="https://img.shields.io/github/workflow/status/ivy-dl/ivy/nightly-tests?label=nightly">
</a>
<a href="https://discord.gg/EN9YS3QW8w">
    <img style="float: left; padding-right: 4px; padding-bottom: 4px;" src="https://img.shields.io/discord/799879767196958751?color=blue&label=%20&logo=discord&logoColor=white">
</a>
<br clear="all" />

The templated deep learning framework, enabling framework-agnostic functions, layers and libraries.

.. raw:: html

<div style="display: block;">
    <img width="4%" style="float: left;" src="https://raw.githubusercontent.com/ivy-dl/ivy-dl.github.io/master/img/externally_linked/logos/supported/empty.png">
    <a href="https://jax.readthedocs.io">
        <img width="12%" style="float: left;" src="https://raw.githubusercontent.com/ivy-dl/ivy-dl.github.io/master/img/externally_linked/logos/supported/jax_logo.png">
    </a>
    <img width="6.66%" style="float: left;" src="https://raw.githubusercontent.com/ivy-dl/ivy-dl.github.io/master/img/externally_linked/logos/supported/empty.png">
    <a href="https://www.tensorflow.org">
        <img width="12%" style="float: left;" src="https://raw.githubusercontent.com/ivy-dl/ivy-dl.github.io/master/img/externally_linked/logos/supported/tensorflow_logo.png">
    </a>
    <img width="6.66%" style="float: left;" src="https://raw.githubusercontent.com/ivy-dl/ivy-dl.github.io/master/img/externally_linked/logos/supported/empty.png">
    <a href="https://pytorch.org">
        <img width="12%" style="float: left;" src="https://raw.githubusercontent.com/ivy-dl/ivy-dl.github.io/master/img/externally_linked/logos/supported/pytorch_logo.png">
    </a>
    <img width="6.66%" style="float: left;" src="https://raw.githubusercontent.com/ivy-dl/ivy-dl.github.io/master/img/externally_linked/logos/supported/empty.png">
    <a href="https://mxnet.apache.org">
        <img width="12%" style="float: left;" src="https://raw.githubusercontent.com/ivy-dl/ivy-dl.github.io/master/img/externally_linked/logos/supported/mxnet_logo.png">
    </a>
    <img width="6.66%" style="float: left;" src="https://raw.githubusercontent.com/ivy-dl/ivy-dl.github.io/master/img/externally_linked/logos/supported/empty.png">
    <a href="https://numpy.org">
        <img width="12%" style="float: left;" src="https://raw.githubusercontent.com/ivy-dl/ivy-dl.github.io/master/img/externally_linked/logos/supported/numpy_logo.png">
    </a>
</div>

Contents

  • Overview_
  • In a Nutshell_
  • Where Next?_

Overview

.. _docs: https://ivy-dl.org/ivy

What is Ivy?

Ivy is a templated deep learning framework which maximizes the portability of deep learning codebases. Ivy wraps the functional APIs of existing frameworks. Framework-agnostic functions, libraries and layers can then be written using Ivy, with simultaneous support for all frameworks. Ivy currently supports Jax, TensorFlow, PyTorch, MXNet and Numpy. Check out the docs_ for more info!

Ivy Libraries

There are a host of derived libraries written in Ivy, in the areas of mechanics, 3D vision, robotics, differentiable memory, and differentiable gym environments. Click on the icons below for their respective github pages.

.. raw:: html

<div style="display: block;">
    <img width="8%" style="float: left;" src="https://raw.githubusercontent.com/ivy-dl/ivy-dl.github.io/master/img/externally_linked/logos/empty.png">
    <a href="https://github.com/ivy-dl/mech">
        <img width="15%" style="float: left;" src="https://raw.githubusercontent.com/ivy-dl/ivy-dl.github.io/master/img/externally_linked/logos/ivy_mech.png">
    </a>
    <img width="2%" style="float: left;" src="https://raw.githubusercontent.com/ivy-dl/ivy-dl.github.io/master/img/externally_linked/logos/empty.png">
    <a href="https://github.com/ivy-dl/vision">
        <img width="15%" style="float: left;" src="https://raw.githubusercontent.com/ivy-dl/ivy-dl.github.io/master/img/externally_linked/logos/ivy_vision.png">
    </a>
    <img width="2%" style="float: left;" src="https://raw.githubusercontent.com/ivy-dl/ivy-dl.github.io/master/img/externally_linked/logos/empty.png">
    <a href="https://github.com/ivy-dl/robot">
        <img width="15%" style="float: left;" src="https://raw.githubusercontent.com/ivy-dl/ivy-dl.github.io/master/img/externally_linked/logos/ivy_robot.png">
    </a>
    <img width="2%" style="float: left;" src="https://raw.githubusercontent.com/ivy-dl/ivy-dl.github.io/master/img/externally_linked/logos/empty.png">
    <a href="https://github.com/ivy-dl/memory">
        <img width="15%" style="float: left;" src="https://raw.githubusercontent.com/ivy-dl/ivy-dl.github.io/master/img/externally_linked/logos/ivy_memory.png">
    </a>
    <img width="2%" style="float: left;" src="https://raw.githubusercontent.com/ivy-dl/ivy-dl.github.io/master/img/externally_linked/logos/empty.png">
    <a href="https://github.com/ivy-dl/gym">
        <img width="15%" style="float: left;" src="https://raw.githubusercontent.com/ivy-dl/ivy-dl.github.io/master/img/externally_linked/logos/ivy_gym.png">
    </a>
</div>
<br clear="all" />

Quick Start

Ivy can be installed like so: pip install ivy-core

To get started, you can immediately use ivy with your deep learning framework of choice. In the example below we show how ivy's concatenation function is compatible with tensors from different frameworks.

.. code-block:: python

import jax.numpy as jnp
import tensorflow as tf
import numpy as np
import mxnet as mx
import torch

import ivy

jax_concatted = ivy.concatenate((jnp.ones((1,)), jnp.ones((1,))), -1)
tf_concatted = ivy.concatenate((tf.ones((1,)), tf.ones((1,))), -1)
np_concatted = ivy.concatenate((np.ones((1,)), np.ones((1,))), -1)
mx_concatted = ivy.concatenate((mx.nd.ones((1,)), mx.nd.ones((1,))), -1)
torch_concatted = ivy.concatenate((torch.ones((1,)), torch.ones((1,))), -1)

To see a list of all Ivy methods, type :code:ivy. into a python command prompt and press :code:tab. You should then see output like the following:

.. image:: docs/partial_source/images/ivy_tab.png :width: 100%

Based on this short code sample alone, you may wonder, why is this helpful? Don't most developers stick to just one framework for a project? This is indeed the case, and the benefit of Ivy is not the ability to combine different frameworks in a single project.

So what is the benefit of Ivy?

In a Nutshell

Ivy's strength arises when we want to maximize the usability of our code.

We can write a set of functions once in Ivy, and share these with the community so that all developers can use them, irrespective of their personal choice of framework. TensorFlow? PyTorch? Jax? With Ivy functions it doesn't matter!

This makes it very simple to create highly portable deep learning codebases. The core idea behind Ivy is captured by the example of the :code:ivy.clip function below.

.. raw:: html

<p align="center">
    <img width="75%" style="display: block;" src='docs/partial_source/images/a_templated_framework.png'>
</p>

On it's own this may not seem very exciting, there are more interesting things to do in deep learning than clip tensors. Ivy is a building block for more interesting applications.

For example, the Ivy libraries for mechanics, 3D vision, robotics, and differentiable environments are all written in pure Ivy. These libraries provide fully differentiable implementations of various applied functions, primed for integration in end-to-end networks, for users of any deep-learning framework.

Another benefit of Ivy is user flexibility. By keeping the Ivy abstraction lightweight and fully functional, this keeps you in full control of your code. The schematic below emphasizes that you can choose to develop at any abstraction level.

.. raw:: html

<p align="center">
    <img width="50%" style="display: block;" src='docs/partial_source/images/abstraction_hierarchy.png'>
</p>

You can code entirely in Ivy, or mainly in their native DL framework, with a small amount of Ivy code. This is entirely up to you, depending on how many Ivy functions you need from existing Ivy libraries, and how much new Ivy code you add into your own project, to maximize it's audience when sharing online.

Where Next?

.. _Using Ivy: https://ivy-dl.org/ivy/using_ivy.html

So, now that you've got the gist of Ivy, and why it's useful. Where to next?

This depends on whether you see yourself in the short term as more likely to be an Ivy library user or an Ivy library contributor.

If you would like to use the existing set of Ivy libraries, dragging and dropping key functions into your own project, then we suggest you dive into some of the demos for the various Ivy libraries currently on offer. Simply open up the main docs_, then open the library-specific docs linked on the bottom left, and check out the demos folder in the library repo.

On the other hand, if you have your own new library in mind, or if you would like to implement parts of your own project in Ivy to maximise its portability, then we recommend checking out the page Using Ivy_ in the docs. Here, we dive a bit deeper into the Ivy framework, and the best coding practices to get the most out of Ivy for your own codebases and libraries.

Citation

::

@article{lenton2021ivy,
  title={Ivy: Templated Deep Learning for Inter-Framework Portability},
  author={Lenton, Daniel and Pardo, Fabio and Falck, Fabian and James, Stephen and Clark, Ronald},
  journal={arXiv preprint arXiv:2102.02886},
  year={2021}
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].