JAX is a Python library for accelerator-oriented array computation and program transformation, designed for high-performance numerical computing and large-scale machine learning. The library enables composable transformations of Python and NumPy programs, allowing developers to differentiate, vectorize, and compile code to run on GPUs, TPUs, and other hardware accelerators. JAX uses XLA as its compilation backend to scale numerical programs across thousands of devices.
The core of JAX is an extensible system for transforming numerical functions. The jax.grad function provides automatic differentiation capabilities, supporting both reverse-mode differentiation (backpropagation) and forward-mode differentiation that can be composed arbitrarily to any order. Differentiation works through loops, branches, recursion, and closures, enabling derivatives of derivatives of derivatives. The jax.jit function compiles pure functions end-to-end using XLA, while jax.vmap provides auto-vectorization by mapping functions along array axes and pushing loops down onto primitive operations for better performance. These transformations can be composed together, allowing developers to obtain efficient Jacobian matrices or per-example gradients by combining vmap with grad and jit.
For scaling computations across multiple devices, JAX offers three approaches: compiler-based automatic parallelization where the compiler determines data sharding and computation partitioning, explicit sharding with automatic partitioning where data shardings are visible in JAX types, and manual per-device programming with explicit collectives for fine-grained control. The library supports multiple platforms including Linux x86_64, Linux aarch64, Mac aarch64, and Windows, with varying levels of support for CPU, NVIDIA GPU, Google TPU, AMD GPU, Apple GPU, and Intel GPU backends.
The repository is classified across multiple domains including machine learning, differentiable programming, numerical computing, automatic differentiation, and high-performance computing, reflecting its broad applicability across research and production machine learning workloads.
JAX is explicitly positioned as a research project rather than an official Google product, with documentation acknowledging sharp edges and encouraging community feedback through bug reports and feature discussions. The library provides comprehensive installation instructions for different hardware configurations and maintains detailed reference documentation covering both user-facing APIs and developer guidelines for contributing to the project.