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 寫成,與語言生態系統整合更佳。
- 支援變異:直接支援變異,大多數數值程式碼中無需手動撰寫規則。
- 快取策略:將快取準備與評估分離,實現快速重複計算。
- 嚴格正確性:優先考慮正確性與穩定性,而非無限制的功能擴展;在無法穩健建構導數時,要求顯式規則。
相關
- 專案
- 專案
- 專案
- 專案
- 專案