ivy - 統合機械学習フレームワーク

(The Unified Machine Learning Framework)

Created at: 2021-01-19 16:37:25
Language: Python
License: Apache-2.0

..画像::https://github.com/unifyai/unifyai.github.io/blob/master/img/externally_linked/logo.png?raw=true:幅:100%

..生:: HTML

<br/>
<div align="center">
<a href="https://github.com/unifyai/ivy/issues">
    <img style="float: left; padding-right: 4px; padding-bottom: 4px;" src="https://img.shields.io/github/issues/unifyai/ivy">
</a>
<a href="https://github.com/unifyai/ivy/network/members">
    <img style="float: left; padding-right: 4px; padding-bottom: 4px;" src="https://img.shields.io/github/forks/unifyai/ivy">
</a>
<a href="https://github.com/unifyai/ivy/stargazers">
    <img style="float: left; padding-right: 4px; padding-bottom: 4px;" src="https://img.shields.io/github/stars/unifyai/ivy">
</a>
<a href="https://github.com/unifyai/ivy/pulls">
    <img style="float: left; padding-right: 4px; padding-bottom: 4px;" src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg">
</a>
<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://github.com/unifyai/ivy/actions?query=workflow%3Adocs">
    <img style="float: left; padding-right: 4px; padding-bottom: 4px;" src="https://img.shields.io/github/workflow/status/unifyai/ivy/docs?label=docs">
</a>
<a href="https://github.com/unifyai/ivy/actions?query=workflow%3Atest-ivy">
    <img style="float: left; padding-right: 4px; padding-bottom: 4px;" src="https://img.shields.io/github/workflow/status/unifyai/ivy/test-ivy?label=tests">
</a>
<a href="https://discord.gg/sXyFF8tDtm">
    <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>
</div>
<br clear="all" />

私たちは、すべてのMLフレームワーク💥を統合し、コード変換を自動化することを使命としています。🔄PIPはアイビーコア🚀をインストールし、成長するコミュニティ😊に参加して、lets-unify.ai してください!🦾

..生:: HTML

<div style="display: block;" align="center">
    <img width="3%" style="float: left;" src="https://raw.githubusercontent.com/unifyai/unifyai.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/unifyai/unifyai.github.io/master/img/externally_linked/logos/supported/jax_logo.png">
    </a>
    <img width="6%" style="float: left;" src="https://raw.githubusercontent.com/unifyai/unifyai.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/unifyai/unifyai.github.io/master/img/externally_linked/logos/supported/tensorflow_logo.png">
    </a>
    <img width="6%" style="float: left;" src="https://raw.githubusercontent.com/unifyai/unifyai.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/unifyai/unifyai.github.io/master/img/externally_linked/logos/supported/mxnet_logo.png">
    </a>
    <img width="6%" style="float: left;" src="https://raw.githubusercontent.com/unifyai/unifyai.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/unifyai/unifyai.github.io/master/img/externally_linked/logos/supported/pytorch_logo.png">
    </a>
    <img width="6%" style="float: left;" src="https://raw.githubusercontent.com/unifyai/unifyai.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/unifyai/unifyai.github.io/master/img/externally_linked/logos/supported/numpy_logo.png">
    </a>
</div>

.._docs:https://lets-unify.ai/ivy.._Colabs:https://drive.google.com/drive/folders/16Oeu25GrQsEJh8w2B0kSrD93w4cWjJAM?usp=sharing.._:https://lets-unify.ai/ivy/contributing.html.._:https://lets-unify.ai/ivy/contributing/open_tasks.html

contributor guide
open tasks

内容

  • Overview
    _
  • Quick Start
    _
  • Background
    _
  • Design
    _
  • Extensions
    _
  • Contributing
    _

概要

Ivy は、現在 JAX、TensorFlow、PyTorch、および Numpy をサポートしている ML フレームワークです。 ぜひお試しください!

ロードマップの次は、すべてのフレームワーク間の自動コード変換をサポートすることです。🔄 また、数行のコードを変更するだけで、すべてのオープンソースライブラリにインスタントマルチフレームワークサポートを追加します。 詳細については😊、以下をお読みください

