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