chalk-lab/Mooncake.jl

Implementation of a language-level autograd compiler

解决的问题

Mooncake.jl 提供了一个完全用 Julia 编写的高性能自动微分(AD)包。它旨在改进现有的工具(如 ForwardDiff.jl、ReverseDiff.jl 和 Zygote.jl),为涉及变异的数值 Julia 代码提供更稳定、更准确的梯度和海森矩阵计算方法。

工作原理

该库使用缓存机制来优化重复计算。用户首先调用准备函数(如 prepare_gradient_cache)来设置与特定输入类型和大小相关的缓存。一旦缓存准备就绪,后续调用 value_and_gradient!! 等函数计算值、梯度或海森矩阵时,将快速且高效。

适用人群

专为需要可靠、快速且可重复的梯度和海森矩阵评估的数值 Julia 代码研究人员和开发者设计,尤其适用于需要直接支持变异的场景。

主要亮点

  • 完全 Julia 实现:完全用 Julia 编写,与语言生态系统集成更好。
  • 支持变异:直接支持变异,大多数数值代码中无需手动编写规则。
  • 缓存策略:将缓存准备与评估分离,实现快速重复计算。
  • 严格正确性:优先考虑正确性和稳定性,而非无限制的功能扩展;在无法稳健构建导数时,要求显式规则。

相关

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