jax-ml/jax
Composable transformations of Python+NumPy programs: differentiate, vectorize, JIT to GPU/TPU, and more
何を解決するか
JAX は高性能な数値計算および大規模機械学習のためのシステムを提供します。Python および NumPy 関数の自動微分を可能にし、GPU や TPU などのハードウェアアクセラレータ上で計算をスケーリングできるライブラリの必要性を満たしています。
動作方法
JAX は、組み合わせ可能な関数変換の拡張可能なシステムとして構築されています。XLA(Accelerated Linear Algebra)を活用して、NumPy に似たプログラムをハードウェアアクセラレータ向けにコンパイルします。そのコア機能は以下の3つの主要な変換によって駆動されています:
jax.grad: 自動微分を実行し、任意の次数の逆モード(バックプロパゲーション)および順モード微分をサポートします。jax.jit: XLA を使って純粋関数をエンドツーエンドにコンパイルし、実行速度を向上させます。jax.vmap: 関数を自動的にベクトル化し、配列の軸に沿ってマッピングすることで、手動でのバッチ次元管理の必要性を排除します。
対象ユーザー
JAX は、高性能な数値計算および大規模機械学習に取り組む研究者や開発者向けに設計されており、柔軟でスケーラブルな配列計算を必要とする人々に最適です。
特徴
- 組み合わせ可能な変換:
grad、jit、vmapを任意に組み合わせられる。 - ハードウェアアクセラレーション: XLA を通じて、NVIDIA GPU、Google TPU、AMD GPU、Intel GPU に対応。
- 柔軟な微分: ループ、分岐、再帰、クロージャーを介した微分をサポート。
- スケーラブルな並列処理: コンパイラベースの自動並列化、明示的なシャーディング、デバイスごとの手動プログラミングなど、複数のスケーリングモードを提供。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト