jax-ml/jax

Composable transformations of Python+NumPy programs: differentiate, vectorize, JIT to GPU/TPU, and more

解决的问题

JAX 提供了一个高性能的数值计算和大规模机器学习系统。它解决了需要一个能够自动微分 Python 和 NumPy 函数,并在 GPU 和 TPU 等硬件加速器上扩展计算的库的需求。

工作原理

JAX 作为一个可扩展的、可组合的函数变换系统构建。它利用 XLA(加速线性代数)将类似 NumPy 的程序编译为硬件加速器。其核心功能由三种主要变换驱动:

  • jax.grad:执行自动微分,支持任意阶的反向模式(反向传播)和前向模式微分。
  • jax.jit:使用 XLA 将纯函数端到端编译,以提高执行速度。
  • jax.vmap:自动向量化函数,沿数组轴进行映射,消除手动管理批处理维度的需要。

适用人群

JAX 专为从事高性能数值计算和大规模机器学习的研究人员和开发者设计,适用于需要灵活、可扩展数组计算的用户。

主要亮点

  • 可组合的变换:可以任意组合 grad、jit 和 vmap。
  • 硬件加速:通过 XLA 原生支持 NVIDIA GPU、Google TPU、AMD GPU 和 Intel GPU。
  • 灵活的微分:支持通过循环、分支、递归和闭包进行微分。
  • 可扩展的并行性:提供多种扩展模式,包括编译器驱动的自动并行化、显式分片和手动设备编程。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目