jax:这是Google的Numpy杀手吗?

自动差异化和JIT汇编构成了引人注目的情况。首先出现在数据科学上。

来源:走向数据科学

Python中数值计算的拥护者。它功能强大的N维阵列和丰富的功能生态系统使科学家,工程师和数据分析师必不可少。但是,随着计算需求的增长,尤其是在机器学习和大规模科学模拟中,Numpy的CPU结合性质以及缺乏内置自动分化的当前局限性。

机器学习

这是Jax希望填补这些空白的地方。 JAX是Google Research旨在克服这些障碍的图书馆,有效地将Numpy功能带入了现代硬件加速器和基于梯度的优化世界。

请注意,JAX库是一个研究项目,而不是官方的Google产品。正如他们的GitHub回购所指示的那样,期望“尖锐的边缘”和潜在的错误。

“锋利的边缘”

什么是numpy?

如果您参与了科学python,则可能熟悉Numpy。它提供了核心的ndarray对象,用于有效存储和操纵密集数值数组,以及优化的数学函数库(通常是通过C,C ++或Fortran代码)比纯Python loop更快地在这些阵列上操作。

python

这是建立许多科学python生态系统(Scipy,Pandas,Scikit-Learn,Matplotlib)的基石。但是,其主要设计目标是CPU执行,而不是GPU,并且并不固有地支持自动梯度计算。

最后一点至关重要,因为梯度测量了函数的输出如何随其输入而变化,这表明最大的增加或减小方向。此信息对于优化算法至关重要,尤其是在机器学习中,渐变指导调整模型参数以最大程度地减少训练期间的误差。有效地计算梯度使大型语言模型能够从数据中学习复杂的模式。

什么是jax?

jax

其主要功能包括

  • jax.numpy。 numpy的置换替换(相同的API,但可与GPU/TPU一起使用)
  • jax.numpy。 jax.grad。 jax.jit。 jax.vmap