Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: updated the README to make the page more compact and clear #28597

Merged
merged 2 commits into from
Mar 14, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
156 changes: 67 additions & 89 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
> 🚀 We are granting access to **Ivy\'s Tracer and Transpiler**
> to all of our users, [sign up on our console](https://console.unify.ai/) if you
> want to test them out!
> **[Sign up on our console](https://console.unify.ai/)** for pilot access!

<img class="only-dark" width="100%" src="https://raw.githubusercontent.com/unifyai/unifyai.github.io/main/img/externally_linked/logo_dark.png#gh-dark-mode-only"/>

Expand All @@ -9,7 +7,7 @@
------------------------------------------------------------------------

<div style="display: block;" align="center">
<a href="https://unify.ai/">
<a href="https://unify.ai/ivy">
<img class="dark-light" src="https://raw.githubusercontent.com/unifyai/unifyai.github.io/main/img/externally_linked/website_button.svg">
</a>
<img class="dark-light" width="5%" src="https://raw.githubusercontent.com/unifyai/unifyai.github.io/main/img/externally_linked/logos/supported/empty.png">
Expand Down Expand Up @@ -96,88 +94,63 @@
Ivy is an open-source machine learning framework that
enables you to:

- 🔥 **Autotune your model**: Automatically find the optimal framework, compiler infrastructure and hardware for your specific use case using `ivy.autotune`.
- 🔄 **Convert code into any framework**: Use and build on top of any model, library, or device by converting any code from one framework to another using `ivy.transpile`.
- ⚒️ **Write framework-agnostic code**: Write your code once in ivy and then choose the most appropriate ML framework as the backend to leverage all the benefits and tools.
- ⚒️ **Write framework-agnostic code**: Write your code once in `ivy` and then choose the most appropriate ML framework as the backend to leverage all the benefits and tools.

[Join our growing community](https://discord.com/invite/sXyFF8tDtm) 🌍 to connect with people using Ivy. **Let\'s** [unify.ai](https://unify.ai) **together 🦾**

------------------------------------------------------------------------

# Getting started

The best way to get familiar with Ivy is to go through the [Demos](https://unify.ai/docs/ivy/demos/examples_and_demos.html), a good starting point is [Learn The Basics](https://unify.ai/docs/ivy/demos/learn_the_basics.html).
[Ivy's transpiler](https://unify.ai/docs/ivy/overview/design/ivy_as_a_transpiler.html) helps you convert code between different ML frameworks. To get pilot access to the transpiler, [sign up](https://console.unify.ai/) and generate an API key. The [Get Started](https://unify.ai/docs/ivy/overview/get_started.html) notebook should help you set up your API key and the [Quickstart](https://unify.ai/docs/ivy/demos/quickstart.html) notebook should give you a brief idea of the features!

The most important notebooks are:

- [How to convert your code between frameworks?](https://unify.ai/docs/ivy/demos/learn_the_basics/04_transpile_code.html)
- [How to write framework-agnostic code?](https://unify.ai/docs/ivy/demos/learn_the_basics/01_write_ivy_code.html)
- Accelerate your development (WIP)
- Autotune and optimize models (WIP)

Beyond that, based on the frameworks you want to convert code between, there are a few more [examples](#using-ivy) further down this page 👇 which contain a number of models and libraries transpiled between PyTorch, JAX, TensorFlow and NumPy.

------------------------------------------------------------------------

## Installing ivy

There are various ways to use Ivy, depending on your preferred
environment:

### Installing using pip

The easiest way to set up Ivy is to install it using pip with the
following command:
The easiest way to set up Ivy is to install it using **pip**:

``` bash
pip install ivy
```

or alternatively:

``` bash
python3 -m pip install ivy
```

<details>
<summary>Docker</summary>
<summary><b>Docker Images</b></summary>

If you prefer to use containers, we also have pre-built Docker images
with all the supported frameworks and some relevant packages already
installed, which you can pull from:
Given the challenges of maintaining installations of various frameworks in a single environment,
users who would want to test `ivy` with multiple frameworks at once can use our Docker images for a seamless experience.
You can pull the images from:

``` bash
docker pull unifyai/ivy:latest
docker pull unifyai/ivy:latest # CPU
docker pull unifyai/ivy:latest-gpu # GPU
```

If you are working on a GPU device, you can pull from:

``` bash
docker pull unifyai/ivy:latest-gpu
```
</details>

<details>
<summary>From Source</summary>
<summary><b>From Source</b></summary>

You can also install Ivy from source if you want to take advantage of
the latest changes, but we can\'t ensure everything will work as
expected. :sweat_smile:
expected 😅

``` bash
git clone https://github.com/unifyai/ivy.git
cd ivy
pip install --user -e .
```

or alternatively, for the last step:

``` bash
python3 -m pip install --user -e .
```


If you want to set up testing and various frameworks it\'s probably best
to check out the [Contributing - Setting
Up](https://unify.ai/docs/ivy/overview/contributing/setting_up. html#setting-up)
to check out the [Setting Up](https://unify.ai/docs/ivy/overview/contributing/setting_up.html)
page, where OS-specific and IDE-specific instructions and video
tutorials to do so are available!

Expand Down Expand Up @@ -233,24 +206,8 @@ After installing Ivy, you can start using it straight away, for example:

</details>

------------------------------------------------------------------------

# Documentation

You can find Ivy's documentation on the [Docs page](https://unify.ai/docs/ivy/), which includes:
- [Motivation](https://unify.ai/docs/ivy/overview/background.html): This contextualizes the problem Ivy is trying to solve by going over
- The current [ML Explosion](https://unify.ai/docs/ivy/overview/background/ml_explosion.html#ml-explosion).
- Explaining why it is important [to solve this problem](https://unify.ai/docs/ivy/overview/background/why_unify.html#why-unify).
- Explaining how we adhere to existing [standards](https://unify.ai/docs/ivy/overview/background/standardization.html#standardization) to make this happen.
- [Related Work](https://unify.ai/docs/ivy/overview/related_work.html): Which paints a picture of the role Ivy plays in the ML stack, comparing it to other existing solutions in terms of functionalities and abstraction level.
- [Design](https://unify.ai/docs/ivy/overview/design.html): A user-focused guide about the design decision behind the architecture and the main building blocks of Ivy.
- [Deep Dive](https://unify.ai/docs/ivy/overview/deep_dive.html): Which delves deeper into the implementation details of Ivy and is oriented towards potential contributors to the code base.


------------------------------------------------------------------------

# Examples

\
The [Examples page](https://unify.ai/demos/) features a wide range of
demos and tutorials showcasing the functionalities of Ivy along with
multiple use cases, but feel free to check out some shorter
Expand Down Expand Up @@ -1334,15 +1291,32 @@ train(
</details>
</details>

------------------------------------------------------------------------

# Diving deeper
\
For a more comprehensive overview, head over to the [Demos](https://unify.ai/docs/ivy/demos/index.html) section with more on the [basics](https://unify.ai/docs/ivy/demos/learn_the_basics.html), a few [guides](https://unify.ai/docs/ivy/demos/guides.html) and a wide-ranging set of [examples](https://unify.ai/docs/ivy/demos/examples_and_demos.html) that demonstrate the transpilation of various popular models. We continue to expand on that list, let us know what demos you'd like us to add next 🎯

Although the [Docs](https://unify.ai/docs/ivy/) are the best place to learn more, in the next section we will take a look at how Ivy works both as a transpiler and a framework in a bit more detail to get an idea of why and where to use it.

Let's take a look at how Ivy works both as a transpiler and a framework in a bit more detail to get an idea of why and where to use it.

<details>
<summary><b>Ivy as a transpiler</b></summary>

<blockquote>
<details>
<summary>When should I use Ivy as a transpiler?</summary>

If you want to use building blocks published in other frameworks (neural
networks, layers, array computing libraries, training pipelines\...),
you want to integrate code developed in various frameworks, or maybe
straight up move code from one framework to another, the transpiler is
definitely the tool 🔧 for the job! As the output of transpilation is
native code in the target framework, you can use the converted code just
as if it was code originally developed in that framework, applying
framework-specific optimizations or tools, instantly exposing your
project to all of the unique perks of a different framework.
</details>
</blockquote>

Ivy\'s transpiler allows you to use code from any other framework (or
from any other version of the same framework!) in your own code, by just
adding one line of code. Under the hood, Ivy traces a computational
Expand Down Expand Up @@ -1405,23 +1379,25 @@ If you want to learn more, you can find more information in the [Ivy as
a transpiler section of the
docs!](https://unify.ai/docs/ivy/overview/design/ivy_as_a_transpiler.html)

## When should I use Ivy as a transpiler?

If you want to use building blocks published in other frameworks (neural
networks, layers, array computing libraries, training pipelines\...),
you want to integrate code developed in various frameworks, or maybe
straight up move code from one framework to another, the transpiler is
definitely the tool 🔧 for the job! As the output of transpilation is
native code in the target framework, you can use the converted code just
as if it was code originally developed in that framework, applying
framework-specific optimizations or tools, instantly exposing your
project to all of the unique perks of a different framework.

</details>

<details>
<summary><b>Ivy as a framework</b></summary>

<blockquote>
<details>
<summary>When should I use Ivy as a framework?</summary>

As Ivy supports multiple backends, writing code in Ivy breaks you free
from framework limitations. If you want to publish highly flexible code
for everyone to use, independently of the framework they are using, or
you plan to develop ML-related tools and want them to be interoperable
with not only the already existing frameworks, but also with future
frameworks, then Ivy is for you!

</details>
</blockquote>

The Ivy framework is built on top of various essential components,
mainly the [Backend
Handler](https://unify.ai/docs/ivy/overview/design/building_blocks.html#backend-handler),
Expand Down Expand Up @@ -1553,16 +1529,20 @@ As always, you can find more information about [Ivy as a framework in
the
docs!](https://unify.ai/docs/ivy/overview/design/ivy_as_a_framework.html)

<h2> When should I use Ivy as a framework? </h2>
</details>

As Ivy supports multiple backends, writing code in Ivy breaks you free
from framework limitations. If you want to publish highly flexible code
for everyone to use, independently of the framework they are using, or
you plan to develop ML-related tools and want them to be interoperable
with not only the already existing frameworks, but also with future
frameworks, then Ivy is for you!
------------------------------------------------------------------------

</details>
# Documentation

You can find Ivy's documentation on the [Docs page](https://unify.ai/docs/ivy/), which includes:
- [Motivation](https://unify.ai/docs/ivy/overview/background.html): This contextualizes the problem Ivy is trying to solve by going over
- The current [ML Explosion](https://unify.ai/docs/ivy/overview/background/ml_explosion.html#ml-explosion).
- Explaining why it is important [to solve this problem](https://unify.ai/docs/ivy/overview/background/why_unify.html#why-unify).
- Explaining how we adhere to existing [standards](https://unify.ai/docs/ivy/overview/background/standardization.html#standardization) to make this happen.
- [Related Work](https://unify.ai/docs/ivy/overview/related_work.html): Which paints a picture of the role Ivy plays in the ML stack, comparing it to other existing solutions in terms of functionalities and abstraction level.
- [Design](https://unify.ai/docs/ivy/overview/design.html): A user-focused guide about the design decision behind the architecture and the main building blocks of Ivy.
- [Deep Dive](https://unify.ai/docs/ivy/overview/deep_dive.html): Which delves deeper into the implementation details of Ivy and is oriented towards potential contributors to the code base.

------------------------------------------------------------------------

Expand All @@ -1573,13 +1553,11 @@ We believe that everyone can contribute and make a difference. Whether
it\'s writing code 💻, fixing bugs 🐛, or simply sharing feedback 💬,
your contributions are definitely welcome and appreciated 🙌

Check out all of our open tasks, and find out more info in our
[Contributing
guide](https://unify.ai/docs/ivy/overview/contributing.html) in the
docs!
Check out all of our [Open Tasks](https://unify.ai/docs/ivy/overview/contributing/open_tasks.html),
and find out more info in our [Contributing guide](https://unify.ai/docs/ivy/overview/contributing.html)
in the docs!

Join our amazing community as a code contributor, and help accelerate
our journey to unify all ML frameworks!
Join our amazing community as a [contributor](https://unify.ai/docs/ivy/overview/contributing/volunteer_program.html), and help accelerate our journey to unify all ML frameworks!

<a href="https://github.com/unifyai/ivy/graphs/contributors">
<img class="dark-light" src="https://contrib.rocks/image?repo=unifyai/ivy&anon=0&columns=20&max=100&r=true" />
Expand Down
Loading