ドキュメントは、Ivyを作成した理由のさまざまな側面を説明するいくつかのサブページに分かれています。 使い方、ロードマップで計画していること、貢献する方法! 以下の小見出しをクリックして、これらのページをチェックしてください!

説明されている機能が開発中であることを示すために使用します🚧。 すでに実装されていることを示すために使用します

詳細については、docs_をチェックしてください。 そして、いくつかのインタラクティブなデモのために私たちのグーグルColabs_をチェックしてください!

🚨アイビーはまだ開発の比較的初期段階にあります。 今後数週間でバージョン1.2.0がリリースされるまで、破壊的変更と鋭いエッジを期待してください!

あなたが貢献したいのなら、 私たちをチェックしてください、 そして、あなたがまっすぐに飛び込みたいならば、開いているタスクを見てください!🧑‍💻

contributor guide

クイックスタート

Ivyは次のようにインストールできます:次のように、Ivyを使用して、バックグラウンドでお気に入りのフレームワークを使用してニューラルネットワークをトレーニングできます。

pip install ivy-core

..コードブロック:: パイソン

import ivy

class MyModel(ivy.Module):
    def __init__(self):
        self.linear0 = ivy.Linear(3, 64)
        self.linear1 = ivy.Linear(64, 1)
        ivy.Module.__init__(self)

    def _forward(self, x):
        x = ivy.relu(self.linear0(x))
        return ivy.sigmoid(self.linear1(x))

ivy.set_backend('torch')  # change to any backend!
model = MyModel()
optimizer = ivy.Adam(1e-4)
x_in = ivy.array([1., 2., 3.])
target = ivy.array([0.])

def loss_fn(v):
    out = model(x_in, v=v)
    return ivy.mean((out - target)**2)

for step in range(100):
    loss, grads = ivy.execute_with_gradients(loss_fn, model.v)
    model.v = optimizer.step(model.v, grads)
    print('step {} loss {}'.format(step, ivy.to_numpy(loss).item()))

print('Finished training!')

この例では、バックエンド フレームワークとして PyTorch を使用します。 ただし、バックエンドはTensorFlowやJAXなどのお気に入りのフレームワークに簡単に変更できます。

フレームワークに依存しない関数

以下の例では、Ivy の連結関数がさまざまなフレームワークのテンソルとどのように互換性があるかを示します。 これは、すべてのIvy関数で同じです。任意のフレームワークからテンソルを受け入れ、正しい結果を返すことができます。

..コードブロック:: パイソン

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

import ivy

jax_concatted   = ivy.concat((jnp.ones((1,)), jnp.ones((1,))), -1)
tf_concatted    = ivy.concat((tf.ones((1,)), tf.ones((1,))), -1)
np_concatted    = ivy.concat((np.ones((1,)), np.ones((1,))), -1)
torch_concatted = ivy.concat((torch.ones((1,)), torch.ones((1,))), -1)

すべての Ivy メソッドのリストを表示するには、python コマンド プロンプトに :code:と入力し、:code: を押します。 次に、次のような出力が表示されます。

ivy.
tab

::

