JuliaDiff/DifferentiationInterface.jl

An interface to various automatic differentiation backends in Julia.

解决的问题

在 Julia 中使用自动微分(AD)时,无需编写特定于后端的代码。开发者无需学习和实现每个 AD 库的不同 API,而是可以使用单一、统一的语法,在各种后端之间计算导数。

工作原理

它作为一个抽象层(接口),将一组通用命令映射到支持的 AD 后端的特定 API。支持一阶和二阶算子(如梯度、雅可比矩阵和海森矩阵),处理就地和非就地微分,并包含用于预分配缓存或记录计算图的机制,以优化性能。它还集成稀疏性处理,并提供验证工具,确保不同后端之间输出的一致性。

适用人群

需要执行自动微分,并希望在不同 AD 后端(如 Zygote、ForwardDiff、Enzyme)之间灵活切换,而无需重写核心逻辑的 Julia 生态系统中的研究人员和开发者。

主要亮点

  • 统一语法:支持 Zygote、ForwardDiff 和 Enzyme 等多个 AD 后端的单一 API。
  • 全面的算子支持:支持梯度、雅可比矩阵和海森矩阵。
  • 性能优化:包含用于预分配缓存或记录计算图的准备机制。
  • 稀疏性支持:内置稀疏微分处理。
  • 验证工具:通过 DifferentiationInterfaceTest 提供测试和基准测试工具。

相关

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