diffrax: 一个基于 JAX 的用于自动微分和 GPU 加速的数值微分方程求解器库
diffrax: 一个基于 JAX 的用于自动微分和 GPU 加速的数值微分方程求解器库
它解决了什么问题
Diffrax 在 JAX 生态系统中提供了一种数值求解微分方程的方法——特别是常微分方程 (ODE)、随机微分方程 (SDE) 和受控微分方程 (CDE)。它使这些求解器具备自动微分能力并能够在 GPU 上运行,这对于将基于物理的模型与机器学习相结合至关重要。
它是如何工作的
该库基于 JAX 构建,使用统一的内部结构来处理不同类型的方程。它支持多种求解器(例如 Tsit5 和 Dopri8),允许将状态表示为 PyTree,并为反向传播提供多种伴随方法 (adjoint methods)。由于它是基于 JAX 的,过程中的几乎每个部分(包括积分区域)都是 vmappable 的。
适用人群
它专为从事科学计算和 AI 的研究人员和开发人员设计,特别是那些正在实现神经微分方程或需要高性能、可微分数值求解器的用户。
亮点
- 支持 ODE、SDE 和 CDE 求解器。
- 完全可自动微分且兼容 GPU。
- 整个库中的操作都是 vmappable 的。
- 支持神经微分方程。
- 包含多种求解器,包括辛 (symplectic) 和隐式 (implicit) 选项。
Sources
- undefinedpatrick-kidger/diffrax