蔦。コンテナ( アイビー.ジェネラルivy.reduce_min( ivy.abs( ivy.get_device( ivy.reduce_prod( ivy.acos( ivy.get_num_dims( ivy.reduce_sum( アイビー.アコッシュ( ivy.gradient_descent_update( アイビー.リダクション ivy.activations ivy.gradient_image( ivy.relu( ivy.arange( ivy.gradients ivy.reshape( ivy.argmax( ivy.identity( ivy.round( ivy.argmin( ivy.image ivy.scatter_nd( ivy.array( ivy.indices_where( ivy.seed( ivy.asin( ivy.inv( ivy.shape( アイビー.アシン( アイビー.レイヤーズ アイビー.シャッフル( ivy.atan( ivy.leaky_relu( ivy.sigmoid( ivy.atan2( ivy.linalg ivy.sin( ivy.atanh( ivy.linear( ivy.sinh( ivy.bilinear_resample( ivy.linspace( ivy.softmax( ivy.cast( ivy.log( ivy.softplus( ivy.ceil( ivy.logic ivy.split( ivy.clip( ivy.logical_and( ivy.squeeze( ivy.concatenate( ivy.logical_not( ivy.stack(
ivy.container ivy.logical_or( ivy.stack_images( ivy.conv2d( ivy.math ivy.stop_gradient( ivy.core ivy.matmul( ivy.svd( ivy.cos( ivy.maximum( ivy.tan( ivy.cosh( ivy.minimum( ivy.tanh( アイビークロス( ivy.neural_net アイビータイル( ivy.cumsum( ivy.nn ivy.to_list( ivy.depthwise_conv2d( アイビー.ノルム( ivy.to_numpy( ivy.dtype( ivy.one_hot( ivy.transpose( ivy.execute_with_gradients( ivy.ones( ivy.unstack( ivy.exp( ivy.ones_like( ivy.variable( ivy.expand_dims( ivy.pinv( ivy.vector_to_skew_symmetric_matrix( ivy.flip( ivy.randint( ivy.verbosity アイビー.フロア( アイビー.ランダム アイビー.どこ( ivy.floormod( ivy.random_uniform( ivy.zero_pad( ivy.backend_handler ivy.reduce_max( アイビーゼロ( ivy.gather_nd( ivy.reduce_mean( ivy.zeros_like(

バックグラウンド

|(a)_ |膨大な数のMLツールが登場しました! | |(b)_ |なぜそれらを統一しようとする必要があるのでしょうか。 | |(c)_ |私たちはと協力しています

ML Explosion <https://lets-unify.ai/ivy/background/ml_explosion.html>
Why Unify? <https://lets-unify.ai/ivy/background/why_unify.html>
Standardization <https://lets-unify.ai/ivy/background/standardization.html>
Consortium for Python Data API Standards <https://data-apis.org>
_

設計

|アイビーは2つの異なる目的を果たすことができます。 | |1.フレームワーク間のトランスパイラーとして機能します|🚧2.マルチフレームワークをサポートする新しいMLフレームワークとして機能します| |Ivyコードベースは3つのカテゴリに分割でき、さらに8つの異なるサブモジュールに分割でき、それぞれが次のようにこれら3つのカテゴリのいずれかに分類されます。

..画像::https://github.com/unifyai/unifyai.github.io/blob/master/img/externally_linked/design/submodule_dependency_graph.png?raw=true:整列:中央 :幅:100%

|(a)_ |バックエンド機能 API|アイビー機能API|バックエンド ハンドラー|アイビーコンパイラ🚧| |(b)_ |フロントエンドの機能 API🚧| |(c)_ |アイビーステートフルAPI|アイビーコンテナ|アイビーアレイ🚧

Building Blocks <https://lets-unify.ai/ivy/design/building_blocks.html>
Ivy as a Transpiler <https://lets-unify.ai/ivy/design/ivy_as_a_transpiler.html>
Ivy as a Framework <https://lets-unify.ai/ivy/design/ivy_as_a_framework.html>

拡張 機能

|(a)_|力学、ビジョン、ロボット工学、メモリ、およびその他の分野のアイビーライブラリ | |(イ)ビルダー [ページ近日公開予定! |:code:、:code:、:code:、およびわずか数行のコードでトレーニングワークフローを作成するためのその他の便利なクラスと関数

Applied Libraries <https://lets-unify.ai/ivy/extensions/applied_libraries.html>
ivy.Trainer
ivy.Dataset
ivy.Dataloader

貢献

コードコントリビューターとしてコミュニティに参加して、すべてのMLフレームワークを統合するための取り組みを加速させましょう! すべての未解決のタスクを確認し、our_ガイドで詳細情報を見つけてください!

Contributing <https://lets-unify.ai/ivy/contributing.html>

引用

::

@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}
}