文章目录
- 前言
- JAX到底是什么?
- 书籍内容介绍
- 包邮送书5本
前言
2015年,Google Brain开放了一个名为「TensorFlow」的研究项目,这款产品迅速流行并成为人工智能业界的主流深度学习框架,塑造了现代机器学习的生态系统。
7年后,Google的TensorFlow失去了开发者的拥护,因为这些开发者转向了Meta推出的另一款框架PyTorch。
在PyTorch的阴影下,Google正在悄悄地开发一个机器学习框架,那就是JAX,官方定义为CPU、GPU和TPU上的NumPy。它具有出色的自动微分(differentiation)功能,是可用于高性能机器学习研究的Python库。许多人将其视为TensorFlow的继承者。
今天小异带来一本新书,这是一本来自北大的天才00后少年程琪皓撰写的图书《JAX可微分编程》,绝对能够满足大家对于JAX的好奇心。
JAX到底是什么?
它可以被视为 GPU 和 TPU 上运行的NumPy
jax.numpy提供了与NumPy非常相似的API接口。
它与 NumPy API 非常相似
几乎任何可以用 NumPy 完成的事情都可以用 jax.numpy 完成。
它与主程序分离但可以被主程序调用
由于使用XLA(一种加速线性代数计算的编译器)将Python和JAX代码JIT编译成优化的内核,因此可以在不同设备(例如,GPU和TPU)上运行。而优化的内核是为高吞吐量设备(例如,GPU和TPU)进行编译的,它与主程序分离但可以被主程序调用。JIT编译可以用jax.jit()触发。
它对自动微分有很好的支持
对机器学习研究很有用,可以使用 jax.grad() 触发自动微分。
JAX提供了一些在编写数字处理时非常有用的程序转换
例如,JIT.JAX()用于JIT编译和加速代码,JIT .grad()用于求导, JIT .vmap()用于自动向量化或批处理。
JAX可以进行异步调度
所以需要调用 .block_until_ready() 以确保计算已经实际发生。
我们都清楚JAX是一款能比肩TensorFlow和PyTorch的深度学习框架,但我想大家可能对JAX在科学计算领域的应用还不甚了解。需要知道的是,科学计算涵盖的领域可比深度学习领域要广泛。
当前,除了人工智能,JAX还在流体力学、大气科学、控制系统、贝叶斯方法和科学仿真等诸多领域得到了广泛应用。
《JAX可微分编程》侧重于JAX在科学计算领域中的应用,以Google开发的JAX开源框架为载体,详细介绍了JAX在可微分编程领域的应用,具体包括自动微分的基本原理、数据结构,以及自动微分在实际场景中的应用,本书涉及的领域包括但不限于算法优化、神经网络、工程建模、量子计算等。
书籍内容介绍
第一部分:可微分编程的基本框架(第1-2章)
作者在分别阅读了SymPy、Torch及JAX库数万行相关部分的源码之后,尝试从零开始,分别用百余行代码,对符号微分、自动微分的前向模式,以及自动微分的反向模式这三种数据结构进行了简单的实现。
第二部分:JAX库的特性介绍(第3-6章)
围绕JAX库展开对深度学习、λ演算、并行计算等领域的介绍。作为Google开发的高性能数值计算和自动微分库,JAX提供了自动微分、即时编译与矢量并行化这三大功能,并提供了与NumPy极为相似的调用接口。
第三部分:实际场景下的自动微分(第7-10章)
除了优化算法、循环神经网络等自动微分传统的使用场景,还对工程建模中的数值模拟、计算神经科学等方向进行了较为详细的介绍。还加入了对量子计算中的自动微分的介绍,具有独特的时代特征。
无论你是需要用到自动微分技术的工程技术人员或高校科研人员,还是只是对JAX框架感兴趣并想要一探究竟的AI从业人员,都可以通过学习这本《JAX可微分编程》掌握JAX强大的科学计算功能。
包邮送书5本
抽奖送书老规矩(不点赞收藏中奖无效):注意记得关注博主不然中奖了还不知道!!!
- 1. 点赞收藏文章
- 2. 评论区留言:人生苦短,我用Python!!!(留言才能进入奖池,每人最多留言三条)
- 3. 周六八点爬虫抽奖5人
- 如果不想抽奖京东自营购买链接:https://item.m.jd.com/product/13973124.html?utm_campaign=t_1001328990