JAXは、Google DeepMindとGoogle Researchの研究者によって開発されたオープンソースの数値計算ライブラリである。NumPy互換のAPIに自動微分、ジャストインタイム(JIT)コンパイル、GPU/TPUアクセラレーションを提供し、機械学習研究と科学計算の基盤ツールとなっている。2018年に初めてリリースされ、JAXはニューラルネットワークのトレーニングや高性能な数値実験のために広く採用されている。
JAXのコア設計は、合成可能な関数変換に焦点を当てている。その主要な操作には、自動微分のためのgrad、アクセラレータへのコンパイルのためのjit、ベクトル化のためのvmap、デバイス間の並列化のためのpmapが含まれる。これらの変換は任意にネストでき、研究者は簡潔なコードで複雑なアルゴリズムを表現できる。JAXはコンパイルバックエンドとしてXLA(Accelerated Linear Algebra)を使用し、AMD、Intel、NVIDIA、Google Cloud TPU向けに計算を最適化する。
歴史と開発
JAXは、autogradとXLAに関する初期の研究を基に、2017年にGoogleでの研究から始まった。最初の公開リリースは2018年12月に行われた。このプロジェクトは、Matthew Johnson、Roy Frostig、Alex Wiltschkoを含む研究者によって主導され、Google Brainチーム全体からの多大な貢献があった。2020年には、JAXはFlax(ニューラルネットワークライブラリ)、Haiku(DeepMindで使用)、Traxなど、いくつかの注目すべきライブラリの基盤となった。2023年までに、JAXはGoogleの内部MLインフラストラクチャのコアコンポーネントとなり、大規模言語モデルやトランスフォーマーなどのモデルを支えている。
主な機能
JAXの自動微分は、フォワードモードとリバースモードの両方をサポートし、任意のPython関数の勾配を効率的に計算できる。jit変換は、XLAを介して関数をマシンコードにコンパイルし、純粋なPythonと比較してしばしば大幅な高速化を達成する。vmapは、バッチ次元にわたる操作を自動的にベクトル化し、手動のループ展開を不要にする。pmapは、複数のデバイスに計算を分散し、データ並列およびモデル並列トレーニングを容易にする。JAXには、関数型APIを持つ乱数生成器も含まれており、異なるハードウェア構成間での再現性を保証する。
このライブラリはPythonエコシステムとシームレスに統合され、標準的なデータ構造とNumPyとの相互運用性をサポートする。また、NumPyのインターフェースをミラーリングしつつアクセラレータデバイス上で動作するjax.numpyモジュールも提供する。JAXの関数型プログラミングスタイル(配列が不変で、関数に副作用がない)は、デバッグを簡素化し、安全な並列実行を可能にする。
エコシステムと採用
JAXは、専門的なライブラリの豊かなエコシステムを生み出している。FlaxとHaikuは高レベルのニューラルネットワークAPIを提供し、Optaxは最適化アルゴリズムを提供する。科学計算では、JAX-MD(分子動力学)やJAX-COSMO(宇宙論)などのライブラリがその範囲を広げている。MIT CSAIL、スタンフォードAIラボ、バークレーAIリサーチを含む主要な研究機関は、強化学習、確率的プログラミング、微分可能シミュレーションのプロジェクトでJAXを使用している。
産業界では、JAXはGoogleの本番システムを支えており、Google Cloud AIサービスの一部やWaymoの認識モデルが含まれる。また、OpenAIも一部の研究プロジェクトで使用しているが、Anthropicは主にPyTorchを使用している。TPUでのパフォーマンスにより、特に生成AIアプリケーションにおいて、大規模モデルのトレーニングに好まれる選択肢となっている。
他のフレームワークとの比較
JAXは、TensorFlowやPyTorchなどの機械学習フレームワークと競合する。TensorFlowの静的グラフアプローチとは異なり、JAXは関数型でNumPyに似たスタイルを採用しており、多くの研究者がより直感的だと感じている。PyTorchと比較すると、JAXはコンパイルと並列化をより明示的に制御できるが、関数型の制約により学習曲線が急である。JAXのjitコンパイルは、PyTorchの即時実行よりも高速な推論をしばしば実現するが、PyTorchの動的グラフはデバッグが容易である。ベンチマークでは、JAXはGPUワークロードでPyTorchと同等かそれ以上であり、PyTorchがネイティブにサポートしていないTPUでは明確な利点がある。
アプリケーションと将来の方向性
JAXは、深層学習から人工知能研究まで、多様な分野で使用されている。微分可能物理エンジン、ベイズ推論ツール、最適化アルゴリズムを支えている。最近の開発には、ROCmを介したAMD GPUのサポートと、CPUパフォーマンスの改善が含まれる。JAXチームは、自動シャーディングや混合精度トレーニングなどの機能を引き続き強化している。2024年現在、JAXは活発に開発が続けられており、コミュニティは成長し、定期的なリリースが行われている。その設計原則(合成可能性、パフォーマンス、再現性)は、次世代のAI研究のための重要なツールとして位置づけられている。
関連項目
参考文献
- JAX公式ドキュメントとGitHubリポジトリ(2024年アクセス)
- Google ResearchのJAXに関するブログ記事(2018-2023年)
- 機械学習と科学計算でJAXを引用した学術論文(2020-2024年)