機械学習の分野では、TensorFlow と PyTorch は誰もがよく知っているかもしれませんが、これら 2 つのフレームワークに加えて、Google が立ち上げた JAX という新たな勢力も見逃せません。多くの研究者は、TensorFlow などの多くの機械学習フレームワークを置き換えることができると期待し、大きな期待を寄せています。 JAX はもともと、Google Brain チームの Matt Johnson、Roy Frostig、Dougal Maclaurin、Chris Leary によって開始されました。 現在、JAX は GitHub で 13.7K 個のスターを獲得しています。 プロジェクトアドレス: https://github.com/google/jax JAXの急速な発展JAX の前身は Autograd です。Autograd の更新版の助けを借りて、XLA と組み合わせることで、Python プログラムと NumPy 操作の自動微分を実行し、ループ、分岐、再帰、クロージャ関数の導出、および 3 次導関数をサポートできます。XLA に依存することで、JAX は GPU と TPU で NumPy プログラムをコンパイルして実行できます。grad を通じて、自動モードのバックプロパゲーションとフォワードプロパゲーションをサポートでき、2 つを任意の順序で組み合わせることができます。 JAX 開発の出発点は何でしたか?これについて言えば、NumPy について触れなければなりません。 NumPy は Python の基本的な数値計算ライブラリであり、広く使用されています。ただし、NumPy は GPU やその他のハードウェア アクセラレータをサポートしておらず、バックプロパゲーションのサポートも組み込まれていません。さらに、Python 自体の速度制限により NumPy の使用が妨げられるため、NumPy を直接使用してディープラーニング モデルを実稼働環境でトレーニングまたは展開する研究者はほとんどいません。 このような状況の中で、PyTorch、TensorFlow など、数多くのディープラーニング フレームワークが登場しました。ただし、numpy には柔軟性、デバッグの容易さ、安定した API などの独自の利点があります。 JAX の主な出発点は、numpy の上記の利点とハードウェア アクセラレーションを組み合わせることです。 現在、JAX をベースにした優れたオープンソース プロジェクトが数多く存在します。たとえば、Google のニューラル ネットワーク ライブラリ チームは、Jax 用のディープラーニング コード ライブラリである Haiku を開発しました。Haiku を通じて、ユーザーは Jax 上でオブジェクト指向開発を行うことができます。もう 1 つの例は、Jax をベースにした強化学習ライブラリである RLax です。ユーザーは RLax を使用して Q 学習モデルを構築およびトレーニングできます。さらに、1 行のコードで計算グラフを定義し、GPU アクセラレーションを実行できる JAX ベースのディープラーニング ライブラリ JAXnet もあります。ここ数年、JAXはディープラーニング研究に旋風を巻き起こし、科学研究の急速な発展を促進してきたと言えます。 JAX のインストールJAX の使い方は?まず、Python 環境または Google Colab に JAX をインストールする必要があります。pip を使用してインストールします。
上記のインストール方法は、CPU 上での実行のみをサポートしていることに注意してください。プログラムを GPU 上で実行する場合は、まず CUDA と cuDNN が必要で、その後次のコマンドを実行します (jaxlib バージョンを CUDA バージョンにマッピングするようにしてください)。
次に、Numpy とともに JAX をインポートします。
JAXの機能 grad() 関数を使用した自動微分: これはバックプロパゲーションの実行を容易にするため、ディープラーニング アプリケーションに非常に役立ちます。以下は、単純な 2 次関数の例で、ポイント 1.0 で導関数を取得します。
jit (ジャストインタイム): XLA のパワーを活用するには、コードを XLA カーネルにコンパイルする必要があります。ここで JIT が役立ちます。 XLA と jit を使用するには、ユーザーは jit() 関数または @jit アノテーションを使用できます。
pmap: 現在のすべてのデバイスに計算を自動的に分散し、それらの間のすべての通信を処理します。 JAX は pmap 変換を通じて大規模なデータ並列処理をサポートし、単一のプロセッサでは処理できない大規模なデータを処理します。利用可能なデバイスを確認するには、jax.devices() を実行します。
vmap: 関数変換です。JAX は vmap 変換による自動ベクトル化アルゴリズムを提供します。これにより、このタイプの計算が大幅に簡素化され、研究者はバッチの問題に悩まされることなく新しいアルゴリズムを扱えるようになります。次に例を示します。
TensorFlow 対 PyTorch 対 Jaxディープラーニングの分野には巨大企業がいくつもあり、彼らが提案するフレームワークは多くの研究者に利用されています。たとえば、Google の TensorFlow、Facebook の PyTorch、Microsoft の CNTK、Amazon AWS の MXnet などです。 各フレームワークには長所と短所があり、自分のニーズに応じて選択する必要があります。 Python の 3 つの主要なディープラーニング フレームワーク (TensorFlow、PyTorch、Jax) を比較します。これらのフレームワークは異なりますが、共通点が 2 つあります。
では、どのような点が異なるのでしょうか?次の表は、TensorFlow、PyTorch、JAX の 3 つのフレームワークの比較を示しています。 テンソルフロー TensorFlow は Google によって開発され、その最初のバージョンは 2015 年のオープンソースの TensorFlow0.1 にまで遡ります。それ以来、着実に発展し、強力なユーザーベースを持ち、最も人気のあるディープラーニング フレームワークになりました。しかし、使用してみると、API の安定性が不十分であったり、静的計算グラフ プログラミングが複雑であったりするなど、TensorFlow の欠点も明らかになりました。そのため、TensorFlow 2.0 バージョンでは、Google が Keras を組み込み、tf.keras になりました。 TensorFlow の主な機能は次のとおりです。
パイトーチ PyTorch (Python-Torch) は、Facebook の機械学習ライブラリです。 TensorFlow か PyTorch か? 1 年前、この質問には異論はなく、ほとんどの研究者が TensorFlow を選択しました。しかし、今では状況は大きく変わり、PyTorch を使用する研究者が増えています。 PyTorch の最も重要な機能には次のようなものがあります。
ジャックス JAX は、Google の比較的新しい機械学習ライブラリです。これは、ネイティブ Python と NumPy コードを区別できる autograd ライブラリのようなものです。 JAX の主な機能は次のとおりです。
|
>>: 人工知能に関する世界インターネット会議の8つの視点のレビュー
スマートホーム革命はここしばらく本格的に始まっています。住宅所有者はデータと IoT テクノロジーを...
テレンス・タオ氏が研究してきた周期的モザイク化問題に新たな進歩がありました。 9月18日、Teren...
2016年頃から、多くのメディアが「どの仕事がAIに置き換えられるか」を予測し始めたとぼんやりと記...
DeepMind はゲーム AI の分野で新たな成果を上げました。今回はチェスです。 AI ゲーム...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
Andrej Karpathy は、ディープラーニング コンピューター ビジョン、生成モデル、強化学...
[[407278]] RPA(ロボティック・プロセス・オートメーション)は、ビジネスユーザーを退屈で...
[[396139]]近年、機械学習モデルアルゴリズムは、ますます多くの産業実践に実装されるようになり...
[[264714]]最近、5G携帯電話や5G商用利用に関するニュースが多く出ています。国内外の多...
LDA (潜在的ディリクレ分布) や Biterm などの統計トピック モデルを適用することで、大量...
4時間以上の対局の末、柯潔はAlphaGoに0.25ポイント差で負けた。対局後、アルファ碁の指導に参...